Bug 404848

Summary: You should resolve this member and call getAnnotationOfType() on the result...
Product: [Tools] AspectJ Reporter: Andrew Clement <aclement>
Component: CompilerAssignee: aspectj inbox <aspectj-inbox>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: P3    
Version: DEVELOPMENT   
Target Milestone: 1.7.3   
Hardware: PC   
OS: Mac OS X   
Whiteboard:

Description Andrew Clement CLA 2013-04-03 15:32:07 EDT
reported on skype:
You should resolve this member and call getAnnotationOfType() on the result...
java.lang.UnsupportedOperationException: You should resolve this member and call getAnnotationOfType() on the result...
    at org.aspectj.weaver.ResolvedMemberImpl.getAnnotationOfType(ResolvedMemberImpl.java:1239)
    at org.aspectj.weaver.JoinPointSignature.getAnnotationOfType(JoinPointSignature.java:87)
    at org.aspectj.weaver.patterns.ExactAnnotationTypePattern.matches(ExactAnnotationTypePattern.java:124)
    at org.aspectj.weaver.patterns.ExactAnnotationTypePattern.matches(ExactAnnotationTypePattern.java:96)
    at org.aspectj.weaver.patterns.SignaturePattern.matchesAnnotations(SignaturePattern.java:713)
    at org.aspectj.weaver.patterns.SignaturePattern.matchesExactly(SignaturePattern.java:372)
    at org.aspectj.weaver.patterns.SignaturePattern.matches(SignaturePattern.java:320)
    at org.aspectj.weaver.patterns.KindedPointcut.matchInternal(KindedPointcut.java:202)
    at org.aspectj.weaver.patterns.Pointcut.match(Pointcut.java:137)
    at org.aspectj.weaver.patterns.AndPointcut.matchInternal(AndPointcut.java:55)
    at org.aspectj.weaver.patterns.Pointcut.match(Pointcut.java:137)
    at org.aspectj.weaver.patterns.AndPointcut.matchInternal(AndPointcut.java:51)
    at org.aspectj.weaver.patterns.Pointcut.match(Pointcut.java:137)
    at org.aspectj.weaver.patterns.OrPointcut.matchInternal(OrPointcut.java:54)
    at org.aspectj.weaver.patterns.Pointcut.match(Pointcut.java:137)
    at org.aspectj.weaver.ShadowMunger.match(ShadowMunger.java:113)
    at org.aspectj.weaver.Checker.match(Checker.java:86)
    at org.aspectj.weaver.bcel.BcelClassWeaver.match(BcelClassWeaver.java:3156)
    at org.aspectj.weaver.bcel.BcelClassWeaver.matchInvokeInstruction(BcelClassWeaver.java:3080)
    at org.aspectj.weaver.bcel.BcelClassWeaver.match(BcelClassWeaver.java:2762)
    at org.aspectj.weaver.bcel.BcelClassWeaver.match(BcelClassWeaver.java:2542)
Comment 1 Andrew Clement CLA 2013-04-03 15:59:13 EDT
Fixed up.

The problem here is that we often get away with just passing annotation types around - it isn't often that users match on annotation values. Here annotation values were being used to match against the fake member created to represent an ITD, the fake member only had the annotation types put on it. I fleshed it out to also copy the values.