--- 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;