Moved method
This commit is contained in:
@@ -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<String, Boolean>
|
||||
): 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<JetCallElement>(false)
|
||||
|
||||
@@ -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<String, Boolean>
|
||||
): 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
|
||||
|
||||
Reference in New Issue
Block a user