equal
deleted
inserted
replaced
52 import com.sun.tools.javac.util.JCDiagnostic.DiagnosticPosition; |
52 import com.sun.tools.javac.util.JCDiagnostic.DiagnosticPosition; |
53 import com.sun.tools.javac.util.JCDiagnostic.DiagnosticType; |
53 import com.sun.tools.javac.util.JCDiagnostic.DiagnosticType; |
54 |
54 |
55 import java.util.Arrays; |
55 import java.util.Arrays; |
56 import java.util.Collection; |
56 import java.util.Collection; |
57 import java.util.EnumMap; |
|
58 import java.util.EnumSet; |
57 import java.util.EnumSet; |
59 import java.util.Iterator; |
58 import java.util.Iterator; |
60 import java.util.LinkedHashMap; |
59 import java.util.LinkedHashMap; |
61 import java.util.LinkedHashSet; |
|
62 import java.util.Map; |
60 import java.util.Map; |
63 |
61 |
64 import javax.lang.model.element.ElementVisitor; |
62 import javax.lang.model.element.ElementVisitor; |
65 |
63 |
66 import static com.sun.tools.javac.code.Flags.*; |
64 import static com.sun.tools.javac.code.Flags.*; |
90 Infer infer; |
88 Infer infer; |
91 ClassFinder finder; |
89 ClassFinder finder; |
92 TreeInfo treeinfo; |
90 TreeInfo treeinfo; |
93 Types types; |
91 Types types; |
94 JCDiagnostic.Factory diags; |
92 JCDiagnostic.Factory diags; |
95 public final boolean boxingEnabled; |
|
96 public final boolean varargsEnabled; |
|
97 public final boolean allowMethodHandles; |
93 public final boolean allowMethodHandles; |
98 public final boolean allowFunctionalInterfaceMostSpecific; |
94 public final boolean allowFunctionalInterfaceMostSpecific; |
99 public final boolean checkVarargsAccessAfterResolution; |
95 public final boolean checkVarargsAccessAfterResolution; |
100 private final boolean debugResolve; |
96 private final boolean debugResolve; |
101 private final boolean compactMethodDiags; |
97 private final boolean compactMethodDiags; |
126 finder = ClassFinder.instance(context); |
122 finder = ClassFinder.instance(context); |
127 treeinfo = TreeInfo.instance(context); |
123 treeinfo = TreeInfo.instance(context); |
128 types = Types.instance(context); |
124 types = Types.instance(context); |
129 diags = JCDiagnostic.Factory.instance(context); |
125 diags = JCDiagnostic.Factory.instance(context); |
130 Source source = Source.instance(context); |
126 Source source = Source.instance(context); |
131 boxingEnabled = source.allowBoxing(); |
|
132 varargsEnabled = source.allowVarargs(); |
|
133 Options options = Options.instance(context); |
127 Options options = Options.instance(context); |
134 debugResolve = options.isSet("debugresolve"); |
128 debugResolve = options.isSet("debugresolve"); |
135 compactMethodDiags = options.isSet(Option.XDIAGS, "compact") || |
129 compactMethodDiags = options.isSet(Option.XDIAGS, "compact") || |
136 options.isUnset(Option.XDIAGS) && options.isUnset("rawDiagnostics"); |
130 options.isUnset(Option.XDIAGS) && options.isUnset("rawDiagnostics"); |
137 verboseResolutionMode = VerboseResolutionMode.getVerboseResolutionMode(options); |
131 verboseResolutionMode = VerboseResolutionMode.getVerboseResolutionMode(options); |
3277 MethodResolutionContext prevResolutionContext = currentResolutionContext; |
3271 MethodResolutionContext prevResolutionContext = currentResolutionContext; |
3278 try { |
3272 try { |
3279 Symbol bestSoFar = methodNotFound; |
3273 Symbol bestSoFar = methodNotFound; |
3280 currentResolutionContext = resolveContext; |
3274 currentResolutionContext = resolveContext; |
3281 for (MethodResolutionPhase phase : methodResolutionSteps) { |
3275 for (MethodResolutionPhase phase : methodResolutionSteps) { |
3282 if (!phase.isApplicable(boxingEnabled, varargsEnabled) || |
3276 if (lookupHelper.shouldStop(bestSoFar, phase)) |
3283 lookupHelper.shouldStop(bestSoFar, phase)) break; |
3277 break; |
3284 MethodResolutionPhase prevPhase = currentResolutionContext.step; |
3278 MethodResolutionPhase prevPhase = currentResolutionContext.step; |
3285 Symbol prevBest = bestSoFar; |
3279 Symbol prevBest = bestSoFar; |
3286 currentResolutionContext.step = phase; |
3280 currentResolutionContext.step = phase; |
3287 Symbol sym = lookupHelper.lookup(env, phase); |
3281 Symbol sym = lookupHelper.lookup(env, phase); |
3288 lookupHelper.debug(pos, sym); |
3282 lookupHelper.debug(pos, sym); |
4206 |
4200 |
4207 public boolean isVarargsRequired() { |
4201 public boolean isVarargsRequired() { |
4208 return isVarargsRequired; |
4202 return isVarargsRequired; |
4209 } |
4203 } |
4210 |
4204 |
4211 public boolean isApplicable(boolean boxingEnabled, boolean varargsEnabled) { |
|
4212 return (varargsEnabled || !isVarargsRequired) && |
|
4213 (boxingEnabled || !isBoxingRequired); |
|
4214 } |
|
4215 |
|
4216 public Symbol mergeResults(Symbol prev, Symbol sym) { |
4205 public Symbol mergeResults(Symbol prev, Symbol sym) { |
4217 return sym; |
4206 return sym; |
4218 } |
4207 } |
4219 } |
4208 } |
4220 |
4209 |