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 94aab41033c..8c1a57ced77 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 @@ -519,92 +519,4 @@ public class CallResolver { } return results; } - -////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// to be removed - - @Deprecated // Creates wrong resolved calls, should be removed - @NotNull - public OverloadResolutionResults resolveExactSignature(@NotNull JetScope scope, @NotNull ReceiverValue receiver, @NotNull Name name, @NotNull List parameterTypes) { - List> candidates = findCandidatesByExactSignature(scope, receiver, name, parameterTypes); - - BindingTraceContext trace = new BindingTraceContext(); - TemporaryBindingTrace temporaryBindingTrace = TemporaryBindingTrace.create(trace, "trace for resolve exact signature call", name); - Set> calls = Sets.newLinkedHashSet(); - for (ResolutionCandidate candidate : candidates) { - ResolvedCallImpl call = ResolvedCallImpl.create(candidate, temporaryBindingTrace); - calls.add(call); - } - return resolutionResultsHandler.computeResultAndReportErrors(trace, TracingStrategy.EMPTY, calls, - Collections.>emptySet()); - } - - private List> findCandidatesByExactSignature(JetScope scope, ReceiverValue receiver, - Name name, List parameterTypes) { - List> result = Lists.newArrayList(); - if (receiver.exists()) { - Collection> extensionFunctionDescriptors = ResolutionCandidate.convertCollection(scope.getFunctions(name), false); - List> nonlocal = Lists.newArrayList(); - List> local = Lists.newArrayList(); - TaskPrioritizer.splitLexicallyLocalDescriptors(extensionFunctionDescriptors, scope.getContainingDeclaration(), local, nonlocal); - - - if (findExtensionFunctions(local, receiver, parameterTypes, result)) { - return result; - } - - Collection> functionDescriptors = ResolutionCandidate.convertCollection(receiver.getType().getMemberScope().getFunctions(name), false); - if (lookupExactSignature(functionDescriptors, parameterTypes, result)) { - return result; - - } - findExtensionFunctions(nonlocal, receiver, parameterTypes, result); - return result; - } - else { - lookupExactSignature(ResolutionCandidate.convertCollection(scope.getFunctions(name), false), parameterTypes, result); - return result; - } - } - - private static boolean lookupExactSignature(Collection> candidates, List parameterTypes, - List> result) { - boolean found = false; - for (ResolutionCandidate resolvedCall : candidates) { - FunctionDescriptor functionDescriptor = resolvedCall.getDescriptor(); - if (functionDescriptor.getReceiverParameter() != null) continue; - if (!functionDescriptor.getTypeParameters().isEmpty()) continue; - if (!checkValueParameters(functionDescriptor, parameterTypes)) continue; - result.add(resolvedCall); - found = true; - } - return found; - } - - private boolean findExtensionFunctions(Collection> candidates, ReceiverValue receiver, - List parameterTypes, List> result) { - boolean found = false; - for (ResolutionCandidate candidate : candidates) { - FunctionDescriptor functionDescriptor = candidate.getDescriptor(); - ReceiverParameterDescriptor functionReceiver = functionDescriptor.getReceiverParameter(); - if (functionReceiver == null) continue; - if (!functionDescriptor.getTypeParameters().isEmpty()) continue; - if (!typeChecker.isSubtypeOf(receiver.getType(), functionReceiver.getType())) continue; - if (!checkValueParameters(functionDescriptor, parameterTypes))continue; - result.add(candidate); - found = true; - } - return found; - } - - private static boolean checkValueParameters(@NotNull FunctionDescriptor functionDescriptor, @NotNull List parameterTypes) { - List valueParameters = functionDescriptor.getValueParameters(); - if (valueParameters.size() != parameterTypes.size()) return false; - for (int i = 0; i < valueParameters.size(); i++) { - ValueParameterDescriptor valueParameter = valueParameters.get(i); - JetType expectedType = parameterTypes.get(i); - if (!TypeUtils.equalTypes(expectedType, valueParameter.getType())) return false; - } - return true; - } } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingContext.java b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingContext.java index e0d462a9926..5e96e2264b3 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingContext.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingContext.java @@ -164,10 +164,4 @@ public class ExpressionTypingContext { Call call = CallMaker.makePropertyCall(receiver, callOperationNode, nameExpression); return expressionTypingServices.getCallResolver().resolveSimpleProperty(makeResolutionContext(call)); } - - @Deprecated // Builds wrong resolved calls, should be removed - @NotNull - public OverloadResolutionResults resolveExactSignature(@NotNull ReceiverValue receiver, @NotNull Name name, @NotNull List parameterTypes) { - return expressionTypingServices.getCallResolver().resolveExactSignature(scope, receiver, name, parameterTypes); - } }