summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoraclement <aclement>2006-05-05 09:46:43 +0000
committeraclement <aclement>2006-05-05 09:46:43 +0000
commit299c3a4f2c5205102b89d63c4a8f1bccb158eef1 (patch)
treedfa7756b4339287d687197b0b6066bfcfecb8583
parent14e2901d1f975cbdbc2813e813de25df3ff1fbab (diff)
downloadaspectj-299c3a4f2c5205102b89d63c4a8f1bccb158eef1.tar.gz
aspectj-299c3a4f2c5205102b89d63c4a8f1bccb158eef1.zip
test and fix for 134371
-rw-r--r--org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/AspectDeclaration.java3
-rw-r--r--org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseFactory.java5
-rw-r--r--org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/core/builder/AjState.java3
-rw-r--r--tests/multiIncremental/PR134371/base/A.aj5
-rw-r--r--tests/multiIncremental/PR134371/inc1/A.aj5
-rw-r--r--tests/src/org/aspectj/systemtest/incremental/tools/MultiProjectIncrementalTests.java11
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