summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjhugunin <jhugunin>2002-12-30 20:30:11 +0000
committerjhugunin <jhugunin>2002-12-30 20:30:11 +0000
commit2a76e2727ab817e2e7af3676511a87c08809de97 (patch)
treeb4229cd492bdfbd2e45241938cd78f3329ad7e5a
parent8bc24339ac5a28c60f53f9f178635e66d8729800 (diff)
downloadaspectj-2a76e2727ab817e2e7af3676511a87c08809de97.tar.gz
aspectj-2a76e2727ab817e2e7af3676511a87c08809de97.zip
not allowed on aspects
-rw-r--r--org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/InterTypeConstructorDeclaration.java1
-rw-r--r--weaver/src/org/aspectj/weaver/NewConstructorTypeMunger.java8
2 files changed, 9 insertions, 0 deletions
diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/InterTypeConstructorDeclaration.java b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/InterTypeConstructorDeclaration.java
index 31ce89eef..02970de2d 100644
--- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/InterTypeConstructorDeclaration.java
+++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/InterTypeConstructorDeclaration.java
@@ -211,6 +211,7 @@ public class InterTypeConstructorDeclaration extends InterTypeDeclaration {
NewConstructorTypeMunger myMunger =
new NewConstructorTypeMunger(signature, syntheticInterMember, null, null);
setMunger(myMunger);
+ myMunger.check(world);
this.selector = binding.selector =
NameMangler.postIntroducedConstructor(
diff --git a/weaver/src/org/aspectj/weaver/NewConstructorTypeMunger.java b/weaver/src/org/aspectj/weaver/NewConstructorTypeMunger.java
index 9b23de08d..345fbffcb 100644
--- a/weaver/src/org/aspectj/weaver/NewConstructorTypeMunger.java
+++ b/weaver/src/org/aspectj/weaver/NewConstructorTypeMunger.java
@@ -16,6 +16,7 @@ package org.aspectj.weaver;
import java.io.*;
import java.util.Set;
+import org.aspectj.bridge.IMessage;
import org.aspectj.weaver.ResolvedTypeMunger.Kind;
public class NewConstructorTypeMunger extends ResolvedTypeMunger {
@@ -74,5 +75,12 @@ public class NewConstructorTypeMunger extends ResolvedTypeMunger {
if (ResolvedTypeX.matches(ret, member)) return getSignature();
return super.getMatchingSyntheticMember(member, aspectType);
}
+
+ public void check(World world) {
+ if (getSignature().getDeclaringType().isAspect(world)) {
+ world.showMessage(IMessage.ERROR, "can't declare constructor on an aspect",
+ getSignature().getSourceLocation(), null);
+ }
+ }
}