Bug 153380 - [pipeline] ClassCastException matching annotations
Summary: [pipeline] ClassCastException matching annotations
Status: RESOLVED FIXED
Alias: None
Product: AspectJ
Classification: Tools
Component: Compiler (show other bugs)
Version: DEVELOPMENT   Edit
Hardware: Macintosh Mac OS X - Carbon (unsup.)
: P3 normal (vote)
Target Milestone: 1.6.0 RC1   Edit
Assignee: aspectj inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2006-08-09 23:39 EDT by paul szego CLA
Modified: 2008-03-24 17:15 EDT (History)
3 users (show)

See Also:


Attachments
Small AJ project that crashes pipiline compiler. Missing jgoodies libraries to keep size down. (26.17 KB, application/x-zip-compressed)
2006-12-20 12:05 EST, Sergey Olefir CLA
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description paul szego CLA 2006-08-09 23:39:56 EDT
I get that error dialog, with the Details panel as below. This is after updating to the latest AJDT via the update site, for an existing project that was working fine.

Eclipse Version: 3.2.0 Build id: M20060628-1325

AJDT plugin:
org.aspectj 1.5.3.20060802071129
org.eclipse.aspectj 1.4.1.20060802071129


java.lang.ClassCastException
at org.aspectj.weaver.patterns.SignaturePattern.matchesAnnotations(SignaturePattern.java:477)
at org.aspectj.weaver.patterns.SignaturePattern.matchesExactly(SignaturePattern.java:332)
at org.aspectj.weaver.patterns.SignaturePattern.matches(SignaturePattern.java:289)
at org.aspectj.weaver.patterns.KindedPointcut.matchInternal(KindedPointcut.java:106)
at org.aspectj.weaver.patterns.Pointcut.match(Pointcut.java:146)
at org.aspectj.weaver.patterns.AndPointcut.matchInternal(AndPointcut.java:51)
at org.aspectj.weaver.patterns.Pointcut.match(Pointcut.java:146)
at org.aspectj.weaver.patterns.AndPointcut.matchInternal(AndPointcut.java:51)
at org.aspectj.weaver.patterns.Pointcut.match(Pointcut.java:146)
at org.aspectj.weaver.ShadowMunger.match(ShadowMunger.java:71)
at org.aspectj.weaver.Advice.match(Advice.java:112)
at org.aspectj.weaver.bcel.BcelAdvice.match(BcelAdvice.java:107)
at org.aspectj.weaver.bcel.BcelClassWeaver.match(BcelClassWeaver.java:2805)
at org.aspectj.weaver.bcel.BcelClassWeaver.matchInvokeInstruction(BcelClassWeaver.java:2746)
at org.aspectj.weaver.bcel.BcelClassWeaver.match(BcelClassWeaver.java:2505)
at org.aspectj.weaver.bcel.BcelClassWeaver.match(BcelClassWeaver.java:2331)
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:1597)
at org.aspectj.weaver.bcel.BcelWeaver.weaveWithoutDump(BcelWeaver.java:1548)
at org.aspectj.weaver.bcel.BcelWeaver.weaveAndNotify(BcelWeaver.java:1328)
at org.aspectj.weaver.bcel.BcelWeaver.weave(BcelWeaver.java:1124)
at org.aspectj.ajdt.internal.compiler.AjPipeliningCompilerAdapter.weaveQueuedEntries(AjPipeliningCompilerAdapter.java:451)
at org.aspectj.ajdt.internal.compiler.AjPipeliningCompilerAdapter.queueForWeaving(AjPipeliningCompilerAdapter.java:389)
at org.aspectj.ajdt.internal.compiler.AjPipeliningCompilerAdapter.afterProcessing(AjPipeliningCompilerAdapter.java:377)
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:891)
at org.aspectj.ajdt.internal.core.builder.AjBuildManager.doBuild(AjBuildManager.java:246)
at org.aspectj.ajdt.internal.core.builder.AjBuildManager.batchBuild(AjBuildManager.java:165)
at org.aspectj.ajde.internal.CompilerAdapter.compile(CompilerAdapter.java:122)
at org.aspectj.ajde.internal.AspectJBuildManager$CompilerThread.run(AspectJBuildManager.java:191)

