diff options
author | aclement <aclement> | 2005-11-23 12:36:28 +0000 |
---|---|---|
committer | aclement <aclement> | 2005-11-23 12:36:28 +0000 |
commit | 504e4300204475cef1254de5d1308863c43b26e7 (patch) | |
tree | 5fe583e1f09db52266c33417419572f95df4789b /org.aspectj.ajdt.core | |
parent | e05df7e5ac7fb91031d8f98d4b93e361918e4b56 (diff) | |
download | aspectj-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.java | 15 |
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()); |