--- a/langtools/src/share/classes/com/sun/tools/javac/comp/Lower.java Mon Jun 16 11:30:31 2014 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/comp/Lower.java Tue Jun 17 11:11:59 2014 -0400
@@ -79,6 +79,7 @@
private final ConstFold cfolder;
private final Target target;
private final Source source;
+ private final TypeEnvs typeEnvs;
private final boolean allowEnums;
private final Name dollarAssertionsDisabled;
private final Name classDollar;
@@ -99,6 +100,7 @@
cfolder = ConstFold.instance(context);
target = Target.instance(context);
source = Source.instance(context);
+ typeEnvs = TypeEnvs.instance(context);
allowEnums = source.allowEnums();
dollarAssertionsDisabled = names.
fromString(target.syntheticNameChar() + "assertionsDisabled");
@@ -2450,10 +2452,16 @@
}
public void visitClassDef(JCClassDecl tree) {
+ Env<AttrContext> prevEnv = attrEnv;
ClassSymbol currentClassPrev = currentClass;
MethodSymbol currentMethodSymPrev = currentMethodSym;
+
currentClass = tree.sym;
currentMethodSym = null;
+ attrEnv = typeEnvs.remove(currentClass);
+ if (attrEnv == null)
+ attrEnv = prevEnv;
+
classdefs.put(currentClass, tree);
proxies = proxies.dup(currentClass);
@@ -2525,6 +2533,7 @@
// Append translated tree to `translated' queue.
translated.append(tree);
+ attrEnv = prevEnv;
currentClass = currentClassPrev;
currentMethodSym = currentMethodSymPrev;