Bug 145048 - BCException in AnnotationPointcut.findResidueInternal
Summary: BCException in AnnotationPointcut.findResidueInternal
Status: RESOLVED DUPLICATE of bug 138223
Alias: None
Product: AspectJ
Classification: Tools
Component: Compiler (show other bugs)
Version: 1.5.1   Edit
Hardware: PC Windows XP
: P3 normal (vote)
Target Milestone: ---   Edit
Assignee: aspectj inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2006-06-02 08:17 EDT by Adrian Colyer CLA
Modified: 2006-06-02 08:38 EDT (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Adrian Colyer CLA 2006-06-02 08:17:33 EDT
Matching on a pointcut such as the following:

        before() : accessingRedField(Coloured) { // ... }

	private pointcut accessingRedField(Coloured coloured) :
		get(* *) && 
		@annotation(coloured) &&
		if(coloured.value() == Colour.RED);

causes:

org.aspectj.weaver.BCException
at org.aspectj.weaver.patterns.AnnotationPointcut.findResidueInternal(AnnotationPointcut.java:199)
at org.aspectj.weaver.patterns.Pointcut.findResidue(Pointcut.java:267)
at org.aspectj.weaver.patterns.AndPointcut.findResidueInternal(AndPointcut.java:93)
at org.aspectj.weaver.patterns.Pointcut.findResidue(Pointcut.java:267)
at org.aspectj.weaver.patterns.AndPointcut.findResidueInternal(AndPointcut.java:93)
at org.aspectj.weaver.patterns.Pointcut.findResidue(Pointcut.java:267)
at org.aspectj.weaver.patterns.IfPointcut.findResidueInternal(IfPointcut.java:173)
at org.aspectj.weaver.patterns.Pointcut.findResidue(Pointcut.java:267)
at org.aspectj.weaver.patterns.AndPointcut.findResidueInternal(AndPointcut.java:93)
at org.aspectj.weaver.patterns.Pointcut.findResidue(Pointcut.java:267)
at org.aspectj.weaver.patterns.AndPointcut.findResidueInternal(AndPointcut.java:93)
at org.aspectj.weaver.patterns.Pointcut.findResidue(Pointcut.java:267)
at org.aspectj.weaver.patterns.NotPointcut.findResidueInternal(NotPointcut.java:96)
at org.aspectj.weaver.patterns.Pointcut.findResidue(Pointcut.java:267)
at org.aspectj.weaver.patterns.AndPointcut.findResidueInternal(AndPointcut.java:93)
at org.aspectj.weaver.patterns.Pointcut.findResidue(Pointcut.java:267)
at org.aspectj.weaver.patterns.AndPointcut.findResidueInternal(AndPointcut.java:93)
at org.aspectj.weaver.patterns.Pointcut.findResidue(Pointcut.java:267)
at org.aspectj.weaver.patterns.AndPointcut.findResidueInternal(AndPointcut.java:93)
at org.aspectj.weaver.patterns.Pointcut.findResidue(Pointcut.java:267)
at org.aspectj.weaver.bcel.BcelAdvice.specializeOn(BcelAdvice.java:132)
at org.aspectj.weaver.bcel.BcelShadow.prepareForMungers(BcelShadow.java:325)
at org.aspectj.weaver.Shadow.implement(Shadow.java:455)
at org.aspectj.weaver.bcel.BcelClassWeaver.implement(BcelClassWeaver.java:2236)
at org.aspectj.weaver.bcel.BcelClassWeaver.weave(BcelClassWeaver.java:491)
at org.aspectj.weaver.bcel.BcelClassWeaver.weave(BcelClassWeaver.java:109)
at org.aspectj.weaver.bcel.BcelWeaver.weave(BcelWeaver.java:1560)
at org.aspectj.weaver.bcel.BcelWeaver.weaveWithoutDump(BcelWeaver.java:1511)
at org.aspectj.weaver.bcel.BcelWeaver.weaveAndNotify(BcelWeaver.java:1291)
at org.aspectj.weaver.bcel.BcelWeaver.weave(BcelWeaver.java:1113)
at org.aspectj.ajdt.internal.compiler.AjCompilerAdapter.weave(AjCompilerAdapter.java:311)
at org.aspectj.ajdt.internal.compiler.AjCompilerAdapter.afterCompiling(AjCompilerAdapter.java:183)
at org.aspectj.ajdt.internal.compiler.CompilerAdapter.ajc$afterReturning$org_aspectj_ajdt_internal_compiler_CompilerAdapter$2$f9cc9ca0(CompilerAdapter.aj:70)
at org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:367)
at org.aspectj.ajdt.internal.core.builder.AjBuildManager.performCompilation(AjBuildManager.java:862)
at org.aspectj.ajdt.internal.core.builder.AjBuildManager.doBuild(AjBuildManager.java:242)
at org.aspectj.ajdt.internal.core.builder.AjBuildManager.batchBuild(AjBuildManager.java:161)
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 rainbow.RainbowFields extends java.lang.Object:
  private int a
  private int x [RuntimeVisibleAnnotations]
  private int y [RuntimeVisibleAnnotations]
  private int z [RuntimeVisibleAnnotations]
  public void <init>():
                    ALOAD_0     // Lrainbow/RainbowFields; this   (line 3)
                    INVOKESPECIAL java.lang.Object.<init> ()V
    constructor-execution(void rainbow.RainbowFields.<init>())
    |               RETURN
    constructor-execution(void rainbow.RainbowFields.<init>())
  end public void <init>()

  public int getA()    org.aspectj.weaver.MethodDeclarationLineNumber: 10:204
:
    method-execution(int rainbow.RainbowFields.getA())
    |               ALOAD_0     // Lrainbow/RainbowFields; this   (line 11)
    | field-get(int rainbow.RainbowFields.a)
    | |             GETFIELD rainbow.RainbowFields.a I
    | field-get(int rainbow.RainbowFields.a)
    |               IRETURN
    method-execution(int rainbow.RainbowFields.getA())
  end public int getA()

  public void setA(int)    org.aspectj.weaver.MethodDeclarationLineNumber: 13:244
:
    method-execution(void rainbow.RainbowFields.setA(int))
    |               ALOAD_0     // Lrainbow/RainbowFields; this   (line 14)
    |               ILOAD_1     // I a
    | field-set(int rainbow.RainbowFields.a)
    | |             PUTFIELD rainbow.RainbowFields.a I
    | field-set(int rainbow.RainbowFields.a)
    |               RETURN   (line 15)
    method-execution(void rainbow.RainbowFields.setA(int))
  end public void setA(int)

  public int getX()    org.aspectj.weaver.MethodDeclarationLineNumber: 16:290
:
    method-execution(int rainbow.RainbowFields.getX())
    |               ALOAD_0     // Lrainbow/RainbowFields; this   (line 17)
    | field-get(int rainbow.RainbowFields.x)
    | |             GETFIELD rainbow.RainbowFields.x I
    | field-get(int rainbow.RainbowFields.x)
    |               IRETURN
    method-execution(int rainbow.RainbowFields.getX())
  end public int getX()

  public void setX(int)    org.aspectj.weaver.MethodDeclarationLineNumber: 19:330
:
    method-execution(void rainbow.RainbowFields.setX(int))
    |               ALOAD_0     // Lrainbow/RainbowFields; this   (line 20)
    |               ILOAD_1     // I x
    | field-set(int rainbow.RainbowFields.x)
    | |             PUTFIELD rainbow.RainbowFields.x I
    | field-set(int rainbow.RainbowFields.x)
    |               RETURN   (line 21)
    method-execution(void rainbow.RainbowFields.setX(int))
  end public void setX(int)

  public int getY()    org.aspectj.weaver.MethodDeclarationLineNumber: 22:376
:
    method-execution(int rainbow.RainbowFields.getY())
    |               ALOAD_0     // Lrainbow/RainbowFields; this   (line 23)
    | field-get(int rainbow.RainbowFields.y)
    | |             GETFIELD rainbow.RainbowFields.y I
    | field-get(int rainbow.RainbowFields.y)
    |               IRETURN
    method-execution(int rainbow.RainbowFields.getY())
  end public int getY()

  public void setY(int)    org.aspectj.weaver.MethodDeclarationLineNumber: 25:416
:
    method-execution(void rainbow.RainbowFields.setY(int))
    |               ALOAD_0     // Lrainbow/RainbowFields; this   (line 26)
    |               ILOAD_1     // I y
    | field-set(int rainbow.RainbowFields.y)
    | |             PUTFIELD rainbow.RainbowFields.y I
    | field-set(int rainbow.RainbowFields.y)
    |               RETURN   (line 27)
    method-execution(void rainbow.RainbowFields.setY(int))
  end public void setY(int)

  public int getZ()    org.aspectj.weaver.MethodDeclarationLineNumber: 28:462
:
    method-execution(int rainbow.RainbowFields.getZ())
    |               ALOAD_0     // Lrainbow/RainbowFields; this   (line 29)
    | field-get(int rainbow.RainbowFields.z)
    | |             GETFIELD rainbow.RainbowFields.z I
    | field-get(int rainbow.RainbowFields.z)
    |               IRETURN
    method-execution(int rainbow.RainbowFields.getZ())
  end public int getZ()

  public void setZ(int)    org.aspectj.weaver.MethodDeclarationLineNumber: 31:502
:
    method-execution(void rainbow.RainbowFields.setZ(int))
    |               ALOAD_0     // Lrainbow/RainbowFields; this   (line 32)
    |               ILOAD_1     // I z
    | field-set(int rainbow.RainbowFields.z)
    | |             PUTFIELD rainbow.RainbowFields.z I
    | field-set(int rainbow.RainbowFields.z)
    |               RETURN   (line 33)
    method-execution(void rainbow.RainbowFields.setZ(int))
  end public void setZ(int)

end public class rainbow.RainbowFields

when implementing on shadow field-set(int rainbow.RainbowFields.a)
when weaving type rainbow.RainbowFields
when weaving classes 
when weaving 
when batch building BuildConfig[C:\cygwin\home\Adrian\projects\aop-course-labs-and-samples-new\.metadata\.plugins\org.eclipse.ajdt.core\Pointcuts lab 3 - solution.generated.lst] #Files=12
Comment 1 Adrian Colyer CLA 2006-06-02 08:38:39 EDT
works in cvs version, just not in latest AJDT for Eclipse 3.1...

*** This bug has been marked as a duplicate of 138223 ***