Re: [abc-users] abc's AspectJ compatibility

From: Eric Bodden <eric.bodden_at_mail.mcgill.ca>
Date: Sun, 9 Mar 2008 17:41:24 -0400

Hi, Thomas.

I am surprised that this code compiles correctly with ajc because
indeed the compiler *should* throw an error. To me, this rather seems
to be a bug in the ajc compiler. Here's why:

UndoRedoActivity defines this pointcut and advice:

        pointcut callUndoableSetRedoable(Undoable undoable, boolean newIsRedoable) :
                call(void Undoable.setRedoable(boolean)) && ...
        
        boolean around(Undoable undoable, boolean newIsRedoable) :
callUndoableSetRedoable(undoable, newIsRedoable) {
                return proceed(undoable, newIsRedoable);
        }

The pointcut can only match calls to void methods. The around-advice
however says that it returns a boolean. This is clearly a programming
error and should be caught by the compiler. (Of course in case of
AspectJ one can never tell for sure because there's not formal
semantics :-( ) You should raise a bug report for that at:
http://bugs.eclipse.org/bugs

> After commenting this posistion out the compiler throws the next error:
> [java] Caused by: java.lang.RuntimeException:
> [java] Aborting: can't find classfile
> org.aspectbench.runtime.reflect.Factory

This means that abc cannot find abc-runtime.jar. Is is on abc's classpath?

> For me it seems as if the abc act diffrent as the ajc.

Yes but I believe that abc is right in this case.

> Is this issue known or occured this problem in previous tests?

Not that I am aware of.

Eric

-- 
Eric Bodden
Sable Research Group
McGill University, Montréal, Canada
Received on Sun Mar 09 2008 - 21:41:28 GMT

This archive was generated by hypermail 2.2.0 : Mon Mar 10 2008 - 08:10:11 GMT