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 086d26e4236..43836145fc0 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 @@ -326,7 +326,9 @@ public class CallResolver { } } - context.callResolverExtension.run(results, context); + if (results.isSingleResult()) { + context.callResolverExtension.run(results.getResultingCall(), context); + } return results; } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallResolverExtension.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallResolverExtension.java index d6ddb7ac4a6..afc6b9c37a7 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallResolverExtension.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallResolverExtension.java @@ -19,8 +19,9 @@ package org.jetbrains.jet.lang.resolve.calls; import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.lang.descriptors.CallableDescriptor; import org.jetbrains.jet.lang.resolve.calls.context.BasicCallResolutionContext; +import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCall; import org.jetbrains.jet.lang.resolve.calls.results.OverloadResolutionResultsImpl; public interface CallResolverExtension { - void run(@NotNull OverloadResolutionResultsImpl results, @NotNull BasicCallResolutionContext context); + void run(@NotNull ResolvedCall resolvedCall, @NotNull BasicCallResolutionContext context); } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CompositeExtension.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CompositeExtension.java index 7c4e581d3fc..0c631c5cc9e 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CompositeExtension.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CompositeExtension.java @@ -3,6 +3,7 @@ package org.jetbrains.jet.lang.resolve.calls; import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.lang.descriptors.CallableDescriptor; import org.jetbrains.jet.lang.resolve.calls.context.BasicCallResolutionContext; +import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCall; import org.jetbrains.jet.lang.resolve.calls.results.OverloadResolutionResultsImpl; import java.util.List; @@ -17,11 +18,11 @@ public class CompositeExtension implements CallResolverExtension { @Override public void run( - @NotNull OverloadResolutionResultsImpl results, + @NotNull ResolvedCall resolvedCall, @NotNull BasicCallResolutionContext context ) { for (CallResolverExtension resolverExtension : extensions) { - resolverExtension.run(results, context); + resolverExtension.run(resolvedCall, context); } } } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/NeedSyntheticCallResolverExtension.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/NeedSyntheticCallResolverExtension.java index 4fe67020909..97c8ca193ad 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/NeedSyntheticCallResolverExtension.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/NeedSyntheticCallResolverExtension.java @@ -21,6 +21,7 @@ import org.jetbrains.jet.lang.descriptors.CallableDescriptor; import org.jetbrains.jet.lang.descriptors.CallableMemberDescriptor; import org.jetbrains.jet.lang.descriptors.Visibilities; import org.jetbrains.jet.lang.resolve.calls.context.BasicCallResolutionContext; +import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCall; import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCallWithTrace; import org.jetbrains.jet.lang.resolve.calls.results.OverloadResolutionResultsImpl; import org.jetbrains.jet.lang.resolve.scopes.JetScope; @@ -31,15 +32,12 @@ public class NeedSyntheticCallResolverExtension implements CallResolverExtension @Override public void run( - @NotNull OverloadResolutionResultsImpl results, + @NotNull ResolvedCall resolvedCall, @NotNull BasicCallResolutionContext context ) { - if (results.isSingleResult()) { - ResolvedCallWithTrace resolvedCall = results.getResultingCall(); - CallableDescriptor targetDescriptor = resolvedCall.getResultingDescriptor(); - if (needSyntheticAccessor(context.scope, targetDescriptor)) { - context.trace.record(NEED_SYNTHETIC_ACCESSOR, (CallableMemberDescriptor) targetDescriptor.getOriginal(), Boolean.TRUE); - } + CallableDescriptor targetDescriptor = resolvedCall.getResultingDescriptor(); + if (needSyntheticAccessor(context.scope, targetDescriptor)) { + context.trace.record(NEED_SYNTHETIC_ACCESSOR, (CallableMemberDescriptor) targetDescriptor.getOriginal(), Boolean.TRUE); } } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/TypeParameterAsReifiedCheck.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/TypeParameterAsReifiedCheck.java index 9ea11fa10de..15346df5968 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/TypeParameterAsReifiedCheck.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/TypeParameterAsReifiedCheck.java @@ -7,6 +7,7 @@ import org.jetbrains.jet.lang.descriptors.TypeParameterDescriptor; import org.jetbrains.jet.lang.diagnostics.Errors; import org.jetbrains.jet.lang.psi.JetExpression; import org.jetbrains.jet.lang.resolve.calls.context.BasicCallResolutionContext; +import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCall; import org.jetbrains.jet.lang.resolve.calls.results.OverloadResolutionResultsImpl; import org.jetbrains.jet.lang.types.JetType; @@ -15,19 +16,16 @@ import java.util.Map; public class TypeParameterAsReifiedCheck implements CallResolverExtension { @Override public void run( - @NotNull OverloadResolutionResultsImpl results, @NotNull BasicCallResolutionContext context + @NotNull ResolvedCall resolvedCall, @NotNull BasicCallResolutionContext context ) { - if (results.isSuccess()) { - Map typeArguments = results.getResultingCall().getTypeArguments(); - for (Map.Entry entry : typeArguments.entrySet()) { - TypeParameterDescriptor parameter = entry.getKey(); - JetType argument = entry.getValue(); - - if (parameter.isReified() && argument.getConstructor().getDeclarationDescriptor() instanceof TypeParameterDescriptor) { - JetExpression callee = context.call.getCalleeExpression(); - PsiElement element = callee != null ? callee : context.call.getCallElement(); - context.trace.report(Errors.TYPE_PARAMETER_AS_REIFIED.on(element, typeArguments.keySet().iterator().next())); - } + Map typeArguments = resolvedCall.getTypeArguments(); + for (Map.Entry entry : typeArguments.entrySet()) { + TypeParameterDescriptor parameter = entry.getKey(); + JetType argument = entry.getValue(); + if (parameter.isReified() && argument.getConstructor().getDeclarationDescriptor() instanceof TypeParameterDescriptor) { + JetExpression callee = context.call.getCalleeExpression(); + PsiElement element = callee != null ? callee : context.call.getCallElement(); + context.trace.report(Errors.TYPE_PARAMETER_AS_REIFIED.on(element, typeArguments.keySet().iterator().next())); } } }