aboutsummaryrefslogtreecommitdiffstats
path: root/org.aspectj.ajdt.core
diff options
context:
space:
mode:
authoraclement <aclement>2005-11-23 12:36:28 +0000
committeraclement <aclement>2005-11-23 12:36:28 +0000
commit504e4300204475cef1254de5d1308863c43b26e7 (patch)
tree5fe583e1f09db52266c33417419572f95df4789b /org.aspectj.ajdt.core
parente05df7e5ac7fb91031d8f98d4b93e361918e4b56 (diff)
downloadaspectj-504e4300204475cef1254de5d1308863c43b26e7.tar.gz
aspectj-504e4300204475cef1254de5d1308863c43b26e7.zip
87525 - new error message (and testcase). Thats all I'm doing on this for 1.5.0
Diffstat (limited to 'org.aspectj.ajdt.core')
-rw-r--r--org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/problem/AjProblemReporter.java15
1 files changed, 15 insertions, 0 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 5817b50ef..d33fa0ff4 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
@@ -24,6 +24,7 @@ import org.aspectj.ajdt.internal.compiler.ast.PointcutDeclaration;
import org.aspectj.ajdt.internal.compiler.ast.Proceed;
import org.aspectj.ajdt.internal.compiler.lookup.EclipseFactory;
import org.aspectj.ajdt.internal.compiler.lookup.InterTypeMethodBinding;
+import org.aspectj.ajdt.internal.compiler.lookup.PrivilegedFieldBinding;
import org.aspectj.bridge.context.CompilationAndWeavingContext;
import org.aspectj.org.eclipse.jdt.core.compiler.CharOperation;
import org.aspectj.org.eclipse.jdt.core.compiler.IProblem;
@@ -34,7 +35,9 @@ import org.aspectj.org.eclipse.jdt.internal.compiler.ast.ASTNode;
import org.aspectj.org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration;
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.ast.Expression;
import org.aspectj.org.eclipse.jdt.internal.compiler.ast.LocalDeclaration;
+import org.aspectj.org.eclipse.jdt.internal.compiler.ast.QualifiedNameReference;
import org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeDeclaration;
import org.aspectj.org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
import org.aspectj.org.eclipse.jdt.internal.compiler.impl.ReferenceContext;
@@ -417,6 +420,18 @@ public class AjProblemReporter extends ProblemReporter {
super.unusedPrivateMethod(methodDecl);
}
+ public void caseExpressionMustBeConstant(Expression expression) {
+ if (expression instanceof QualifiedNameReference) {
+ QualifiedNameReference qnr = (QualifiedNameReference)expression;
+ if (qnr.otherBindings!=null && qnr.otherBindings.length>0 && qnr.otherBindings[0] instanceof PrivilegedFieldBinding) {
+ super.signalError(expression.sourceStart,expression.sourceEnd,"Fields accessible due to an aspect being privileged can not be used in switch statements");
+ referenceContext.tagAsHavingErrors();
+ return;
+ }
+ }
+ super.caseExpressionMustBeConstant(expression);
+ }
+
public void unusedArgument(LocalDeclaration localDecl) {
// don't warn if this is an aj synthetic arg
String argType = new String(localDecl.type.resolvedType.signature());