Bug filed:
https://bugs.eclipse.org/bugs/show_bug.cgi?id=288712
On Thu, Sep 3, 2009 at 5:34 PM, Andy Clement <[email protected]>wrote:

> Always raise VerifyErrors as bugs. They are more common with
> annotation style than code style because of the reduced amount of
> checking we can perform at compile/weave time. And annotation style is
> still much younger in terms of maturity than code style.
>
> Andy
>
> 2009/8/31 Andrew Eisenberg <[email protected]>:
> > Hi there,
> >
> > It would be best if you could raise a bug for this.  What you are
> > seeing is not the intended behavior.  Thanks.
> >
> > Andy is away right now until Thursday, but he will be able to look at
> > this when he returns.
> >
> > --a
> >
> > On Mon, Aug 31, 2009 at 5:21 AM, <[email protected]>
> wrote:
> >> Perhaps there is confusion with the reserved Aspectj word thisJoinPoint
> used
> >> in jour advice @Around.
> >>
> >> I don’t know it is a bug ; I let AspectJ gurus answer when they will
> come
> >> back from holidays ;-)
> >>
> >>
> >>
> >> Cordialement / Best regards
> >>
> >>
> >>
> >> Jean-Louis Pasturel
> >>
> >> ________________________________
> >>
> >> De : [email protected]
> >> [mailto:[email protected]] De la part de João Gonçalves
> >> Envoyé : lundi 31 août 2009 14:11
> >> À : [email protected]
> >> Objet : Re: [aspectj-users] [BUG?] java.lang.VerifyError with
> >> @AspectJannotation (but with a certain call to print, it works!?)
> >>
> >>
> >>
> >> Execution solves the problem!!
> >>
> >> Many thanks.
> >>
> >> But, still, shouldn't this be considered a bug? I mean, if I use the
> >> "traditional" aspect notation, everything goes as planned. And the fact
> that
> >> adding the prints, solves the problem is also weird...
> >>
> >> Should I resport a bug?
> >>
> >> Thanks.
> >>
> >> On Mon, Aug 31, 2009 at 1:01 PM, <[email protected]
> >
> >> wrote:
> >>
> >> Sorry João,
> >>
> >> I have not read your entire post correctly.
> >>
> >> Did you try with an “execution” pointcut ( not a call) ?
> >>
> >>
> >>
> >> Cordialement / Best regards
> >>
> >>
> >>
> >> Jean-Louis Pasturel
> >>
> >> ________________________________
> >>
> >> De : [email protected]
> >> [mailto:[email protected]] De la part de João Gonçalves
> >> Envoyé : lundi 31 août 2009 12:58
> >>
> >> À : [email protected]
> >>
> >> Objet : Re: [aspectj-users] [BUG?] java.lang.VerifyError with
> >> @AspectJannotation (but with a certain call to print, it works!?)
> >>
> >>
> >>
> >> Unfortunately, that's not the problem. With or without the blank the
> same
> >> happens.
> >>
> >> Regards.
> >>
> >>
> >>
> >> On Mon, Aug 31, 2009 at 9:03 AM, <[email protected]
> >
> >> wrote:
> >>
> >> Perhaps a blank misses in the annoted pointcut :
> >>
> >>  @Pointcut("call(public void figures.FigureElement+.move(int, int))"
> >>
> >>   +"<blank>&& target(fe) && args(dx, dy)")
> >>
> >>
> >>
> >> Cordialement / Best regards
> >>
> >>
> >>
> >> Jean-Louis Pasturel
> >>
> >>
> >>
> >> ________________________________
> >>
> >> De : [email protected]
> >> [mailto:[email protected]] De la part de João Gonçalves
> >> Envoyé : lundi 31 août 2009 09:45
> >> À : [email protected]
> >> Objet : [aspectj-users] [BUG?] java.lang.VerifyError with
> @AspectJannotation
> >> (but with a certain call to print, it works!?)
> >>
> >>
> >>
> >> Hi,
> >>
> >> I'm using Eclipse 3.4.1, AspectJ 1.6.5 and AJDT 2.0.0.
> >>
> >> I've created a very simple test scenario that utilizes @AspectJ. When
> >> running a main method in a class or when running a Junit test, I get the
> >> following error:
> >>
> >>
> >>
> >> Exception in thread "main" java.lang.VerifyError: (class: figures/Line,
> >> method: move_aroundBody3$advice signature:
> >>
> (Lfigures/Line;Lfigures/Point;IILorg/aspectj/lang/JoinPoint;Lanswers/Answer2h;Lorg/aspectj/lang/ProceedingJoinPoint;Lfigures/FigureElement;II)V)
> >> Incompatible argument to function
> >>  at MainTest.main(MainTest.java:24)
> >>
> >> Here's the aspect that is causing the error
> >>
> >> ===============================================================
> >>
> >> Answer2h.java
> >>
> >> ===============================================================
> >>
> >> package answers;
> >>
> >> import org.aspectj.lang.ProceedingJoinPoint;
> >> import org.aspectj.lang.annotation.*;
> >> import figures.*;
> >> import java.awt.Rectangle;
> >>
> >> @Aspect
> >> public class Answer2h {
> >>  @Pointcut("call(public void figures.FigureElement+.move(int, int))"
> >>   +"&& target(fe) && args(dx, dy)")
> >>  void movingFigureElement(FigureElement fe, int dx, int dy) {}
> >>
> >>  @Around("movingFigureElement(fe, dx, dy)")
> >>  public void checkIfBoundsMovedSame(ProceedingJoinPoint thisJoinPoint,
> >>   FigureElement fe, int dx, int dy) throws Throwable {
> >>   Rectangle rectangleBefore = new Rectangle(fe.getBounds());
> >>   thisJoinPoint.proceed(new Object[]{fe, dx, dy});
> >>   rectangleBefore.translate(dx, dy);
> >>   if(!rectangleBefore.equals(fe.getBounds()))
> >>   throw new IllegalStateException("move() invariant violation");
> >>  }
> >> }
> >> ===============================================================
> >>
> >> However, strangely, when I had the following 3 lines to my aspect (I was
> >> just doing debug), everything works normally:
> >>
> >> ===============================================================
> >>
> >> Answer2h.java (with 3 more lines)
> >>
> >> ===============================================================
> >>
> >> package answers;
> >>
> >> import org.aspectj.lang.ProceedingJoinPoint;
> >> import org.aspectj.lang.annotation.*;
> >> import figures.*;
> >> import java.awt.Rectangle;
> >>
> >> @Aspect
> >> public class Answer2h {
> >>  @Pointcut("call(public void figures.FigureElement+.move(int, int))"
> >>   +"&& target(fe) && args(dx, dy)")
> >>  void movingFigureElement(FigureElement fe, int dx, int dy) {}
> >>
> >>  @Around("movingFigureElement(fe, dx, dy)")
> >>  public void checkIfBoundsMovedSame(ProceedingJoinPoint thisJoinPoint,
> >>   FigureElement fe, int dx, int dy) throws Throwable {
> >>   Rectangle rectangleBefore = new Rectangle(fe.getBounds());
> >>
> >>   for(Object o: thisJoinPoint.getArgs()) {
> >>   System.out.print(o+" ");
> >>   }
> >>
> >>   thisJoinPoint.proceed(new Object[]{fe, dx, dy});
> >>   rectangleBefore.translate(dx, dy);
> >>   if(!rectangleBefore.equals(fe.getBounds()))
> >>   throw new IllegalStateException("move() invariant violation");
> >>  }
> >> }
> >> ===============================================================
> >>
> >> ????
> >>
> >> If I use any other print (and comment the privous print), the code
> continues
> >> giving the same error...
> >>
> >> Examples (that don't work):
> >>
> >> // System.out.println("ENTERED");
> >> // System.out.println("Kind: "+thisJoinPoint.getKind());
> >> // System.out.println("Signature: "+thisJoinPoint.getSignature());
> >> // System.out.println("This: "+thisJoinPoint.getThis());
> >> // System.out.println("Target: "+thisJoinPoint.getTarget());
> >>
> >> Another interesting thing (that makes me believe it's some kind of bug).
> >> The Answer2h.java is equivalent to this one:
> >>
> >> ===============================================================
> >>
> >> Answer2h.aj
> >>
> >> ===============================================================
> >>
> >>  package answers;
> >>
> >> import figures.*;
> >> import java.awt.Rectangle;
> >>
> >> public aspect Answer2h {
> >>  pointcut movingFigureElement(FigureElement figureElement, int dx, int
> dy):
> >>   call(public void figures.FigureElement+.move(int, int)) &&
> >>   target(figureElement) &&
> >>   args(dx, dy);
> >>
> >>  void around(FigureElement figureElement, int dx, int dy):
> >>   movingFigureElement(figureElement, dx, dy) {
> >>   Rectangle rectangleBefore =
> >>   new Rectangle(figureElement.getBounds());
> >>   proceed(figureElement, dx, dy);
> >>   rectangleBefore.translate(dx, dy);
> >>   if(!rectangleBefore.equals(figureElement.getBounds()))
> >>   throw new IllegalStateException("move() invariant violation"); }
> >> }
> >> ===============================================================
> >>
> >> But this latter works!!
> >>
> >> Can anyone tell me how to fix this?
> >>
> >> Thanks.
> >>
> >> Here's the MainTest.java code (not sure if it helps):
> >>
> >> ===============================================================
> >>
> >> MainTest.java
> >>
> >> ===============================================================
> >>
> >> import figures.Box;
> >> import figures.FigureElement;
> >> import figures.Group;
> >> import figures.Line;
> >> import figures.Point;
> >> import figures.SlothfulPoint;
> >>
> >>
> >> public class MainTest {
> >>
> >>  /**
> >>   * @param args
> >>   */
> >>  public static void main(String[] args) {
> >>   Box bb;
> >>   Point p1;
> >>   Point p2;
> >>   Line l1;
> >>   SlothfulPoint sloth1;
> >>   Group g;
> >>
> >>   p1 = new Point(10, 100);
> >>   p2 = new Point(20, 200);
> >>   l1 = new Line(p1, p2); // line of the error
> >>   bb = new Box(5, 5, 10, 10);
> >>   sloth1 = new SlothfulPoint(0, 0);
> >>   g = new Group(p1);
> >>
> >>   FigureElement fe = new SlothfulPoint(10, 10);
> >>   try {
> >>   fe.move(10, 10);
> >>   System.out.println("should have thrown IllegalStateException");
> >>   } catch (IllegalStateException e) { e.printStackTrace(); }
> >>
> >>   p1.move(30, 45);
> >>   p2.move(10, 33);
> >>  }
> >>
> >> }
> >>
> >> ===============================================================
> >>
> >> P.S.:
> >>
> >> When I use the MainTest.java to lauch the example, inside Answer2h.java
> I
> >> have to use this call to proceed:
> >>
> >> thisJoinPoint.proceed(new Object[]{fe, dx, dy});
> >>
> >> But, when I use the JUnit, the test oly runs if I use :
> >>
> >> thisJoinPoint.proceed(new Object[]{fe, fe, dx, dy});
> >>
> >> Why? Shouldn't the call be the same? And shouldn't the latter be the
> correct
> >> one ({target + 3 parameters})?
> >>
> >> Regards.
> >>
> >> *********************************
> >> This message and any attachments (the "message") are confidential and
> >> intended solely for the addressees.
> >> Any unauthorised use or dissemination is prohibited.
> >> Messages are susceptible to alteration.
> >> France Telecom Group shall not be liable for the message if altered,
> changed
> >> or falsified.
> >> If you are not the intended addressee of this message, please cancel it
> >> immediately and inform the sender.
> >> ********************************
> >>
> >> _______________________________________________
> >> aspectj-users mailing list
> >> [email protected]
> >> https://dev.eclipse.org/mailman/listinfo/aspectj-users
> >>
> >>
> >>
> >> *********************************
> >> This message and any attachments (the "message") are confidential and
> >> intended solely for the addressees.
> >> Any unauthorised use or dissemination is prohibited.
> >> Messages are susceptible to alteration.
> >> France Telecom Group shall not be liable for the message if altered,
> changed
> >> or falsified.
> >> If you are not the intended addressee of this message, please cancel it
> >> immediately and inform the sender.
> >> ********************************
> >>
> >> _______________________________________________
> >> aspectj-users mailing list
> >> [email protected]
> >> https://dev.eclipse.org/mailman/listinfo/aspectj-users
> >>
> >>
> >>
> >> *********************************
> >> This message and any attachments (the "message") are confidential and
> >> intended solely for the addressees.
> >> Any unauthorised use or dissemination is prohibited.
> >> Messages are susceptible to alteration.
> >> France Telecom Group shall not be liable for the message if altered,
> changed
> >> or falsified.
> >> If you are not the intended addressee of this message, please cancel it
> >> immediately and inform the sender.
> >> ********************************
> >>
> >> _______________________________________________
> >> aspectj-users mailing list
> >> [email protected]
> >> https://dev.eclipse.org/mailman/listinfo/aspectj-users
> >>
> >>
> > _______________________________________________
> > aspectj-users mailing list
> > [email protected]
> > https://dev.eclipse.org/mailman/listinfo/aspectj-users
> >
> _______________________________________________
> aspectj-users mailing list
> [email protected]
> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>
_______________________________________________
aspectj-users mailing list
[email protected]
https://dev.eclipse.org/mailman/listinfo/aspectj-users

Reply via email to