From 538248cafa565ad6832d5d65f7f41dafedccba3e Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Mon, 10 Nov 2014 20:57:20 +0300 Subject: [PATCH] Callable Builder: Do not skip unused type parameters --- .../createFromUsage/callableBuilder/CallableBuilder.kt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/idea/src/org/jetbrains/jet/plugin/quickfix/createFromUsage/callableBuilder/CallableBuilder.kt b/idea/src/org/jetbrains/jet/plugin/quickfix/createFromUsage/callableBuilder/CallableBuilder.kt index 1d84d9ca55c..d93da9c0ced 100644 --- a/idea/src/org/jetbrains/jet/plugin/quickfix/createFromUsage/callableBuilder/CallableBuilder.kt +++ b/idea/src/org/jetbrains/jet/plugin/quickfix/createFromUsage/callableBuilder/CallableBuilder.kt @@ -65,6 +65,7 @@ import org.jetbrains.jet.lang.descriptors.impl.MutablePackageFragmentDescriptor import org.jetbrains.jet.lang.descriptors.impl.TypeParameterDescriptorImpl import java.util.LinkedHashMap import org.jetbrains.jet.plugin.util.IdeDescriptorRenderers +import org.jetbrains.jet.utils.addToStdlib.singletonOrEmptyList private val TYPE_PARAMETER_LIST_VARIABLE_NAME = "typeParameterList" private val TEMPLATE_FROM_USAGE_FUNCTION_BODY = "New Kotlin Function Body.kt" @@ -256,6 +257,8 @@ class CallableBuilder(val config: CallableBuilderConfiguration) { (receiverClassDescriptor as ClassDescriptorWithResolutionScopes).getScopeForMemberDeclarationResolution() } + receiverTypeCandidate = receiverType?.let { TypeCandidate(it, scope) } + val fakeFunction: FunctionDescriptor? // figure out type substitutions for type parameters val substitutionMap = LinkedHashMap() @@ -270,7 +273,7 @@ class CallableBuilder(val config: CallableBuilderConfiguration) { .subtract(substitutionMap.keySet()) fakeFunction = createFakeFunctionDescriptor(scope, typeArgumentsForFakeFunction.size) collectSubstitutionsForCallableTypeParameters(fakeFunction!!, typeArgumentsForFakeFunction, substitutionMap) - mandatoryTypeParametersAsCandidates = typeArgumentsForFakeFunction.map { TypeCandidate(substitutionMap[it], scope) } + mandatoryTypeParametersAsCandidates = receiverTypeCandidate.singletonOrEmptyList() + typeArgumentsForFakeFunction.map { TypeCandidate(substitutionMap[it], scope) } } else { fakeFunction = null @@ -287,9 +290,6 @@ class CallableBuilder(val config: CallableBuilderConfiguration) { && returnTypeCandidates.size == 1 && returnTypeCandidates.first().theType.isUnit() - // now that we have done substitutions, we can throw it away - receiverTypeCandidate = receiverType?.let { TypeCandidate(it, scope) } - // figure out type parameter renames to avoid conflicts typeParameterNameMap = getTypeParameterRenames(scope) callableInfo.parameterInfos.forEach { renderTypeCandidates(it.typeInfo, typeParameterNameMap, fakeFunction) }