diff options
author | aclement <aclement> | 2006-05-05 09:46:43 +0000 |
---|---|---|
committer | aclement <aclement> | 2006-05-05 09:46:43 +0000 |
commit | 299c3a4f2c5205102b89d63c4a8f1bccb158eef1 (patch) | |
tree | dfa7756b4339287d687197b0b6066bfcfecb8583 | |
parent | 14e2901d1f975cbdbc2813e813de25df3ff1fbab (diff) | |
download | aspectj-299c3a4f2c5205102b89d63c4a8f1bccb158eef1.tar.gz aspectj-299c3a4f2c5205102b89d63c4a8f1bccb158eef1.zip |
test and fix for 134371
6 files changed, 27 insertions, 5 deletions
diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/AspectDeclaration.java b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/AspectDeclaration.java index 45c710cb3..a28832c4a 100644 --- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/AspectDeclaration.java +++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/AspectDeclaration.java @@ -359,7 +359,6 @@ public class AspectDeclaration extends TypeDeclaration { } else if (perClause.getKind() == PerClause.PEROBJECT) { TypeBinding interfaceType = generatePerObjectInterface(classFile); - world.addTypeBinding(interfaceType); generatePerObjectAspectOfMethod(classFile, interfaceType); generatePerObjectHasAspectMethod(classFile, interfaceType); generatePerObjectBindMethod(classFile, interfaceType); @@ -541,7 +540,7 @@ public class AspectDeclaration extends TypeDeclaration { AjcMemberMaker.perObjectInterfaceType(typeX); HelperInterfaceBinding interfaceType = new HelperInterfaceBinding(this.binding, interfaceTypeX); - world.addTypeBinding(interfaceType); + world.addTypeBindingAndStoreInWorld(interfaceType); interfaceType.addMethod(world, AjcMemberMaker.perObjectInterfaceGet(typeX)); interfaceType.addMethod(world, AjcMemberMaker.perObjectInterfaceSet(typeX)); interfaceType.generateClass(compilationResult, classFile); diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseFactory.java b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseFactory.java index 41c4e24fb..a2b86ca06 100644 --- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseFactory.java +++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseFactory.java @@ -932,6 +932,11 @@ public class EclipseFactory { typexToBinding.put(fromBinding(binding), binding); } + public void addTypeBindingAndStoreInWorld(TypeBinding binding) { + UnresolvedType ut = fromBinding(binding); + typexToBinding.put(ut, binding); + world.lookupOrCreateName(ut); + } public Shadow makeShadow(ASTNode location, ReferenceContext context) { return EclipseShadow.makeShadow(this, location, context); diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/core/builder/AjState.java b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/core/builder/AjState.java index c450348ab..e83bade13 100644 --- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/core/builder/AjState.java +++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/core/builder/AjState.java @@ -46,7 +46,6 @@ import org.aspectj.org.eclipse.jdt.internal.core.builder.StringSet; import org.aspectj.util.FileUtil; import org.aspectj.weaver.BCException; import org.aspectj.weaver.IWeaver; -import org.aspectj.weaver.ReferenceType; import org.aspectj.weaver.ResolvedMember; import org.aspectj.weaver.ResolvedType; import org.aspectj.weaver.UnresolvedType; @@ -780,7 +779,7 @@ public class AjState { } CompactStructureRepresentation existingStructure = (CompactStructureRepresentation) this.resolvedTypeStructuresFromLastBuild.get(thisTime.getClassName()); - ReferenceType newResolvedType = (ReferenceType) world.resolve(thisTime.getClassName()); + ResolvedType newResolvedType = world.resolve(thisTime.getClassName()); if (!newResolvedType.isMissing()) { try { ClassFileReader reader = new ClassFileReader(thisTime.getBytes(), null); diff --git a/tests/multiIncremental/PR134371/base/A.aj b/tests/multiIncremental/PR134371/base/A.aj new file mode 100644 index 000000000..70e78cf68 --- /dev/null +++ b/tests/multiIncremental/PR134371/base/A.aj @@ -0,0 +1,5 @@ +public abstract aspect A perthis(annotatedClasses()) { + + pointcut annotatedClasses(); + +} diff --git a/tests/multiIncremental/PR134371/inc1/A.aj b/tests/multiIncremental/PR134371/inc1/A.aj new file mode 100644 index 000000000..d2e253938 --- /dev/null +++ b/tests/multiIncremental/PR134371/inc1/A.aj @@ -0,0 +1,5 @@ +public aspect A perthis(annotatedClasses()) { + + pointcut annotatedClasses(); + +} diff --git a/tests/src/org/aspectj/systemtest/incremental/tools/MultiProjectIncrementalTests.java b/tests/src/org/aspectj/systemtest/incremental/tools/MultiProjectIncrementalTests.java index 9cea1637a..df8ce4ab4 100644 --- a/tests/src/org/aspectj/systemtest/incremental/tools/MultiProjectIncrementalTests.java +++ b/tests/src/org/aspectj/systemtest/incremental/tools/MultiProjectIncrementalTests.java @@ -160,7 +160,16 @@ public class MultiProjectIncrementalTests extends AjdeInteractionTestbed { build("P1"); checkWasFullBuild(); // adding an aspect makes us go back to the source } - + + public void testPr134371() { + initialiseProject("PR134371"); + build("PR134371"); + alter("PR134371","inc1"); + build("PR134371"); + assertTrue("There should be no exceptions handled:\n"+MyErrorHandler.getErrorMessages(), + MyErrorHandler.getErrorMessages().isEmpty()); + + } /** * Setup up two simple projects and build them in turn - check the |