diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/AddFunctionParametersFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/AddFunctionParametersFix.kt index e547d47086d..7991e46a558 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/AddFunctionParametersFix.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/AddFunctionParametersFix.kt @@ -25,15 +25,14 @@ import org.jetbrains.kotlin.descriptors.ConstructorDescriptor import org.jetbrains.kotlin.descriptors.FunctionDescriptor import org.jetbrains.kotlin.idea.caches.resolve.analyze import org.jetbrains.kotlin.idea.core.CollectingNameValidator -import org.jetbrains.kotlin.idea.refactoring.changeSignature.JetChangeSignatureConfiguration -import org.jetbrains.kotlin.idea.refactoring.changeSignature.JetMethodDescriptor -import org.jetbrains.kotlin.idea.refactoring.changeSignature.modify -import org.jetbrains.kotlin.idea.refactoring.changeSignature.runChangeSignature +import org.jetbrains.kotlin.idea.refactoring.changeSignature.* import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers import org.jetbrains.kotlin.psi.JetCallElement import org.jetbrains.kotlin.psi.JetFile +import org.jetbrains.kotlin.psi.ValueArgument import org.jetbrains.kotlin.psi.psiUtil.getParentOfType import org.jetbrains.kotlin.resolve.BindingContext +import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns import org.jetbrains.kotlin.types.JetType import org.jetbrains.kotlin.types.checker.JetTypeChecker import java.util.* @@ -47,7 +46,7 @@ public class AddFunctionParametersFix( override fun getText(): String { val parameters = functionDescriptor.valueParameters val arguments = callElement.valueArguments - val newParametersCnt = arguments.size() - parameters.size() + val newParametersCnt = arguments.size - parameters.size assert(newParametersCnt > 0) val subjectSuffix = if (newParametersCnt > 1) "s" else "" @@ -71,7 +70,7 @@ public class AddFunctionParametersFix( if (!super.isAvailable(project, editor, file)) return false // newParametersCnt <= 0: psi for this quickfix is no longer valid - val newParametersCnt = callElement.valueArguments.size() - functionDescriptor.valueParameters.size() + val newParametersCnt = callElement.valueArguments.size - functionDescriptor.valueParameters.size return newParametersCnt > 0 } @@ -91,7 +90,7 @@ public class AddFunctionParametersFix( val argument = arguments.get(i) val expression = argument.getArgumentExpression() - if (i < parameters.size()) { + if (i < parameters.size) { validator.addName(parameters.get(i).name.asString()) val argumentType = expression?.let { val bindingContext = it.analyze() @@ -129,6 +128,18 @@ public class AddFunctionParametersFix( } } + private fun getNewParameterInfo( + functionDescriptor: FunctionDescriptor, + argument: ValueArgument, + validator: Function1 + ): JetParameterInfo { + val name = getNewArgumentName(argument, validator) + val expression = argument.getArgumentExpression() + val type = expression?.let { it.analyze().getType(it) } ?: functionDescriptor.builtIns.nullableAnyType + return JetParameterInfo(functionDescriptor, -1, name, type, null, null, JetValVar.None, null) + .apply { currentTypeText = IdeDescriptorRenderers.SOURCE_CODE.renderType(type) } + } + private fun hasOtherUsages(function: PsiElement): Boolean { return ReferencesSearch.search(function).any { val call = it.element.getParentOfType(false) diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeFunctionSignatureFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeFunctionSignatureFix.kt index c5f0735af05..a403b7a91aa 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeFunctionSignatureFix.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeFunctionSignatureFix.kt @@ -35,14 +35,10 @@ import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde import org.jetbrains.kotlin.idea.core.KotlinNameSuggester import org.jetbrains.kotlin.idea.core.quickfix.QuickFixUtil -import org.jetbrains.kotlin.idea.refactoring.changeSignature.JetParameterInfo -import org.jetbrains.kotlin.idea.refactoring.changeSignature.JetValVar -import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers import org.jetbrains.kotlin.psi.JetCallElement import org.jetbrains.kotlin.psi.JetFunctionLiteral import org.jetbrains.kotlin.psi.ValueArgument import org.jetbrains.kotlin.resolve.BindingContext -import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode import org.jetbrains.kotlin.types.checker.JetTypeChecker @@ -78,18 +74,6 @@ abstract class ChangeFunctionSignatureFix( } } - protected fun getNewParameterInfo( - functionDescriptor: FunctionDescriptor, - argument: ValueArgument, - validator: Function1 - ): JetParameterInfo { - val name = getNewArgumentName(argument, validator) - val expression = argument.getArgumentExpression() - val type = expression?.let { it.analyze().getType(it) } ?: functionDescriptor.builtIns.nullableAnyType - return JetParameterInfo(functionDescriptor, -1, name, type, null, null, JetValVar.None, null) - .apply { currentTypeText = IdeDescriptorRenderers.SOURCE_CODE.renderType(type) } - } - object Factory : JetSingleIntentionActionFactory() { override fun createAction(diagnostic: Diagnostic): ChangeFunctionSignatureFix? { val callElement = PsiTreeUtil.getParentOfType(diagnostic.psiElement, JetCallElement::class.java) ?: return null