trouble in: 
public class org.jrig.keyvalue.KvbMixin extends java.lang.Object:
  TypeMungers: [(BcelTypeMunger ResolvedTypeMunger(Field, java.util.Map org.jrig.keyvalue.KvbMixinImpl.bindings)), (BcelTypeMunger ResolvedTypeMunger(Method, void org.jrig.keyvalue.KvbMixinImpl.bind(java.lang.String, java.lang.Object, java.lang.String, java.util.Map))), (BcelTypeMunger ResolvedTypeMunger(Method, void org.jrig.keyvalue.KvbMixinImpl.unbind(java.lang.String))), (BcelTypeMunger ResolvedTypeMunger(Method, org.jrig.keyvalue.IKeyValueBinding$BindingInfo org.jrig.keyvalue.KvbMixinImpl.infoForBinding(java.lang.String))), (BcelTypeMunger ResolvedTypeMunger(Method, java.util.List org.jrig.keyvalue.KvbMixinImpl.exposedBindings())), (BcelTypeMunger ResolvedTypeMunger(Method, java.lang.Class org.jrig.keyvalue.KvbMixinImpl.valueClassForBinding(java.lang.String)))]
     declares: [declare parents: @org.jrig.keyvalue.annotation.KeyValue * extends (org.jrig.keyvalue.IKeyValueBinding, org.jrig.keyvalue.KvbMixinImpl);]
  private static Throwable ajc$initFailureCause
  public static final org.jrig.keyvalue.KvbMixin ajc$perSingletonInstance
  static void <clinit>():
    staticinitialization(void org.jrig.keyvalue.KvbMixin.<clinit>())
    | catch java.lang.Throwable -> E0
    | |             INVOKESTATIC org.jrig.keyvalue.KvbMixin.ajc$postClinit ()V   (line 31)
    | catch java.lang.Throwable -> E0
    |               GOTO L0
    |           E0: ASTORE_0
    |               ALOAD_0
    |               PUTSTATIC org.jrig.keyvalue.KvbMixin.ajc$initFailureCause Ljava/lang/Throwable;
    |           L0: RETURN
    staticinitialization(void org.jrig.keyvalue.KvbMixin.<clinit>())
  end static void <clinit>()

  public void <init>():
                    ALOAD_0     // Lorg/jrig/keyvalue/KvbMixin; this   (line 31)
                    INVOKESPECIAL java.lang.Object.<init> ()V
    constructor-execution(void org.jrig.keyvalue.KvbMixin.<init>())
    |               RETURN
    constructor-execution(void org.jrig.keyvalue.KvbMixin.<init>())
  end public void <init>()

  void ajc$declare_parents_1()    org.aspectj.weaver.MethodDeclarationLineNumber: 33:1043
:
                    RETURN   (line 33)
  end void ajc$declare_parents_1()

  public static void ajc$interFieldInit$org_jrig_keyvalue_KvbMixin$org_jrig_keyvalue_KvbMixinImpl$bindings(org.jrig.keyvalue.KvbMixinImpl)    org.aspectj.weaver.MethodDeclarationLineNumber: 35:1149
:
    method-execution(void org.jrig.keyvalue.KvbMixin.ajc$interFieldInit$org_jrig_keyvalue_KvbMixin$org_jrig_keyvalue_KvbMixinImpl$bindings(org.jrig.keyvalue.KvbMixinImpl))
    |               ALOAD_0     // Lorg/jrig/keyvalue/KvbMixinImpl; ajc$this_   (line 35)
    |               NEW java.util.HashMap
    |               DUP
    |               INVOKESPECIAL java.util.HashMap.<init> ()V
    | field-set(java.util.Map org.jrig.keyvalue.KvbMixinImpl.bindings)
    | |             INVOKEINTERFACE org.jrig.keyvalue.KvbMixinImpl.ajc$interFieldSet$org_jrig_keyvalue_KvbMixin$org_jrig_keyvalue_KvbMixinImpl$bindings (Ljava/util/Map;)V
    | field-set(java.util.Map org.jrig.keyvalue.KvbMixinImpl.bindings)
    |               RETURN
    method-execution(void org.jrig.keyvalue.KvbMixin.ajc$interFieldInit$org_jrig_keyvalue_KvbMixin$org_jrig_keyvalue_KvbMixinImpl$bindings(org.jrig.keyvalue.KvbMixinImpl))
  end public static void ajc$interFieldInit$org_jrig_keyvalue_KvbMixin$org_jrig_keyvalue_KvbMixinImpl$bindings(org.jrig.keyvalue.KvbMixinImpl)

  public static java.util.Map ajc$interFieldGetDispatch$org_jrig_keyvalue_KvbMixin$org_jrig_keyvalue_KvbMixinImpl$bindings(org.jrig.keyvalue.KvbMixinImpl)    EffectiveSignatureAttribute(java.util.Map org.jrig.keyvalue.KvbMixinImpl.bindings, field-get)
