[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[aspectj-dev] bug in ajc-generated pointcut annotations

Hi all,

when you compile an AspectJ program with Java 5 compatibility, ajc
generates annotations for the advice methods that contain the
corresponding pointcut definition.

I want to use these annotations and I assumed that they should reflect
the full pointcut definition. However, there are some differences to the
pointcut defined in the source. I guess that this is a bug, and I already have filed a bug for it (https://bugs.eclipse.org/bugs/show_bug.cgi?id=188291). Here is an example.

I am writing this email for two reasons: first, I'd like to get a confirmation that this is indeed a bug and I did not misunderstand the intention of the annotation. Second, I'd like to generate interest in this bug.

Pointcut in the source code:
pointcut pc() :
adviceexecution() || args(int[]) || if( 10 == 10);

That's what it turns to in the annotation:
(adviceexecution(* *) || (args(int) || if(void java.lang.Object.if_())))

I think, especially losing the array dimension of the type pattern (args PCD) is a dangerous bug. And I don't know the intended semantics for the if PCD. I assumed that it should contain the signature of the method generated for the if-expression in the source code. In my case this would be something like:

if(boolean Aspect1.ajc$if_113())

Otherwise, the if PCD in the annotation would be useless.

Best wishes,

Dipl.-Inform. Christoph Bockisch    bockisch@xxxxxxxxxxxxxxxxxxxxxxxxxx
Software Technology Group           Phone:  ++49 (0) 6151-16-3608
Darmstadt University of Technology  Fax:    ++49 (0) 6151-16-5410
Hochschulstr. 10, 64289 Darmstadt, Germany