aboutsummaryrefslogtreecommitdiffstats
path: root/org.aspectj.ajdt.core
diff options
context:
space:
mode:
authorjhugunin <jhugunin>2003-07-02 23:12:18 +0000
committerjhugunin <jhugunin>2003-07-02 23:12:18 +0000
commitba41fae6547688e8714d01be27bc81dbbe850f55 (patch)
tree942e8dfd6ff41b9c2c7d64485734020d9b38b48d /org.aspectj.ajdt.core
parent2e3c9191a9cb753ff54cf20592dcd0ef14bfc83a (diff)
downloadaspectj-ba41fae6547688e8714d01be27bc81dbbe850f55.tar.gz
aspectj-ba41fae6547688e8714d01be27bc81dbbe850f55.zip
tests and fixes for two awful error message bugs:
[Bug 39458] New: Compiler crash in ajc 1.1 [Bug 39460] New: Missing import crashes compiler
Diffstat (limited to 'org.aspectj.ajdt.core')
-rw-r--r--org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/AccessForInlineVisitor.java15
-rw-r--r--org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/AdviceDeclaration.java2
-rw-r--r--org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/PrivilegedHandler.java9
3 files changed, 12 insertions, 14 deletions
diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/AccessForInlineVisitor.java b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/AccessForInlineVisitor.java
index 76acd7306..c692d1b4c 100644
--- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/AccessForInlineVisitor.java
+++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/AccessForInlineVisitor.java
@@ -100,7 +100,7 @@ public class AccessForInlineVisitor extends AbstractSyntaxTreeVisitorAdapter {
}
public void endVisit(MessageSend send, BlockScope scope) {
if (send instanceof Proceed) return;
- if (send.binding == null) return;
+ if (send.binding == null || !send.binding.isValidBinding()) return;
if (send.isSuperAccess() && !send.binding.isStatic()) {
send.receiver = new ThisReference(send.sourceStart, send.sourceEnd);
@@ -111,7 +111,7 @@ public class AccessForInlineVisitor extends AbstractSyntaxTreeVisitorAdapter {
}
}
public void endVisit(AllocationExpression send, BlockScope scope) {
- if (send.binding == null) return;
+ if (send.binding == null || !send.binding.isValidBinding()) return;
//XXX TBD
if (isPublic(send.binding)) return;
makePublic(send.binding.declaringClass);
@@ -121,14 +121,14 @@ public class AccessForInlineVisitor extends AbstractSyntaxTreeVisitorAdapter {
QualifiedTypeReference ref,
BlockScope scope)
{
- makePublic(ref.getTypeBinding(scope)); //??? might be trouble
+ makePublic(ref.resolvedType); //getTypeBinding(scope)); //??? might be trouble
}
public void endVisit(
SingleTypeReference ref,
BlockScope scope)
{
- makePublic(ref.getTypeBinding(scope)); //??? might be trouble
+ makePublic(ref.resolvedType); //getTypeBinding(scope)); //??? might be trouble
}
private FieldBinding getAccessibleField(FieldBinding binding) {
@@ -208,16 +208,11 @@ public class AccessForInlineVisitor extends AbstractSyntaxTreeVisitorAdapter {
return;
}
}
- /* (non-Javadoc)
- * @see org.eclipse.jdt.internal.compiler.IAbstractSyntaxTreeVisitor#endVisit(org.eclipse.jdt.internal.compiler.ast.AssertStatement, org.eclipse.jdt.internal.compiler.lookup.BlockScope)
- */
+
public void endVisit(AssertStatement assertStatement, BlockScope scope) {
isInlinable = false;
}
- /* (non-Javadoc)
- * @see org.eclipse.jdt.internal.compiler.IAbstractSyntaxTreeVisitor#endVisit(org.eclipse.jdt.internal.compiler.ast.ClassLiteralAccess, org.eclipse.jdt.internal.compiler.lookup.BlockScope)
- */
public void endVisit(ClassLiteralAccess classLiteral, BlockScope scope) {
isInlinable = false;
}
diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/AdviceDeclaration.java b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/AdviceDeclaration.java
index aabc84624..122760fc2 100644
--- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/AdviceDeclaration.java
+++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/AdviceDeclaration.java
@@ -156,7 +156,7 @@ public class AdviceDeclaration extends MethodDeclaration {
PrivilegedHandler handler = (PrivilegedHandler)upperScope.referenceContext.binding.privilegedHandler;
if (handler == null) {
handler = new PrivilegedHandler((AspectDeclaration)upperScope.referenceContext);
- upperScope.referenceContext.binding.privilegedHandler = handler;
+ //upperScope.referenceContext.binding.privilegedHandler = handler;
}
this.traverse(new MakeDeclsPublicVisitor(), (ClassScope)null);
diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/PrivilegedHandler.java b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/PrivilegedHandler.java
index 3343e0634..ac410b896 100644
--- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/PrivilegedHandler.java
+++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/PrivilegedHandler.java
@@ -19,6 +19,7 @@ import java.util.Iterator;
import java.util.Map;
import org.aspectj.ajdt.internal.compiler.ast.AspectDeclaration;
+import org.aspectj.ajdt.internal.compiler.ast.AstUtil;
import org.aspectj.bridge.ISourceLocation;
import org.aspectj.weaver.AjcMemberMaker;
import org.aspectj.weaver.Lint;
@@ -55,19 +56,21 @@ public class PrivilegedHandler implements IPrivilegedHandler {
public MethodBinding getPrivilegedAccessMethod(MethodBinding baseMethod, AstNode location) {
if (baseMethod.alwaysNeedsAccessMethod()) return baseMethod;
- ResolvedMember key = inAspect.factory.makeResolvedMember(baseMethod);
+ ResolvedMember key = EclipseFactory.makeResolvedMember(baseMethod);
if (accessors.containsKey(key)) return (MethodBinding)accessors.get(key);
MethodBinding ret;
if (baseMethod.isConstructor()) {
- ret = baseMethod;
+ ret = new MethodBinding(baseMethod, baseMethod.declaringClass);
+ ret.modifiers = AstUtil.makePublic(ret.modifiers);
} else {
ret = inAspect.factory.makeMethodBinding(
AjcMemberMaker.privilegedAccessMethodForMethod(inAspect.typeX, key)
);
}
checkWeaveAccess(key.getDeclaringType(), location);
- //new PrivilegedMethodBinding(inAspect, baseMethod);
+ //System.err.println(ret);
+ //Thread.dumpStack();
accessors.put(key, ret);
return ret;
}