:
                    ALOAD_0
                    INVOKEINTERFACE org.jrig.keyvalue.KvbMixinImpl.ajc$interFieldGet$org_jrig_keyvalue_KvbMixin$org_jrig_keyvalue_KvbMixinImpl$bindings ()Ljava/util/Map;
                    ARETURN
  end public static java.util.Map ajc$interFieldGetDispatch$org_jrig_keyvalue_KvbMixin$org_jrig_keyvalue_KvbMixinImpl$bindings(org.jrig.keyvalue.KvbMixinImpl)

  public static void ajc$interFieldSetDispatch$org_jrig_keyvalue_KvbMixin$org_jrig_keyvalue_KvbMixinImpl$bindings(org.jrig.keyvalue.KvbMixinImpl, java.util.Map)    EffectiveSignatureAttribute(java.util.Map org.jrig.keyvalue.KvbMixinImpl.bindings, field-set)
:
                    ALOAD_0
                    ALOAD_1
                    INVOKEINTERFACE org.jrig.keyvalue.KvbMixinImpl.ajc$interFieldSet$org_jrig_keyvalue_KvbMixin$org_jrig_keyvalue_KvbMixinImpl$bindings (Ljava/util/Map;)V
                    RETURN
  end public static void ajc$interFieldSetDispatch$org_jrig_keyvalue_KvbMixin$org_jrig_keyvalue_KvbMixinImpl$bindings(org.jrig.keyvalue.KvbMixinImpl, java.util.Map)

  public static void ajc$interMethod$org_jrig_keyvalue_KvbMixin$org_jrig_keyvalue_KvbMixinImpl$bind(org.jrig.keyvalue.KvbMixinImpl, String, Object, String, java.util.Map)    EffectiveSignatureAttribute(void org.jrig.keyvalue.KvbMixinImpl.bind(java.lang.String, java.lang.Object, java.lang.String, java.util.Map), method-execution)
:
                    ALOAD_0     // Lorg/jrig/keyvalue/KvbMixinImpl; ajc$this_   (line 45)
                    INVOKESTATIC org.jrig.keyvalue.KvbMixin.ajc$interFieldGetDispatch$org_jrig_keyvalue_KvbMixin$org_jrig_keyvalue_KvbMixinImpl$bindings (Lorg/jrig/keyvalue/KvbMixinImpl;)Ljava/util/Map;
                    ALOAD_0     // Lorg/jrig/keyvalue/KvbMixinImpl; ajc$this_
                    ALOAD_1     // Ljava/lang/String; binding
                    ALOAD_2     // Ljava/lang/Object; observable
                    ALOAD_3     // Ljava/lang/String; key
                    ALOAD 4     // Ljava/util/Map; options
                    INVOKESTATIC org.jrig.keyvalue.KeyValueBinding.bind (Ljava/util/Map;Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/String;Ljava/util/Map;)V
                    RETURN   (line 46)
  end public static void ajc$interMethod$org_jrig_keyvalue_KvbMixin$org_jrig_keyvalue_KvbMixinImpl$bind(org.jrig.keyvalue.KvbMixinImpl, String, Object, String, java.util.Map)

  public static void ajc$interMethodDispatch1$org_jrig_keyvalue_KvbMixin$org_jrig_keyvalue_KvbMixinImpl$bind(org.jrig.keyvalue.KvbMixinImpl, String, Object, String, java.util.Map)    EffectiveSignatureAttribute(void org.jrig.keyvalue.KvbMixinImpl.bind(java.lang.String, java.lang.Object, java.lang.String, java.util.Map), method-call)
