Bug 314840 - [plan] ArrayIndexOutOfBoundsException - annotation style joinpoints
Summary: [plan] ArrayIndexOutOfBoundsException - annotation style joinpoints
Status: RESOLVED FIXED
Alias: None
Product: AspectJ
Classification: Tools
Component: Compiler (show other bugs)
Version: unspecified   Edit
Hardware: PC Windows XP
: P2 major (vote)
Target Milestone: 1.6.9   Edit
Assignee: aspectj inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-05-28 07:00 EDT by Mohan Radhakrishnan CLA
Modified: 2010-05-28 16:52 EDT (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Mohan Radhakrishnan CLA 2010-05-28 07:00:54 EDT
Build Identifier: I20100429-1549



Internal compiler error java.lang.ArrayIndexOutOfBoundsException: 3 at 
 org.aspectj.weaver.bcel.BcelWeaver.validateSingleBranchRecursion(BcelWeaver.java:836) at 
 org.aspectj.weaver.bcel.BcelWeaver.validateSingleBranchRecursion(BcelWeaver.java:819) at 
 org.aspectj.weaver.bcel.BcelWeaver.validateSingleBranchRecursion(BcelWeaver.java:818) at 
 org.aspectj.weaver.bcel.BcelWeaver.validateSingleBranch(BcelWeaver.java:785) at 
 org.aspectj.weaver.bcel.BcelWeaver.validateBindings(BcelWeaver.java:732) at 
 org.aspectj.weaver.bcel.BcelWeaver.rewritePointcuts(BcelWeaver.java:652) at 
 org.aspectj.weaver.bcel.BcelWeaver.prepareForWeave(BcelWeaver.java:540) at 
 org.aspectj.ajdt.internal.compiler.AjPipeliningCompilerAdapter.ensureWeaverInitialized
 (AjPipeliningCompilerAdapter.java:472) at 
 org.aspectj.ajdt.internal.compiler.AjPipeliningCompilerAdapter.weaveQueuedEntries
 (AjPipeliningCompilerAdapter.java:452) at 
 org.aspectj.ajdt.internal.compiler.AjPipeliningCompilerAdapter.queueForWeaving
 (AjPipeliningCompilerAdapter.java:390) at 
 org.aspectj.ajdt.internal.compiler.AjPipeliningCompilerAdapter.afterProcessing
 (AjPipeliningCompilerAdapter.java:375) 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:652) at 
 org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:392) at 
 org.aspectj.ajdt.internal.core.builder.AjBuildManager.performCompilation(AjBuildManager.java:1022) 
 at org.aspectj.ajdt.internal.core.builder.AjBuildManager.performBuild(AjBuildManager.java:305) at 
 org.aspectj.ajdt.internal.core.builder.AjBuildManager.incrementalBuild(AjBuildManager.java:185) at 
 org.aspectj.ajde.core.internal.AjdeCoreBuildManager.performBuild(AjdeCoreBuildManager.java:127) 
 at org.aspectj.ajde.core.AjCompiler.build(AjCompiler.java:88) at 
 org.eclipse.ajdt.core.builder.AJBuilder.build(AJBuilder.java:245) at 
 org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:629) at 
 org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at 
 org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:172) at 
 org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:203) at 
 org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:255) at 
 org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at 
 org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:258) at 
 org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:311) at 
 org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:343) at 
 org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:144) at 
 org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:242) at 
 org.eclipse.core.internal.jobs.Worker.run(

Reproducible: Always

Steps to Reproduce:
Compile these classes

-----------Aspect-------------

package com.test;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Pointcut;

public aspect Arguments {

	@Pointcut("execution(@Test * *(..)) && @annotation(test) && @within( test1 ) && this(test2)")
	public void unit(Test2 test2, Test1 test1, Test test) {
	}

    @Around("execution(@Test * *(..)) && @annotation(test) && @within( test1 ) && this(test2)")
	public void test( ProceedingJoinPoint pjp,
			  Test test2,
	                  Test1 test1,
	                  Test test){
		
	}

-----------Annotation-------------

package com.test;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Retention( RetentionPolicy.RUNTIME )
@Target({ ElementType.METHOD })
public @interface Test {

}

-----------Annotation-------------

package com.test;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Retention( RetentionPolicy.RUNTIME )
@Target({ ElementType.METHOD })
public @interface Test1 {

}

-----------Class-------------


package com.test;

public class Test2 {

}


}
Comment 1 Andrew Clement CLA 2010-05-28 15:12:14 EDT
this occurs because you are defining annotation style pointcuts inside a code style aspect.  Can you make the aspect annotation style too??
Comment 2 Andrew Clement CLA 2010-05-28 16:52:54 EDT
fixed. thanks for the testcode