Bug 125080 - [generics] Problem with abstract, generic aspects and "extends"
Summary: [generics] Problem with abstract, generic aspects and "extends"
Status: RESOLVED FIXED
Alias: None
Product: AspectJ
Classification: Tools
Component: Compiler (show other bugs)
Version: 1.5.0   Edit
Hardware: PC All
: P2 normal (vote)
Target Milestone: 1.5.1   Edit
Assignee: Andrew Clement CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2006-01-24 17:14 EST by david.pearce CLA
Modified: 2006-01-25 09:37 EST (History)
0 users

See Also:


Attachments
Example code (542 bytes, application/octet-stream)
2006-01-24 17:16 EST, david.pearce CLA
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description david.pearce CLA 2006-01-24 17:14:59 EST
The following code causes AJC to throw an ArrayOutOfBoundsException:

> public interface AspectInterface<T, S extends Number> { }
> 
> public abstract aspect AbstractAspect<T> 
>                        implements AspectInterface<T, Integer> {}	
> 
> public aspect ConcreteAspect extends AbstractAspect<Student> { }

 (as ususal, details of Student do not matter).

I will attach a complete code example and the full error report is given below.

Cheers,

David J. Pearce

=== BEGIN ERROR REPORT ===

ajc -1.5 AspectInterface.java Student.java ConcreteAspect.aj AbstractAspect.aj
/am/state-opera/home/djp/projects/RelationsForJava/test/example/AbstractAspect.aj [error] Internal compiler error
java.lang.ArrayIndexOutOfBoundsException: 1
        at org.aspectj.weaver.ResolvedType.getMemberParameterizationMap(ResolvedType.java:691)
        at org.aspectj.weaver.ResolvedType.getAjMemberParameterizationMap(ResolvedType.java:2065)
        at org.aspectj.weaver.ReferenceType.getDeclares(ReferenceType.java:575)
        at org.aspectj.weaver.ResolvedType.collectDeclares(ResolvedType.java:539)
        at org.aspectj.weaver.ResolvedType.collectCrosscuttingMembers(ResolvedType.java:504)
        at org.aspectj.weaver.CrosscuttingMembersSet.addOrReplaceAspect(CrosscuttingMembersSet.java:61)
        at org.aspectj.ajdt.internal.compiler.lookup.AjLookupEnvironment.addCrosscuttingStructures(AjLookupEnvironment.java:391)
        at org.aspectj.ajdt.internal.compiler.lookup.AjLookupEnvironment.collectAllITDsAndDeclares(AjLookupEnvironment.java:327)
        at org.aspectj.ajdt.internal.compiler.lookup.AjLookupEnvironment.completeTypeBindings(AjLookupEnvironment.java:168)
        at org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.beginToCompile(Compiler.java:301)
        at org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:315)
        at org.aspectj.ajdt.internal.core.builder.AjBuildManager.performCompilation(AjBuildManager.java:819)
        at org.aspectj.ajdt.internal.core.builder.AjBuildManager.doBuild(AjBuildManager.java:234)
        at org.aspectj.ajdt.internal.core.builder.AjBuildManager.batchBuild(AjBuildManager.java:157)
        at org.aspectj.ajdt.ajc.AjdtCommand.doCommand(AjdtCommand.java:112)
        at org.aspectj.ajdt.ajc.AjdtCommand.runCommand(AjdtCommand.java:60)
        at org.aspectj.tools.ajc.Main.run(Main.java:326)
        at org.aspectj.tools.ajc.Main.runMain(Main.java:240)
        at org.aspectj.tools.ajc.Main.main(Main.java:83)

(no source information available)
ABORT

Exception thrown from AspectJ DEVELOPMENT

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.
1

when collecting itds and declares ConcreteAspect
when completing type bindings
when batch building with classpath: /usr/pkg/java/sun-1.5/lib/ext/sunjce_provider.jar:/usr/pkg/java/sun-1.5/lib/ext/sunpkcs11.jar:/usr/pkg/java/sun-1.5/lib/ext/dnsns.jar:/usr/pkg/java/sun-1.5/lib/ext/localedata.jar:/usr/pkg/java/sun-1.5/lib/tools.jar:.:/u/staff/djp/src/mocha/mocha.zip:/u/staff/djp/pkg/aspectj1.5-DEVEL250106/lib/aspectjrt.jar:/mnt/scratch/djp/specjvm98:/u/staff/djp/teaching/comp463/soot/sootclasses-2.2.1.jar:/u/staff/djp/teaching/comp463/soot/polyglotclasses-1.3.jar:/u/staff/djp/pkg/antlr/antlr-2.7.5.jar:
1
java.lang.ArrayIndexOutOfBoundsException: 1
        at org.aspectj.weaver.ResolvedType.getMemberParameterizationMap(ResolvedType.java:691)
        at org.aspectj.weaver.ResolvedType.getAjMemberParameterizationMap(ResolvedType.java:2065)
        at org.aspectj.weaver.ReferenceType.getDeclares(ReferenceType.java:575)
        at org.aspectj.weaver.ResolvedType.collectDeclares(ResolvedType.java:539)
        at org.aspectj.weaver.ResolvedType.collectCrosscuttingMembers(ResolvedType.java:504)
        at org.aspectj.weaver.CrosscuttingMembersSet.addOrReplaceAspect(CrosscuttingMembersSet.java:61)
        at org.aspectj.ajdt.internal.compiler.lookup.AjLookupEnvironment.addCrosscuttingStructures(AjLookupEnvironment.java:391)
        at org.aspectj.ajdt.internal.compiler.lookup.AjLookupEnvironment.collectAllITDsAndDeclares(AjLookupEnvironment.java:327)
        at org.aspectj.ajdt.internal.compiler.lookup.AjLookupEnvironment.completeTypeBindings(AjLookupEnvironment.java:168)
        at org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.beginToCompile(Compiler.java:301)
        at org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:315)
        at org.aspectj.ajdt.internal.core.builder.AjBuildManager.performCompilation(AjBuildManager.java:819)
        at org.aspectj.ajdt.internal.core.builder.AjBuildManager.doBuild(AjBuildManager.java:234)
        at org.aspectj.ajdt.internal.core.builder.AjBuildManager.batchBuild(AjBuildManager.java:157)
        at org.aspectj.ajdt.ajc.AjdtCommand.doCommand(AjdtCommand.java:112)
        at org.aspectj.ajdt.ajc.AjdtCommand.runCommand(AjdtCommand.java:60)
        at org.aspectj.tools.ajc.Main.run(Main.java:326)
        at org.aspectj.tools.ajc.Main.runMain(Main.java:240)
        at org.aspectj.tools.ajc.Main.main(Main.java:83)


1 fail|abort, 1 error
gmake: *** [all] Error 255

=== END ===
Comment 1 david.pearce CLA 2006-01-24 17:16:04 EST
Created attachment 33547 [details]
Example code
Comment 2 david.pearce CLA 2006-01-24 17:21:02 EST
Actually, I've just realised you don't even need the "extends Number" bit to see the problem.  
Comment 3 david.pearce CLA 2006-01-24 18:43:43 EST
I've now tried versions 1.5M5, 1.5RC1, 1.5, and the latest development snapshot as of today.  But, none works ...
Comment 4 Andrew Clement CLA 2006-01-25 05:42:26 EST
fix checked in.
Comment 5 Andrew Clement CLA 2006-01-25 09:37:42 EST
fix available.