:
                    ALOAD_0
                    ALOAD_1
                    ALOAD_2
                    ALOAD_3
                    ALOAD 4
                    INVOKEINTERFACE org.jrig.keyvalue.KvbMixinImpl.bind (Ljava/lang/String;Ljava/lang/Object;Ljava/lang/String;Ljava/util/Map;)V
                    RETURN
  end public static void ajc$interMethodDispatch1$org_jrig_keyvalue_KvbMixin$org_jrig_keyvalue_KvbMixinImpl$bind(org.jrig.keyvalue.KvbMixinImpl, String, Object, String, java.util.Map)

  public static void ajc$interMethod$org_jrig_keyvalue_KvbMixin$org_jrig_keyvalue_KvbMixinImpl$unbind(org.jrig.keyvalue.KvbMixinImpl, String)    EffectiveSignatureAttribute(void org.jrig.keyvalue.KvbMixinImpl.unbind(java.lang.String), method-execution)
:
                    ALOAD_0     // Lorg/jrig/keyvalue/KvbMixinImpl; ajc$this_   (line 49)
                    INVOKESTATIC org.jrig.keyvalue.KvbMixin.ajc$interFieldGetDispatch$org_jrig_keyvalue_KvbMixin$org_jrig_keyvalue_KvbMixinImpl$bindings (Lorg/jrig/keyvalue/KvbMixinImpl;)Ljava/util/Map;
                    ALOAD_1     // Ljava/lang/String; binding
                    INVOKESTATIC org.jrig.keyvalue.KeyValueBinding.unbind (Ljava/util/Map;Ljava/lang/String;)V
                    RETURN   (line 50)
  end public static void ajc$interMethod$org_jrig_keyvalue_KvbMixin$org_jrig_keyvalue_KvbMixinImpl$unbind(org.jrig.keyvalue.KvbMixinImpl, String)

  public static void ajc$interMethodDispatch1$org_jrig_keyvalue_KvbMixin$org_jrig_keyvalue_KvbMixinImpl$unbind(org.jrig.keyvalue.KvbMixinImpl, String)    EffectiveSignatureAttribute(void org.jrig.keyvalue.KvbMixinImpl.unbind(java.lang.String), method-call)
:
                    ALOAD_0
                    ALOAD_1
                    INVOKEINTERFACE org.jrig.keyvalue.KvbMixinImpl.unbind (Ljava/lang/String;)V
                    RETURN
  end public static void ajc$interMethodDispatch1$org_jrig_keyvalue_KvbMixin$org_jrig_keyvalue_KvbMixinImpl$unbind(org.jrig.keyvalue.KvbMixinImpl, String)

  public static org.jrig.keyvalue.IKeyValueBinding$BindingInfo ajc$interMethod$org_jrig_keyvalue_KvbMixin$org_jrig_keyvalue_KvbMixinImpl$infoForBinding(org.jrig.keyvalue.KvbMixinImpl, String)    EffectiveSignatureAttribute(org.jrig.keyvalue.IKeyValueBinding$BindingInfo org.jrig.keyvalue.KvbMixinImpl.infoForBinding(java.lang.String), method-execution)
:
                    ALOAD_0     // Lorg/jrig/keyvalue/KvbMixinImpl; ajc$this_   (line 55)
                    INVOKESTATIC org.jrig.keyvalue.KvbMixin.ajc$interFieldGetDispatch$org_jrig_keyvalue_KvbMixin$org_jrig_keyvalue_KvbMixinImpl$bindings (Lorg/jrig/keyvalue/KvbMixinImpl;)Ljava/util/Map;
                    ALOAD_1     // Ljava/lang/String; binding
                    INVOKESTATIC org.jrig.keyvalue.KeyValueBinding.infoForBinding (Ljava/util/Map;Ljava/lang/String;)Lorg/jrig/keyvalue/IKeyValueBinding$BindingInfo;
                    ARETURN
  end public static org.jrig.keyvalue.IKeyValueBinding$BindingInfo ajc$interMethod$org_jrig_keyvalue_KvbMixin$org_jrig_keyvalue_KvbMixinImpl$infoForBinding(org.jrig.keyvalue.KvbMixinImpl, String)

  public static org.jrig.keyvalue.IKeyValueBinding$BindingInfo ajc$interMethodDispatch1$org_jrig_keyvalue_KvbMixin$org_jrig_keyvalue_KvbMixinImpl$infoForBinding(org.jrig.keyvalue.KvbMixinImpl, String)    EffectiveSignatureAttribute(org.jrig.keyvalue.IKeyValueBinding$BindingInfo org.jrig.keyvalue.KvbMixinImpl.infoForBinding(java.lang.String), method-call)
