langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/DeferredAttr.java
changeset 26532 aa84b6606229
parent 26531 c32c9586ea94
child 26781 a786b07c7b91
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/DeferredAttr.java	Mon Sep 08 10:50:59 2014 +0200
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/DeferredAttr.java	Mon Sep 08 13:11:28 2014 +0200
@@ -25,7 +25,6 @@
 
 package com.sun.tools.javac.comp;
 
-import com.sun.source.tree.*;
 import com.sun.source.tree.LambdaExpressionTree.BodyKind;
 import com.sun.tools.javac.code.*;
 import com.sun.tools.javac.tree.*;
@@ -78,7 +77,6 @@
     final Types types;
     final Flow flow;
     final Names names;
-    final Annotate annotate;
     final TypeEnvs typeEnvs;
 
     public static DeferredAttr instance(Context context) {
@@ -103,7 +101,6 @@
         flow = Flow.instance(context);
         names = Names.instance(context);
         stuckTree = make.Ident(names.empty).setType(Type.stuckType);
-        annotate = Annotate.instance(context);
         typeEnvs = TypeEnvs.instance(context);
         emptyDeferredAttrContext =
             new DeferredAttrContext(AttrMode.CHECK, null, MethodResolutionPhase.BOX, infer.emptyContext, null, null) {
@@ -139,8 +136,7 @@
         AttrMode mode;
         SpeculativeCache speculativeCache;
 
-        DeferredType(JCExpression tree,
-                     Env<AttrContext> env) {
+        DeferredType(JCExpression tree, Env<AttrContext> env) {
             super(null, noAnnotations);
             this.tree = tree;
             this.env = attr.copyEnv(env);
@@ -284,18 +280,12 @@
                     //Note: if a symbol is imported twice we might do two identical
                     //speculative rounds...
                     Assert.check(dt.mode == null || dt.mode == AttrMode.SPECULATIVE);
-                    JCTree speculativeTree = attribSpeculative(dt.tree, dt.env,
-                                                               resultInfo,
-                                                               annotate.noCreator);
+                    JCTree speculativeTree = attribSpeculative(dt.tree, dt.env, resultInfo);
                     dt.speculativeCache.put(speculativeTree, resultInfo);
                     return speculativeTree.type;
                 case CHECK:
                     Assert.check(dt.mode != null);
-                    final boolean oldSpeculative = dt.env.info.isSpeculative;
-                    dt.env.info.isSpeculative = false;
-                    Type out = attr.attribTree(dt.tree, dt.env, resultInfo);
-                    dt.env.info.isSpeculative = oldSpeculative;
-                    return out;
+                    return attr.attribTree(dt.tree, dt.env, resultInfo);
             }
             Assert.error();
             return null;
@@ -372,13 +362,9 @@
      * restored after type-checking. All diagnostics (but critical ones) are
      * disabled during speculative type-checking.
      */
-    JCTree attribSpeculative(JCTree tree,
-                             Env<AttrContext> env,
-                             ResultInfo resultInfo,
-                             Annotate.PositionCreator creator) {
+    JCTree attribSpeculative(JCTree tree, Env<AttrContext> env, ResultInfo resultInfo) {
         final JCTree newTree = new TreeCopier<>(make).copy(tree);
         Env<AttrContext> speculativeEnv = env.dup(newTree, env.info.dup(env.info.scope.dupUnshared(env.info.scope.owner)));
-        speculativeEnv.info.isSpeculative = true;
         Log.DeferredDiagnosticHandler deferredDiagnosticHandler =
                 new Log.DeferredDiagnosticHandler(log, new Filter<JCDiagnostic>() {
             public boolean accepts(final JCDiagnostic d) {
@@ -401,9 +387,6 @@
         });
         try {
             attr.attribTree(newTree, speculativeEnv, resultInfo);
-            annotate.typeAnnotateExprLater(newTree, speculativeEnv,
-                                           speculativeEnv.info.scope.owner,
-                                           newTree.pos(), creator);
             unenterScanner.scan(newTree);
             return newTree;
         } finally {
@@ -771,11 +754,8 @@
                         checkContext.report(null, ex.getDiagnostic());
                     }
                     Env<AttrContext> localEnv = env.dup(tree);
-                    JCExpression exprTree =
-                        (JCExpression)attribSpeculative(tree.getQualifierExpression(),
-                                                        localEnv,
-                                                        attr.memberReferenceQualifierResult(tree),
-                                                        annotate.methodRefCreator(tree.pos));
+                    JCExpression exprTree = (JCExpression)attribSpeculative(tree.getQualifierExpression(), localEnv,
+                            attr.memberReferenceQualifierResult(tree));
                     ListBuffer<Type> argtypes = new ListBuffer<>();
                     for (Type t : types.findDescriptorType(pt).getParameterTypes()) {
                         argtypes.append(Type.noType);
@@ -1197,11 +1177,8 @@
         public void visitReference(JCMemberReference tree) {
             //perform arity-based check
             Env<AttrContext> localEnv = env.dup(tree);
-            JCExpression exprTree =
-                (JCExpression)attribSpeculative(tree.getQualifierExpression(),
-                                                localEnv,
-                                                attr.memberReferenceQualifierResult(tree),
-                                                annotate.methodRefCreator(tree.pos));
+            JCExpression exprTree = (JCExpression)attribSpeculative(tree.getQualifierExpression(), localEnv,
+                    attr.memberReferenceQualifierResult(tree));
             JCMemberReference mref2 = new TreeCopier<Void>(make).copy(tree);
             mref2.expr = exprTree;
             Symbol res =
@@ -1345,7 +1322,7 @@
                         return null;
                     site = resolvedReturnType.type;
                 } else {
-                    site = attribSpeculative(rec, env, attr.unknownTypeExprInfo, annotate.noCreator).type;
+                    site = attribSpeculative(rec, env, attr.unknownTypeExprInfo).type;
                 }
             } else {
                 site = env.enclClass.sym.type;