1.1 --- a/src/share/classes/com/sun/tools/javac/api/JavacTrees.java Wed Sep 14 12:07:50 2011 -0700 1.2 +++ b/src/share/classes/com/sun/tools/javac/api/JavacTrees.java Wed Sep 14 12:14:30 2011 -0700 1.3 @@ -65,6 +65,7 @@ 1.4 import com.sun.tools.javac.tree.TreeCopier; 1.5 import com.sun.tools.javac.tree.TreeInfo; 1.6 import com.sun.tools.javac.tree.TreeMaker; 1.7 +import com.sun.tools.javac.util.Assert; 1.8 import com.sun.tools.javac.util.Context; 1.9 import com.sun.tools.javac.util.JCDiagnostic; 1.10 import com.sun.tools.javac.util.List; 1.11 @@ -263,9 +264,10 @@ 1.12 if (!(path.getLeaf() instanceof JCTree)) // implicit null-check 1.13 throw new IllegalArgumentException(); 1.14 1.15 - // if we're being invoked via from a JSR199 client, we need to make sure 1.16 - // all the classes have been entered; if we're being invoked from JSR269, 1.17 - // then the classes will already have been entered. 1.18 + // if we're being invoked from a Tree API client via parse/enter/analyze, 1.19 + // we need to make sure all the classes have been entered; 1.20 + // if we're being invoked from JSR 199 or JSR 269, then the classes 1.21 + // will already have been entered. 1.22 if (javacTaskImpl != null) { 1.23 try { 1.24 javacTaskImpl.enter(null); 1.25 @@ -313,10 +315,19 @@ 1.26 break; 1.27 case BLOCK: { 1.28 // System.err.println("BLOCK: "); 1.29 - if (method != null) 1.30 - env = memberEnter.getMethodEnv(method, env); 1.31 - JCTree body = copier.copy((JCTree)tree, (JCTree) path.getLeaf()); 1.32 - env = attribStatToTree(body, env, copier.leafCopy); 1.33 + if (method != null) { 1.34 + try { 1.35 + Assert.check(method.body == tree); 1.36 + method.body = copier.copy((JCBlock)tree, (JCTree) path.getLeaf()); 1.37 + env = memberEnter.getMethodEnv(method, env); 1.38 + env = attribStatToTree(method.body, env, copier.leafCopy); 1.39 + } finally { 1.40 + method.body = (JCBlock) tree; 1.41 + } 1.42 + } else { 1.43 + JCBlock body = copier.copy((JCBlock)tree, (JCTree) path.getLeaf()); 1.44 + env = attribStatToTree(body, env, copier.leafCopy); 1.45 + } 1.46 return env; 1.47 } 1.48 default: 1.49 @@ -329,7 +340,7 @@ 1.50 } 1.51 } 1.52 } 1.53 - return field != null ? memberEnter.getInitEnv(field, env) : env; 1.54 + return (field != null) ? memberEnter.getInitEnv(field, env) : env; 1.55 } 1.56 1.57 private Env<AttrContext> attribStatToTree(JCTree stat, Env<AttrContext>env, JCTree tree) {