:
                    ALOAD_0
                    ALOAD_1
                    INVOKEINTERFACE org.jrig.keyvalue.KvbMixinImpl.infoForBinding (Ljava/lang/String;)Lorg/jrig/keyvalue/IKeyValueBinding$BindingInfo;
                    ARETURN
  end public static org.jrig.keyvalue.IKeyValueBinding$BindingInfo ajc$interMethodDispatch1$org_jrig_keyvalue_KvbMixin$org_jrig_keyvalue_KvbMixinImpl$infoForBinding(org.jrig.keyvalue.KvbMixinImpl, String)

  public static java.util.List ajc$interMethod$org_jrig_keyvalue_KvbMixin$org_jrig_keyvalue_KvbMixinImpl$exposedBindings(org.jrig.keyvalue.KvbMixinImpl)    EffectiveSignatureAttribute(java.util.List org.jrig.keyvalue.KvbMixinImpl.exposedBindings(), method-execution)
:
                    ALOAD_0     // Lorg/jrig/keyvalue/KvbMixinImpl; ajc$this_   (line 61)
                    INVOKESTATIC org.jrig.keyvalue.KeyValueBinding.exposedBindings (Ljava/lang/Object;)Ljava/util/List;
                    ARETURN
  end public static java.util.List ajc$interMethod$org_jrig_keyvalue_KvbMixin$org_jrig_keyvalue_KvbMixinImpl$exposedBindings(org.jrig.keyvalue.KvbMixinImpl)

  public static java.util.List ajc$interMethodDispatch1$org_jrig_keyvalue_KvbMixin$org_jrig_keyvalue_KvbMixinImpl$exposedBindings(org.jrig.keyvalue.KvbMixinImpl)    EffectiveSignatureAttribute(java.util.List org.jrig.keyvalue.KvbMixinImpl.exposedBindings(), method-call)
:
                    ALOAD_0
                    INVOKEINTERFACE org.jrig.keyvalue.KvbMixinImpl.exposedBindings ()Ljava/util/List;
                    ARETURN
  end public static java.util.List ajc$interMethodDispatch1$org_jrig_keyvalue_KvbMixin$org_jrig_keyvalue_KvbMixinImpl$exposedBindings(org.jrig.keyvalue.KvbMixinImpl)

  public static Class ajc$interMethod$org_jrig_keyvalue_KvbMixin$org_jrig_keyvalue_KvbMixinImpl$valueClassForBinding(org.jrig.keyvalue.KvbMixinImpl, String)    EffectiveSignatureAttribute(java.lang.Class org.jrig.keyvalue.KvbMixinImpl.valueClassForBinding(java.lang.String), method-execution)
