Community
Participate
Working Groups
Maybe I'm doing something stupid. But at least AspectJ should tell me why I am stupid rather than puke exceptions. :). Here is how to reproduce: class Test { private int count =0; public void dostuff(){ count++; System.out.println("do stuff"); } public static void main(String[] args) { Test t = new Test(); Test t2 = new Test(); t.dostuff(); t2.dostuff(); } } interface Threaded { } public abstract aspect ParentA { declare parents: Test implements Threaded; private boolean Threaded.breakit(){ return false; } //boolean breakit(){ return true}; void around(Test t):execution(* Test.dostuff(..))&&this(t){ while(!t.breakit()){ proceed(t); try{ Thread.sleep(1000); }catch(Exception e){ } } System.out.println("parent a"); } } privileged aspect Son extends ParentA{ after() returning (boolean ret): call(* Threaded+.breakit())//&&target(t) { } }
Sorry, forgot to attach the error message: trouble in: ABORT Exception thrown from AspectJ 1.5.0 M1 This might be logged as a bug already -- find current bugs at http://bugs.eclipse.org/bugs/buglist.cgi?product=AspectJ&component=Compiler Bugs for exceptions thrown have titles File:line from the top stack, e.g., "SomeFile.java:243" If you don't find the exception below in a bug, please add a new bug at http://bugs.eclipse.org/bugs/enter_bug.cgi?product=AspectJ To make the bug a priority, please include a test program that can reproduce this exception. null java.lang.NullPointerException at org.aspectj.weaver.ResolvedTypeX.isConvertableFrom (ResolvedTypeX.java :131) at org.aspectj.weaver.bcel.Utility.appendConversion(Utility.java:241) at org.aspectj.weaver.bcel.BcelVar.appendLoadAndConvert (BcelVar.java:61) at org.aspectj.weaver.bcel.BcelAdvice.getAdviceArgSetup (BcelAdvice.java: 314) at org.aspectj.weaver.bcel.BcelAdvice.getAdviceInstructions (BcelAdvice.java:270) at org.aspectj.weaver.bcel.BcelShadow.weaveAfterReturning (BcelShadow.java:1380) at org.aspectj.weaver.bcel.BcelAdvice.implementOn(BcelAdvice.java:138) at org.aspectj.weaver.Shadow.implementMungers(Shadow.java:451) at org.aspectj.weaver.Shadow.implement(Shadow.java:334) at org.aspectj.weaver.bcel.BcelClassWeaver.implement (BcelClassWeaver.java:1157) at org.aspectj.weaver.bcel.BcelClassWeaver.weave (BcelClassWeaver.java:362) at org.aspectj.weaver.bcel.BcelClassWeaver.weave (BcelClassWeaver.java:83) at org.aspectj.weaver.bcel.BcelWeaver.weave(BcelWeaver.java:742) at org.aspectj.weaver.bcel.BcelWeaver.weaveWithoutDump (BcelWeaver.java:707) at org.aspectj.weaver.bcel.BcelWeaver.weaveAndNotify (BcelWeaver.java:634) at org.aspectj.weaver.bcel.BcelWeaver.weave(BcelWeaver.java:565) at org.aspectj.ajdt.internal.compiler.AjCompilerAdapter.weave (AjCompilerAdapter.java:243) at org.aspectj.ajdt.internal.compiler.AjCompilerAdapter.afterCompiling (AjCompilerAdapter.java:118) at org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.compile (Compiler.java:383) at org.aspectj.ajdt.internal.core.builder.AjBuildManager.performCompilation (AjBuildManager.java:682) at org.aspectj.ajdt.internal.core.builder.AjBuildManager.doBuild (AjBuild Manager.java:168) at org.aspectj.ajdt.internal.core.builder.AjBuildManager.batchBuild (AjBu ildManager.java:102) at org.aspectj.ajdt.ajc.AjdtCommand.doCommand(AjdtCommand.java:109) at org.aspectj.ajdt.ajc.AjdtCommand.runCommand(AjdtCommand.java:60) at org.aspectj.tools.ajc.Main.run(Main.java:291) at org.aspectj.tools.ajc.Main.runMain(Main.java:227) at org.aspectj.tools.ajc.Main.main(Main.java:80) 1 fail|abort
I think it is the 'boolean' in the after() returning advice that is causing the problem - I remember looking at a bug in this area (when primitive types are involved) that arose due to the changes for autoboxing. However, although this problem does occur in 1.5.0M1, it is already fixed in the dev release of AspectJ 1.5.0 available from the download page.
fixed as per andy's comment on 02-13
*** Bug 83930 has been marked as a duplicate of this bug. ***