Bug 251940 - [plan] [compilation] Compiler error when using implements and pertarget
Summary: [plan] [compilation] Compiler error when using implements and pertarget
Status: RESOLVED FIXED
Alias: None
Product: AspectJ
Classification: Tools
Component: Compiler (show other bugs)
Version: 1.6.3   Edit
Hardware: All Mac OS X - Carbon (unsup.)
: P2 normal (vote)
Target Milestone: 1.6.3   Edit
Assignee: aspectj inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2008-10-23 17:47 EDT by Andrew Eisenberg CLA
Modified: 2008-10-24 16:39 EDT (History)
1 user (show)

See Also:


Attachments
Project with failing aspect (2.21 KB, application/octet-stream)
2008-10-23 17:48 EDT, Andrew Eisenberg CLA
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Andrew Eisenberg CLA 2008-10-23 17:47:57 EDT
When I try to save and compile the following aspect, I get a compiler exception.

public aspect F implements Comparable pertarget(within(F)) {
 
}


java.lang.NullPointerException
at org.aspectj.weaver.ReferenceType.isAspect(ReferenceType.java:165)
at org.aspectj.ajdt.internal.core.builder.AjBuildManager$4.acceptResult(AjBuildManager.java:1032)
at org.aspectj.ajdt.internal.compiler.AjPipeliningCompilerAdapter.acceptResult(AjPipeliningCompilerAdapter.java:383)
at org.aspectj.ajdt.internal.compiler.AjPipeliningCompilerAdapter.afterProcessing(AjPipeliningCompilerAdapter.java:356)
at org.aspectj.ajdt.internal.compiler.CompilerAdapter.ajc$after$org_aspectj_ajdt_internal_compiler_CompilerAdapter$5$6b855184(CompilerAdapter.aj:98)
at org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.process(Compiler.java:652)
at org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:392)
at org.aspectj.ajdt.internal.core.builder.AjBuildManager.performCompilation(AjBuildManager.java:975)
at org.aspectj.ajdt.internal.core.builder.AjBuildManager.performBuild(AjBuildManager.java:265)
at org.aspectj.ajdt.internal.core.builder.AjBuildManager.batchBuild(AjBuildManager.java:179)
at org.aspectj.ajde.core.internal.AjdeCoreBuildManager.performBuild(AjdeCoreBuildManager.java:104)
at org.aspectj.ajde.core.AjCompiler.build(AjCompiler.java:88)
at org.eclipse.ajdt.core.builder.AJBuilder.build(AJBuilder.java:227)
at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:633)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:170)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:201)
at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:253)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:256)
at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:309)
at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:341)
at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:140)
at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:238)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
Comment 1 Andrew Eisenberg CLA 2008-10-23 17:48:38 EDT
Created attachment 116000 [details]
Project with failing aspect
Comment 2 Andrew Clement CLA 2008-10-23 18:31:08 EDT
oooo - interesting. could be the same thing as the XterminateAfterCompilation issue. nice little testcase :)
Comment 3 Andrew Clement CLA 2008-10-23 20:49:53 EDT
I get no crash on the command line or in AJDT.

I get the expected error that the aspect doesn't implement compareTo
Comment 4 Andrew Clement CLA 2008-10-23 20:51:09 EDT
I see you said OS = All - did it also fail for you on windows?
Comment 5 Andrew Clement CLA 2008-10-23 21:05:38 EDT
i'll try it on my Mac 
Comment 6 Andrew Eisenberg CLA 2008-10-23 22:26:53 EDT
Yes, it was only Mac.  Odd.  Maybe something else was going on.  Going to try it in a different workspace.
Comment 7 Andrew Eisenberg CLA 2008-10-23 22:46:54 EDT
Still throwing the same error for me.  I tried it on a clean workspace with the AJDT Version: 1.6.1.200810222003 and AspectJ version: 1.6.3.20081019220500.
Comment 8 Andrew Clement CLA 2008-10-24 16:39:01 EDT
ok - finally recreated it on my Mac.  It is a problem related to building broken code, and we knew there would be a few, where we try to soldier on even though the source isn't valid.  The error about not implementing Comparable is created and we return from compilation early.  We return before the delegate is setup properly for the inner interface $ajcMightHaveAspect that is created due to the per clause.  The delegate being null then causes the problem.  Test and fix committed.

I don't believe the other users with null delegate problems were building broken code (I know some were just binary weaving) so I doubt my fix will help them.