:
                    ALOAD_0     // Lorg/jrig/keyvalue/KvbMixinImpl; ajc$this_   (line 65)
                    ALOAD_1     // Ljava/lang/String; binding
                    INVOKESTATIC org.jrig.keyvalue.KeyValueBinding.valueClassForBinding (Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Class;
                    ARETURN
  end public static Class ajc$interMethod$org_jrig_keyvalue_KvbMixin$org_jrig_keyvalue_KvbMixinImpl$valueClassForBinding(org.jrig.keyvalue.KvbMixinImpl, String)

  public static Class ajc$interMethodDispatch1$org_jrig_keyvalue_KvbMixin$org_jrig_keyvalue_KvbMixinImpl$valueClassForBinding(org.jrig.keyvalue.KvbMixinImpl, String)    EffectiveSignatureAttribute(java.lang.Class org.jrig.keyvalue.KvbMixinImpl.valueClassForBinding(java.lang.String), method-call)
:
                    ALOAD_0
                    ALOAD_1
                    INVOKEINTERFACE org.jrig.keyvalue.KvbMixinImpl.valueClassForBinding (Ljava/lang/String;)Ljava/lang/Class;
                    ARETURN
  end public static Class ajc$interMethodDispatch1$org_jrig_keyvalue_KvbMixin$org_jrig_keyvalue_KvbMixinImpl$valueClassForBinding(org.jrig.keyvalue.KvbMixinImpl, String)

  public static org.jrig.keyvalue.KvbMixin aspectOf()    org.aspectj.weaver.AjAttribute$AjSynthetic@33d8ad
:
                    GETSTATIC org.jrig.keyvalue.KvbMixin.ajc$perSingletonInstance Lorg/jrig/keyvalue/KvbMixin;   (line 1)
                    IFNONNULL L0
                    NEW org.aspectj.lang.NoAspectBoundException
                    DUP
                    LDC "org_jrig_keyvalue_KvbMixin"
                    GETSTATIC org.jrig.keyvalue.KvbMixin.ajc$initFailureCause Ljava/lang/Throwable;
                    INVOKESPECIAL org.aspectj.lang.NoAspectBoundException.<init> (Ljava/lang/String;Ljava/lang/Throwable;)V
                    ATHROW
                L0: GETSTATIC org.jrig.keyvalue.KvbMixin.ajc$perSingletonInstance Lorg/jrig/keyvalue/KvbMixin;
                    ARETURN
  end public static org.jrig.keyvalue.KvbMixin aspectOf()

  public static boolean hasAspect()    org.aspectj.weaver.AjAttribute$AjSynthetic@16dc7e
:
                    GETSTATIC org.jrig.keyvalue.KvbMixin.ajc$perSingletonInstance Lorg/jrig/keyvalue/KvbMixin;   (line 1)
                    IFNULL L0
                    ICONST_1
                    IRETURN
                L0: ICONST_0
                    IRETURN
  end public static boolean hasAspect()

  private static void ajc$postClinit()    org.aspectj.weaver.AjAttribute$AjSynthetic@1abd9d
:
                    NEW org.jrig.keyvalue.KvbMixin   (line 1)
                    DUP
                    INVOKESPECIAL org.jrig.keyvalue.KvbMixin.<init> ()V
                    PUTSTATIC org.jrig.keyvalue.KvbMixin.ajc$perSingletonInstance Lorg/jrig/keyvalue/KvbMixin;
                    RETURN
  end private static void ajc$postClinit()
end public class org.jrig.keyvalue.KvbMixin

when weaving aspects 
when weaving 
when batch building BuildConfig[/Users/paul/Documents/workspace/.metadata/.plugins/org.eclipse.ajdt.core/JRigLocal.generated.lst] #Files=114
Comment 1 paul szego CLA 2006-08-09 23:45:36 EDT
Note: If I revert to 1.4.1.20060728033634 then I dont get this error.

I do this via Help -> Software Updates -> Manage Configuration -> Replace With Another Version.

Comment 2 Matt Chapman CLA 2006-08-10 02:34:58 EDT
Passing over to compiler
Comment 3 Andrew Clement CLA 2006-08-10 03:27:49 EDT
suspect this is a pipeline bug - you can try deactivating the pipeline to see if it helps, set the option:

-Xset:pipelineCompilation=false

in your project properties.  Pipelining compilation uses far less memory but is a brand new feature and thus has a few bugs to iron out.
Comment 4 Andrew Clement CLA 2006-08-10 06:57:12 EDT
i found a different crash whilst investigating - fixing that first.
Comment 5 paul szego CLA 2006-08-10 16:29:48 EDT
I can confirm that when I set this:

-Xset:pipelineCompilation=false

in the AspectJ Compiler Non-standard compiler options the problem does NOT appear.
Comment 6 Andrew Clement CLA 2006-08-23 04:02:08 EDT
The problem appears to be due to the use of ITDs.  The cast that blows up is casting something it believes is a BcelTypeMunger.  Really the only other possibility for the object is an EclipseTypeMunger - but at this stage of weaving all the Eclipse ones ought to have been transformed into Bcel ones.  I don't want the fix to be a guard for checking it is an instanceof EclipseTypeMunger and skipping it in that case as we'll get peculiar results in some situations - we really need to get to the bottom of why this type munger hasn't been transformed.

My current thought is that we have exited stage one of the pipeline too early - at exit of stage one, all aspects must have been compiled and it is possible the code that identifies the aspects and sorts the list of files to process is misbehaving.

Can you tell me - how are your aspects defined?  Are they code style/annotation style?  Are all aspects declared as top level types or do you have some member type aspects? How many aspects do you have?
Comment 7 Andrew Clement CLA 2006-09-25 11:04:13 EDT
Downgraded seriousness - no reply for a month - can't progress this bug without a bit more info.  I presume you are continuing with the workaround flag?  please add a comment if you find a few moments to help me work on it.
Comment 8 paul szego CLA 2006-09-25 16:43:49 EDT
> Can you tell me - how are your aspects defined?  Are they code style/annotation
> style?  Are all aspects declared as top level types or do you have some member
> type aspects? How many aspects do you have?

I have 3 aspects in total, all small. The first simply makes any class that matches a class level annotation implement a particular interface:

    declare parents: (@KeyValue *) implements IKeyValueCoding, KvcMixinImpl;
    public Object KvcMixinImpl.getValueForKey( String key )
    {
        ....
    }

etc. The next does the same, but also intercepts some variable setting:

    after( IKeyValueObserving target ): 
        set( !@KvoManual java.util.List ( @KeyValue * ).* )
        && target( target )

    pointcut setter() : set( !@KvoManual * (@KeyValue *).* )
        && @within(KeyValue)
        && !withincode( new(..) );

    void around( Object input, IKeyValueObserving target ): setter()
        && args(input) 
        && target(target) 

The last one does the same as the first, but for a different interface. I can post the entire aspect code here if thats appropriate? (It's open source at SourceForge).

I have been using the workaround, and don't encounter the problem anymore. I haven't tried taking it off recently.
Comment 9 Andrew Clement CLA 2006-09-26 02:59:54 EDT
If you could zip up the source and send it to me google ID, I can take a look at it...
Comment 10 Sergey Olefir CLA 2006-12-20 12:03:11 EST
I get pretty much the same bug, I'll try to provide the relevant information. Hopefully it'll be enough to reproduce it.

I also confirm that -Xset:pipelineCompilation=false fixes the issue.


Running on Windows XP Professional.

Sun JDK
java version "1.5.0_10"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_10-b03)
Java HotSpot(TM) Client VM (build 1.5.0_10-b03, mixed mode, sharing)

Eclipse SDK
Version: 3.2.1
Build id: M20060921-0945

Eclipse AspectJ Development Tools
Version: 1.4.1.200611230655
AspectJ version: 1.5.3.200611221118


Attempting to compile the project "Java Beans Aspect" (will create it as an attachment). 

To keep attachment size down the project is missing three jgoodies libraries in lib/jgoodies folder (binding-1.1.jar forms-1.0.6.jar looks-1.3.2.jar); the particular instances of libraries were downloaded as a part of a .jar from: https://handyaspects.dev.java.net/servlets/ProjectDocumentList?folderID=4848&expandFolder=4848&folderID=0

The exact trace as shown in Eclipse:
java.lang.ClassCastException
at org.aspectj.weaver.patterns.SignaturePattern.matchesAnnotations(SignaturePattern.java:477)
at org.aspectj.weaver.patterns.SignaturePattern.matchesExactly(SignaturePattern.java:332)
at org.aspectj.weaver.patterns.SignaturePattern.matches(SignaturePattern.java:289)
at org.aspectj.weaver.patterns.KindedPointcut.matchInternal(KindedPointcut.java:106)
at org.aspectj.weaver.patterns.Pointcut.match(Pointcut.java ...  
when batch building BuildConfig[C:\Lang\eclipse-3.2.1\workspace\.metadata\.plugins\org.eclipse.ajdt.core\Java Beans Aspect.generated.lst] #Files=16
Comment 11 Sergey Olefir CLA 2006-12-20 12:05:21 EST
Created attachment 55978 [details]
Small AJ project that crashes pipiline compiler. Missing jgoodies libraries to keep size down.
Comment 12 Andrew Clement CLA 2008-03-24 17:15:46 EDT
fixed (err, better late than never...) - now compiles with just one warning

C:\temp\jba\src\demo\com\damnhandy\aspects\demo\aop\AopBean.java:88 [warning] This Aspect is ALPHA quality and not yet intended for production use.
public void doCalc() {
^^^^^^^^^^^^^^^^^^^^^^
	method-execution(void com.damnhandy.aspects.demo.aop.AopBean.doCalc())
	see also: C:\temp\jba\src\java\com\damnhandy\aspects\syncmodel\impl\SyncModelAspect.aj:20::0

thanks for working on that test case!