diff options
author | jhugunin <jhugunin> | 2003-07-02 23:12:18 +0000 |
---|---|---|
committer | jhugunin <jhugunin> | 2003-07-02 23:12:18 +0000 |
commit | ba41fae6547688e8714d01be27bc81dbbe850f55 (patch) | |
tree | 942e8dfd6ff41b9c2c7d64485734020d9b38b48d /org.aspectj.ajdt.core | |
parent | 2e3c9191a9cb753ff54cf20592dcd0ef14bfc83a (diff) | |
download | aspectj-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')
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; } |