Bug 165885 - ClassCastException at EclipseResolvedMember.java:98
Summary: ClassCastException at EclipseResolvedMember.java:98
Status: RESOLVED FIXED
Alias: None
Product: AspectJ
Classification: Tools
Component: Compiler (show other bugs)
Version: 1.5.3RC1   Edit
Hardware: PC Windows XP
: P3 normal (vote)
Target Milestone: 1.5.4   Edit
Assignee: aspectj inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2006-11-27 02:09 EST by Matt Whitlock CLA
Modified: 2007-10-10 10:22 EDT (History)
0 users

See Also:


Attachments
Minimal test case demonstrating the bug (2.24 KB, application/x-zip-compressed)
2006-11-28 00:08 EST, Matt Whitlock CLA
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Matt Whitlock CLA 2006-11-27 02:09:08 EST
java.lang.ClassCastException
at org.aspectj.ajdt.internal.compiler.lookup.EclipseResolvedMember.getParameterNames(EclipseResolvedMember.java:98)
at org.aspectj.weaver.ResolvedMemberImpl.parameterizedWith(ResolvedMemberImpl.java:660)
at org.aspectj.weaver.ResolvedMemberImpl.parameterizedWith(ResolvedMemberImpl.java:597)
at org.aspectj.weaver.ReferenceType.getDeclaredFields(ReferenceType.java:381)
at org.aspectj.weaver.ResolvedType$2.get( ... when weaving 
when batch building BuildConfig[D:\My Documents\eclipse\.metadata\.plugins\org.eclipse.ajdt.core\cgrid-library.generated.lst] #Files=93

This is with AJDT 1.4.1 on Eclipse 3.2.1.
Comment 1 Matt Whitlock CLA 2006-11-27 02:17:56 EST
Here's a more complete stack trace:

java.lang.ClassCastException: org.aspectj.org.eclipse.jdt.internal.compiler.lookup.FieldBinding
	at org.aspectj.ajdt.internal.compiler.lookup.EclipseResolvedMember.getParameterNames(EclipseResolvedMember.java:98)
	at org.aspectj.weaver.ResolvedMemberImpl.parameterizedWith(ResolvedMemberImpl.java:660)
	at org.aspectj.weaver.ResolvedMemberImpl.parameterizedWith(ResolvedMemberImpl.java:597)
	at org.aspectj.weaver.ReferenceType.getDeclaredFields(ReferenceType.java:381)
	at org.aspectj.weaver.ResolvedType$2.get(ResolvedType.java:191)
	at org.aspectj.weaver.Iterators$3$1.hasNext(Iterators.java:118)
	at org.aspectj.weaver.Iterators$5.hasNext(Iterators.java:171)
	at org.aspectj.weaver.Iterators$3.hasNext(Iterators.java:128)
	at org.aspectj.weaver.ResolvedType.lookupMember(ResolvedType.java:346)
	at org.aspectj.weaver.ResolvedType.lookupField(ResolvedType.java:319)
	at org.aspectj.weaver.World.resolve(World.java:528)
	at org.aspectj.weaver.MemberImpl.resolve(MemberImpl.java:96)
	at org.aspectj.weaver.bcel.BcelClassWeaver.matchSetInstruction(BcelClassWeaver.java:2604)
	at org.aspectj.weaver.bcel.BcelClassWeaver.match(BcelClassWeaver.java:2484)
	at org.aspectj.weaver.bcel.BcelClassWeaver.match(BcelClassWeaver.java:2332)
	at org.aspectj.weaver.bcel.BcelClassWeaver.weave(BcelClassWeaver.java:494)
	at org.aspectj.weaver.bcel.BcelClassWeaver.weave(BcelClassWeaver.java:119)
	at org.aspectj.weaver.bcel.BcelWeaver.weave(BcelWeaver.java:1612)
	at org.aspectj.weaver.bcel.BcelWeaver.weaveWithoutDump(BcelWeaver.java:1563)
	at org.aspectj.weaver.bcel.BcelWeaver.weaveAndNotify(BcelWeaver.java:1341)
	at org.aspectj.weaver.bcel.BcelWeaver.weave(BcelWeaver.java:1161)
	at org.aspectj.ajdt.internal.compiler.AjPipeliningCompilerAdapter.weaveQueuedEntries(AjPipeliningCompilerAdapter.java:455)
	at org.aspectj.ajdt.internal.compiler.AjPipeliningCompilerAdapter.queueForWeaving(AjPipeliningCompilerAdapter.java:392)
	at org.aspectj.ajdt.internal.compiler.AjPipeliningCompilerAdapter.afterProcessing(AjPipeliningCompilerAdapter.java:380)
	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:533)
	at org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:329)
	at org.aspectj.ajdt.internal.core.builder.AjBuildManager.performCompilation(AjBuildManager.java:906)
	at org.aspectj.ajdt.internal.core.builder.AjBuildManager.doBuild(AjBuildManager.java:260)
	at org.aspectj.ajdt.internal.core.builder.AjBuildManager.batchBuild(AjBuildManager.java:176)
	at org.aspectj.ajde.internal.CompilerAdapter.compile(CompilerAdapter.java:107)
	at org.aspectj.ajde.internal.AspectJBuildManager$CompilerThread.run(AspectJBuildManager.java:191)
Comment 2 Matt Whitlock CLA 2006-11-28 00:07:47 EST
I've finally been able to reduce this bug to a minimal test case:

--- src/main/java/package1/Abstract.java ---
package package1;

public abstract class Abstract<T> {

	protected Object field;

}

--- src/main/java/bug/package2/Concrete.java ---
package bug.package2;

import package1.Abstract;

public class Concrete extends Abstract<Object> {

	public void method() {
		field = null;
	}

}

--- src/main/aspect/Aspect.aj ---
public aspect Aspect {

	declare error : set(* *) : "";

}

------

See attachment for Eclipse project containing these three source files.
Comment 3 Matt Whitlock CLA 2006-11-28 00:08:22 EST
Created attachment 54611 [details]
Minimal test case demonstrating the bug
Comment 4 Andrew Clement CLA 2006-11-28 03:54:15 EST
It is related to pipeline compilation - so the files also have to be compiled in a particular order for it to happen, but I've recreated it with those files you attached, thanks!  I have a fix ready to go - but just need to sort out my eclipse credentials so I can commit it...
Comment 5 Andrew Clement CLA 2006-11-29 05:53:42 EST
test and fix committed. thanks for the testcase.
Comment 6 Andrew Clement CLA 2006-11-30 04:06:44 EST
fix available in latest dev build.
Comment 7 Helen Beeken CLA 2006-12-08 09:28:13 EST
This fix is now in the latest AJDT 1.5 dev build (for eclipse 3.3M3)