diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallResolver.java index 7e577956fc3..50edcb51b7e 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallResolver.java @@ -45,7 +45,6 @@ import org.jetbrains.jet.lang.types.JetType; import org.jetbrains.jet.lang.types.expressions.ExpressionTypingContext; import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices; import org.jetbrains.jet.lang.types.expressions.ExpressionTypingUtils; -import org.jetbrains.jet.lang.types.expressions.LabelResolver; import org.jetbrains.jet.lexer.JetTokens; import javax.inject.Inject; @@ -111,8 +110,7 @@ public class CallResolver { List> prioritizedTasks = TaskPrioritizer.computePrioritizedTasks( context, referencedName, tracing, callableDescriptorCollectors); - return doResolveCallOrGetCachedResults(ResolutionResultsCache.PROPERTY_MEMBER_TYPE, - context, prioritizedTasks, CallTransformer.PROPERTY_CALL_TRANSFORMER, tracing); + return doResolveCallOrGetCachedResults(context, prioritizedTasks, CallTransformer.PROPERTY_CALL_TRANSFORMER, tracing); } @NotNull @@ -156,8 +154,7 @@ public class CallResolver { ) { List> tasks = TaskPrioritizer.computePrioritizedTasks(context, name, tracing, collectors); - return doResolveCallOrGetCachedResults(ResolutionResultsCache.FUNCTION_MEMBER_TYPE, - context, tasks, CallTransformer.FUNCTION_CALL_TRANSFORMER, tracing); + return doResolveCallOrGetCachedResults(context, tasks, CallTransformer.FUNCTION_CALL_TRANSFORMER, tracing); } @NotNull @@ -300,8 +297,7 @@ public class CallResolver { TracingStrategy tracing = TracingStrategyImpl.create(functionReference, context.call); OverloadResolutionResultsImpl results = doResolveCallOrGetCachedResults( - ResolutionResultsCache.FUNCTION_MEMBER_TYPE, context, prioritizedTasks, - CallTransformer.FUNCTION_CALL_TRANSFORMER, tracing); + context, prioritizedTasks, CallTransformer.FUNCTION_CALL_TRANSFORMER, tracing); if (calleeExpression instanceof JetSimpleNameExpression) { ExpressionTypingUtils.checkCapturingInClosure((JetSimpleNameExpression) calleeExpression, context.trace, context.scope); } @@ -321,12 +317,11 @@ public class CallResolver { List> tasks = TaskPrioritizer.computePrioritizedTasksFromCandidates( basicCallResolutionContext, Collections.singleton(candidate), tracing); - return doResolveCallOrGetCachedResults(ResolutionResultsCache.FUNCTION_MEMBER_TYPE, basicCallResolutionContext, tasks, - CallTransformer.FUNCTION_CALL_TRANSFORMER, tracing); + return doResolveCallOrGetCachedResults( + basicCallResolutionContext, tasks, CallTransformer.FUNCTION_CALL_TRANSFORMER, tracing); } private OverloadResolutionResultsImpl doResolveCallOrGetCachedResults( - @NotNull ResolutionResultsCache.MemberType memberType, @NotNull BasicCallResolutionContext context, @NotNull List> prioritizedTasks, @NotNull CallTransformer callTransformer, @@ -336,7 +331,7 @@ public class CallResolver { TemporaryBindingTrace traceToResolveCall = TemporaryBindingTrace.create(context.trace, "trace to resolve call", context.call); CallKey callKey = CallResolverUtil.createCallKey(context); if (callKey != null) { - OverloadResolutionResultsImpl cachedResults = context.resolutionResultsCache.getResolutionResults(callKey, memberType); + OverloadResolutionResultsImpl cachedResults = context.resolutionResultsCache.getResolutionResults(callKey); if (cachedResults != null) { DelegatingBindingTrace deltasTraceForResolve = context.resolutionResultsCache.getResolutionTrace(callKey); assert deltasTraceForResolve != null; @@ -352,7 +347,7 @@ public class CallResolver { deltasTraceForTypeInference.addAllMyDataTo(traceToResolveCall); } completeTypeInferenceDependentOnFunctionLiterals(newContext, results, tracing); - cacheResults(memberType, context, results, traceToResolveCall, tracing); + cacheResults(context, results, traceToResolveCall, tracing); } traceToResolveCall.commit(); @@ -417,7 +412,6 @@ public class CallResolver { } private static void cacheResults( - @NotNull ResolutionResultsCache.MemberType memberType, @NotNull BasicCallResolutionContext context, @NotNull OverloadResolutionResultsImpl results, @NotNull DelegatingBindingTrace traceToResolveCall, @@ -430,7 +424,7 @@ public class CallResolver { BindingContext.EMPTY, "delta trace for caching resolve of", context.call); traceToResolveCall.addAllMyDataTo(deltasTraceToCacheResolve); - context.resolutionResultsCache.recordResolutionResults(callKey, memberType, results); + context.resolutionResultsCache.recordResolutionResults(callKey, results); context.resolutionResultsCache.recordResolutionTrace(callKey, deltasTraceToCacheResolve); if (results.isSingleResult()) { diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/context/ResolutionResultsCache.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/context/ResolutionResultsCache.java index 4246f294f20..688e5e39a2c 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/context/ResolutionResultsCache.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/context/ResolutionResultsCache.java @@ -19,8 +19,6 @@ package org.jetbrains.jet.lang.resolve.calls.context; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.descriptors.CallableDescriptor; -import org.jetbrains.jet.lang.descriptors.FunctionDescriptor; -import org.jetbrains.jet.lang.descriptors.VariableDescriptor; import org.jetbrains.jet.lang.psi.CallKey; import org.jetbrains.jet.lang.psi.JetExpression; import org.jetbrains.jet.lang.resolve.DelegatingBindingTrace; @@ -28,26 +26,11 @@ import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCallWithTrace; import org.jetbrains.jet.lang.resolve.calls.results.OverloadResolutionResultsImpl; public interface ResolutionResultsCache { - class MemberType { - public final String debugName; - public MemberType(String name) { - debugName = name; - } - - @Override - public String toString() { - return debugName; - } - } - MemberType FUNCTION_MEMBER_TYPE = new MemberType("FUNCTION_MEMBER_TYPE"); - MemberType PROPERTY_MEMBER_TYPE = new MemberType("PROPERTY_MEMBER_TYPE"); - - - void recordResolutionResults(@NotNull CallKey callKey, @NotNull MemberType memberType, @NotNull OverloadResolutionResultsImpl results); + void recordResolutionResults(@NotNull CallKey callKey, @NotNull OverloadResolutionResultsImpl results); @Nullable - OverloadResolutionResultsImpl getResolutionResults(@NotNull CallKey callKey, @NotNull MemberType memberType); + OverloadResolutionResultsImpl getResolutionResults(@NotNull CallKey callKey); void recordResolutionTrace(@NotNull CallKey callKey, @NotNull DelegatingBindingTrace delegatingTrace); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/context/ResolutionResultsCacheImpl.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/context/ResolutionResultsCacheImpl.java index ef0f891b0cb..33c213bd89a 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/context/ResolutionResultsCacheImpl.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/context/ResolutionResultsCacheImpl.java @@ -20,8 +20,6 @@ import com.google.common.collect.Lists; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.descriptors.CallableDescriptor; -import org.jetbrains.jet.lang.descriptors.FunctionDescriptor; -import org.jetbrains.jet.lang.descriptors.VariableDescriptor; import org.jetbrains.jet.lang.psi.CallKey; import org.jetbrains.jet.lang.psi.JetExpression; import org.jetbrains.jet.lang.resolve.BindingContext; @@ -36,8 +34,7 @@ import static org.jetbrains.jet.lang.psi.Call.CallType; import static org.jetbrains.jet.lang.psi.Call.CallType.*; public class ResolutionResultsCacheImpl implements ResolutionResultsCache { - public static final WritableSlice> RESOLUTION_RESULTS_FOR_FUNCTION = Slices.createSimpleSlice(); - public static final WritableSlice> RESOLUTION_RESULTS_FOR_PROPERTY = Slices.createSimpleSlice(); + public static final WritableSlice> RESOLUTION_RESULTS = Slices.createSimpleSlice(); public static final WritableSlice TRACE_DELTAS_CACHE = Slices.createSimpleSlice(); public static final WritableSlice> DEFERRED_COMPUTATION_FOR_CALL = Slices.createSimpleSlice(); public static final WritableSlice> RESOLVED_CALL_FOR_ARGUMENT = Slices.createSimpleSlice(); @@ -49,22 +46,22 @@ public class ResolutionResultsCacheImpl implements ResolutionResultsCache { private final DelegatingBindingTrace trace = new DelegatingBindingTrace( BindingContext.EMPTY, "Internal binding context in resolution results cache"); - @NotNull - private static WritableSlice> getSliceByMemberType(@NotNull MemberType memberType) { - //noinspection unchecked - return (WritableSlice>) - (memberType == FUNCTION_MEMBER_TYPE ? RESOLUTION_RESULTS_FOR_FUNCTION : RESOLUTION_RESULTS_FOR_PROPERTY); - } - @Override - public void recordResolutionResults(@NotNull CallKey callKey, @NotNull MemberType memberType, @NotNull OverloadResolutionResultsImpl results) { - trace.record(getSliceByMemberType(memberType), callKey, results); + public void recordResolutionResults( + @NotNull CallKey callKey, + @NotNull OverloadResolutionResultsImpl results + ) { + //noinspection unchecked + trace.record(RESOLUTION_RESULTS, callKey, (OverloadResolutionResultsImpl) results); } @Override @Nullable - public OverloadResolutionResultsImpl getResolutionResults(@NotNull CallKey callKey, @NotNull MemberType memberType) { - return trace.get(getSliceByMemberType(memberType), callKey); + public OverloadResolutionResultsImpl getResolutionResults( + @NotNull CallKey callKey + ) { + //noinspection unchecked + return (OverloadResolutionResultsImpl) trace.get(RESOLUTION_RESULTS, callKey); } @Override diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/context/TemporaryResolutionResultsCache.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/context/TemporaryResolutionResultsCache.java index 76384000d2c..c4593f9a653 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/context/TemporaryResolutionResultsCache.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/context/TemporaryResolutionResultsCache.java @@ -39,22 +39,21 @@ public class TemporaryResolutionResultsCache implements ResolutionResultsCache { @Override public void recordResolutionResults( @NotNull CallKey callKey, - @NotNull MemberType memberType, @NotNull OverloadResolutionResultsImpl results ) { - innerCache.recordResolutionResults(callKey, memberType, results); + innerCache.recordResolutionResults(callKey, results); } @Nullable @Override public OverloadResolutionResultsImpl getResolutionResults( - @NotNull CallKey callKey, @NotNull MemberType memberType + @NotNull CallKey callKey ) { - OverloadResolutionResultsImpl results = innerCache.getResolutionResults(callKey, memberType); + OverloadResolutionResultsImpl results = innerCache.getResolutionResults(callKey); if (results != null) { return results; } - return parentCache.getResolutionResults(callKey, memberType); + return parentCache.getResolutionResults(callKey); } @Override