summaryrefslogtreecommitdiffstats
path: root/org.aspectj.ajdt.core
diff options
context:
space:
mode:
authorjhugunin <jhugunin>2002-12-18 05:08:49 +0000
committerjhugunin <jhugunin>2002-12-18 05:08:49 +0000
commitd38aec6e4f0ffea34a3f46d0148c69a69408e699 (patch)
tree49fa3c9bfe1a4367c749e2adab0a7d5ec95128ac /org.aspectj.ajdt.core
parent80f6a5625488080cd0eeb32d54d71d4b6c9ef9a8 (diff)
downloadaspectj-d38aec6e4f0ffea34a3f46d0148c69a69408e699.tar.gz
aspectj-d38aec6e4f0ffea34a3f46d0148c69a69408e699.zip
more bug fixes for if and privileged
Diffstat (limited to 'org.aspectj.ajdt.core')
-rw-r--r--org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/IfMethodDeclaration.java5
-rw-r--r--org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/InterTypeConstructorDeclaration.java2
-rw-r--r--org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/InterTypeMethodDeclaration.java2
-rw-r--r--org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/SuperFixerVisitor.java3
-rw-r--r--org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseWorld.java2
-rw-r--r--org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/PrivilegedFieldBinding.java8
-rw-r--r--org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/PrivilegedHandler.java10
7 files changed, 26 insertions, 6 deletions
diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/IfMethodDeclaration.java b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/IfMethodDeclaration.java
index 1bca70dfb..fc96e272d 100644
--- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/IfMethodDeclaration.java
+++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/IfMethodDeclaration.java
@@ -16,6 +16,7 @@ package org.aspectj.ajdt.internal.compiler.ast;
import org.aspectj.ajdt.internal.compiler.lookup.EclipseWorld;
import org.aspectj.weaver.*;
import org.aspectj.weaver.patterns.IfPointcut;
+import org.eclipse.jdt.internal.compiler.*;
import org.eclipse.jdt.internal.compiler.CompilationResult;
import org.eclipse.jdt.internal.compiler.ast.*;
import org.eclipse.jdt.internal.compiler.lookup.*;
@@ -36,6 +37,10 @@ public class IfMethodDeclaration extends MethodDeclaration {
// do nothing, we're already fully parsed
}
+ protected int generateInfoAttributes(ClassFile classFile) {
+ return classFile.generateMethodInfoAttribute(binding, AstUtil.getAjSyntheticAttribute());
+ }
+
public void resolveStatements(ClassScope upperScope) {
super.resolveStatements(upperScope);
if (binding != null) {
diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/InterTypeConstructorDeclaration.java b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/InterTypeConstructorDeclaration.java
index 275a3bc04..286161689 100644
--- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/InterTypeConstructorDeclaration.java
+++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/InterTypeConstructorDeclaration.java
@@ -222,7 +222,7 @@ public class InterTypeConstructorDeclaration extends InterTypeDeclaration {
private AjAttribute makeAttribute(EclipseWorld world) {
- if (explicitConstructorCall != null) {
+ if (explicitConstructorCall != null && !(explicitConstructorCall.binding instanceof ProblemMethodBinding)) {
MethodBinding explicitConstructor = explicitConstructorCall.binding;
if (explicitConstructor.alwaysNeedsAccessMethod()) {
explicitConstructor = explicitConstructor.getAccessMethod();
diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/InterTypeMethodDeclaration.java b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/InterTypeMethodDeclaration.java
index 8190809ea..8b54aaf1e 100644
--- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/InterTypeMethodDeclaration.java
+++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/InterTypeMethodDeclaration.java
@@ -98,7 +98,7 @@ public class InterTypeMethodDeclaration extends InterTypeDeclaration {
public void generateCode(ClassScope classScope, ClassFile classFile) {
if (ignoreFurtherInvestigation) {
- System.err.println("no code for " + this);
+ //System.err.println("no code for " + this);
return;
}
diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/SuperFixerVisitor.java b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/SuperFixerVisitor.java
index ab564f9f4..6e4afab54 100644
--- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/SuperFixerVisitor.java
+++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/SuperFixerVisitor.java
@@ -46,6 +46,9 @@ public class SuperFixerVisitor extends AbstractSyntaxTreeVisitorAdapter {
if (call.codegenBinding == null) return;
MethodBinding superBinding = call.codegenBinding;
+ if (superBinding instanceof ProblemMethodBinding) {
+ return;
+ }
char[] accessName;
boolean isSuper;
if (call.isSuperAccess() && !call.binding.isStatic()) {
diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseWorld.java b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseWorld.java
index f7e74ddc2..7ada86e4f 100644
--- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseWorld.java
+++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseWorld.java
@@ -141,7 +141,7 @@ public class EclipseWorld extends World {
public static ResolvedMember makeResolvedMember(MethodBinding binding) {
return new ResolvedMember(
- Member.METHOD,
+ binding.isConstructor() ? Member.CONSTRUCTOR : Member.METHOD,
fromBinding(binding.declaringClass),
binding.modifiers,
fromBinding(binding.returnType),
diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/PrivilegedFieldBinding.java b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/PrivilegedFieldBinding.java
index bd5ac958a..d8e7107ee 100644
--- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/PrivilegedFieldBinding.java
+++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/PrivilegedFieldBinding.java
@@ -19,6 +19,7 @@ import org.aspectj.ajdt.internal.compiler.ast.*;
import org.aspectj.ajdt.internal.compiler.ast.AstUtil;
import org.aspectj.weaver.*;
import org.aspectj.weaver.NameMangler;
+import org.eclipse.jdt.internal.compiler.ast.*;
import org.eclipse.jdt.internal.compiler.ast.FieldDeclaration;
import org.eclipse.jdt.internal.compiler.impl.Constant;
import org.eclipse.jdt.internal.compiler.lookup.*;
@@ -43,6 +44,9 @@ public class PrivilegedFieldBinding extends FieldBinding {
AjcMemberMaker.privilegedAccessMethodForFieldSet(
inAspect.typeX, inAspect.world.makeResolvedMember(baseField)
)));
+
+ this.constant = AstNode.NotAConstant;
+ this.baseField = baseField;
}
@@ -59,8 +63,10 @@ public class PrivilegedFieldBinding extends FieldBinding {
public boolean alwaysNeedsAccessMethod(boolean isReadAccess) { return true; }
-
+ public FieldBinding getFieldBindingForLookup() { return baseField; }
+
+ public String toString() { return "PrivilegedWrapper(" + baseField + ")"; }
// public ReferenceBinding getTargetType() {
// return introducedField.declaringClass;
// }
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 640df12b0..ecf773c76 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
@@ -40,9 +40,15 @@ public class PrivilegedHandler implements IPrivilegedHandler {
public MethodBinding getPrivilegedAccessMethod(MethodBinding baseMethod) {
ResolvedMember key = inAspect.world.makeResolvedMember(baseMethod);
if (accessors.containsKey(key)) return (MethodBinding)accessors.get(key);
- MethodBinding ret = inAspect.world.makeMethodBinding(
+
+ MethodBinding ret;
+ if (baseMethod.isConstructor()) {
+ ret = baseMethod;
+ } else {
+ ret = inAspect.world.makeMethodBinding(
AjcMemberMaker.privilegedAccessMethodForMethod(inAspect.typeX, key)
- );
+ );
+ }
//new PrivilegedMethodBinding(inAspect, baseMethod);
accessors.put(key, ret);