fixed bugs in other privileged access handlingtags/V_1_1_b2
@@ -49,6 +49,13 @@ public class PrivilegedHandler implements IPrivilegedHandler { | |||
return ret; | |||
} | |||
public void notePrivilegedTypeAccess(ReferenceBinding type) { | |||
ResolvedMember key = | |||
new ResolvedMember(Member.STATIC_INITIALIZATION, | |||
inAspect.world.fromEclipse(type), 0, ResolvedTypeX.VOID, "", TypeX.NONE); | |||
accessors.put(key, key); | |||
} | |||
public ResolvedMember[] getMembers() { | |||
Collection m = accessors.keySet(); | |||
int len = m.size(); | |||
@@ -60,4 +67,6 @@ public class PrivilegedHandler implements IPrivilegedHandler { | |||
return ret; | |||
} | |||
} |
@@ -41,7 +41,7 @@ import org.eclipse.jdt.internal.compiler.util.CharOperation; | |||
* @author Jim Hugunin | |||
*/ | |||
public class AjProblemReporter extends ProblemReporter { | |||
private static final boolean DUMP_STACK = false; | |||
private static final boolean DUMP_STACK = true; | |||
public EclipseWorld world; | |||
@@ -71,6 +71,10 @@ public class BcelTypeMunger extends ConcreteTypeMunger { | |||
} else if (member.getKind() == Member.METHOD) { | |||
addMethodDispatch(gen, member, | |||
AjcMemberMaker.privilegedAccessMethodForMethod(aspectType, member)); | |||
return true; | |||
} else if (member.getKind() == Member.STATIC_INITIALIZATION) { | |||
gen.forcePublic(); | |||
return true; | |||
} else { | |||
throw new RuntimeException("unimplemented"); | |||
} |
@@ -487,4 +487,8 @@ public final class LazyClassGen { | |||
throw new BCException("Class " + this.getName() + " does not have a method " | |||
+ name + " with signature " + signature); | |||
} | |||
public void forcePublic() { | |||
myGen.setAccessFlags(Utility.makePublic(myGen.getAccessFlags())); | |||
} | |||
} |