summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoraclement <aclement>2005-03-10 17:48:35 +0000
committeraclement <aclement>2005-03-10 17:48:35 +0000
commitde51a678544b34ccfbdab7be682785bfa5755f95 (patch)
tree0a8a9735c665f322c96f5aa9e377cb77ef02244b
parent263b1005e8356106b9071b5ea43a0a804cc8beed (diff)
downloadaspectj-de51a678544b34ccfbdab7be682785bfa5755f95.tar.gz
aspectj-de51a678544b34ccfbdab7be682785bfa5755f95.zip
Declare annotation: Doesnt report errors for annotations attached incorrectly (due to use of @target) to ajc$declare_ methods.
-rw-r--r--org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/problem/AjProblemReporter.java11
1 files changed, 9 insertions, 2 deletions
diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/problem/AjProblemReporter.java b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/problem/AjProblemReporter.java
index 63648a82f..34831fd82 100644
--- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/problem/AjProblemReporter.java
+++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/problem/AjProblemReporter.java
@@ -30,7 +30,6 @@ import org.aspectj.org.eclipse.jdt.internal.compiler.ast.Annotation;
import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ExplicitConstructorCall;
import org.aspectj.org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
import org.aspectj.org.eclipse.jdt.internal.compiler.impl.ReferenceContext;
-import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Binding;
import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.MethodBinding;
import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding;
import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding;
@@ -43,6 +42,7 @@ import org.aspectj.weaver.ConcreteTypeMunger;
import org.aspectj.weaver.ResolvedMember;
import org.aspectj.weaver.ResolvedTypeX;
import org.aspectj.weaver.Shadow;
+import org.aspectj.weaver.patterns.DeclareAnnotation;
import org.aspectj.weaver.patterns.DeclareSoft;
/**
@@ -231,10 +231,17 @@ public class AjProblemReporter extends ProblemReporter {
long metaTagBits = annotation.resolvedType.getAnnotationTagBits(); // could be forward reference
if (name.indexOf("interField") != -1) {
if ((metaTagBits & TagBits.AnnotationForField) != 0) return;
- } else if (name.indexOf("InterConstructor") != -1) {
+ } else if (name.indexOf("InterConstructor") != -1) { // ??? Should that be Upper case 'I'?
if ((metaTagBits & TagBits.AnnotationForConstructor) != 0) return;
} else if (name.indexOf("interMethod") != -1) {
if ((metaTagBits & TagBits.AnnotationForMethod) != 0) return;
+ } else if (name.indexOf("declare_"+DeclareAnnotation.AT_TYPE+"_")!=-1) {
+ if ((metaTagBits & TagBits.AnnotationForAnnotationType)!=0 ||
+ (metaTagBits & TagBits.AnnotationForType)!=0) return;
+ } else if (name.indexOf("declare_"+DeclareAnnotation.AT_FIELD+"_")!=-1) {
+ if ((metaTagBits & TagBits.AnnotationForField)!=0) return;
+ } else if (name.indexOf("declare_"+DeclareAnnotation.AT_CONSTRUCTOR+"_")!=-1) {
+ if ((metaTagBits & TagBits.AnnotationForConstructor)!=0) return;
}
}
}