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.descriptors.FunctionDescriptor
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||||
import org.jetbrains.kotlin.idea.core.CollectingNameValidator
|
import org.jetbrains.kotlin.idea.core.CollectingNameValidator
|
||||||
import org.jetbrains.kotlin.idea.refactoring.changeSignature.JetChangeSignatureConfiguration
|
import org.jetbrains.kotlin.idea.refactoring.changeSignature.*
|
||||||
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.util.IdeDescriptorRenderers
|
import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers
|
||||||
import org.jetbrains.kotlin.psi.JetCallElement
|
import org.jetbrains.kotlin.psi.JetCallElement
|
||||||
import org.jetbrains.kotlin.psi.JetFile
|
import org.jetbrains.kotlin.psi.JetFile
|
||||||
|
import org.jetbrains.kotlin.psi.ValueArgument
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.getParentOfType
|
import org.jetbrains.kotlin.psi.psiUtil.getParentOfType
|
||||||
import org.jetbrains.kotlin.resolve.BindingContext
|
import org.jetbrains.kotlin.resolve.BindingContext
|
||||||
|
import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns
|
||||||
import org.jetbrains.kotlin.types.JetType
|
import org.jetbrains.kotlin.types.JetType
|
||||||
import org.jetbrains.kotlin.types.checker.JetTypeChecker
|
import org.jetbrains.kotlin.types.checker.JetTypeChecker
|
||||||
import java.util.*
|
import java.util.*
|
||||||
@@ -47,7 +46,7 @@ public class AddFunctionParametersFix(
|
|||||||
override fun getText(): String {
|
override fun getText(): String {
|
||||||
val parameters = functionDescriptor.valueParameters
|
val parameters = functionDescriptor.valueParameters
|
||||||
val arguments = callElement.valueArguments
|
val arguments = callElement.valueArguments
|
||||||
val newParametersCnt = arguments.size() - parameters.size()
|
val newParametersCnt = arguments.size - parameters.size
|
||||||
assert(newParametersCnt > 0)
|
assert(newParametersCnt > 0)
|
||||||
|
|
||||||
val subjectSuffix = if (newParametersCnt > 1) "s" else ""
|
val subjectSuffix = if (newParametersCnt > 1) "s" else ""
|
||||||
@@ -71,7 +70,7 @@ public class AddFunctionParametersFix(
|
|||||||
if (!super.isAvailable(project, editor, file)) return false
|
if (!super.isAvailable(project, editor, file)) return false
|
||||||
|
|
||||||
// newParametersCnt <= 0: psi for this quickfix is no longer valid
|
// 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
|
return newParametersCnt > 0
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -91,7 +90,7 @@ public class AddFunctionParametersFix(
|
|||||||
val argument = arguments.get(i)
|
val argument = arguments.get(i)
|
||||||
val expression = argument.getArgumentExpression()
|
val expression = argument.getArgumentExpression()
|
||||||
|
|
||||||
if (i < parameters.size()) {
|
if (i < parameters.size) {
|
||||||
validator.addName(parameters.get(i).name.asString())
|
validator.addName(parameters.get(i).name.asString())
|
||||||
val argumentType = expression?.let {
|
val argumentType = expression?.let {
|
||||||
val bindingContext = it.analyze()
|
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 {
|
private fun hasOtherUsages(function: PsiElement): Boolean {
|
||||||
return ReferencesSearch.search(function).any {
|
return ReferencesSearch.search(function).any {
|
||||||
val call = it.element.getParentOfType<JetCallElement>(false)
|
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.codeInsight.DescriptorToSourceUtilsIde
|
||||||
import org.jetbrains.kotlin.idea.core.KotlinNameSuggester
|
import org.jetbrains.kotlin.idea.core.KotlinNameSuggester
|
||||||
import org.jetbrains.kotlin.idea.core.quickfix.QuickFixUtil
|
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.JetCallElement
|
||||||
import org.jetbrains.kotlin.psi.JetFunctionLiteral
|
import org.jetbrains.kotlin.psi.JetFunctionLiteral
|
||||||
import org.jetbrains.kotlin.psi.ValueArgument
|
import org.jetbrains.kotlin.psi.ValueArgument
|
||||||
import org.jetbrains.kotlin.resolve.BindingContext
|
import org.jetbrains.kotlin.resolve.BindingContext
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns
|
|
||||||
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
|
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
|
||||||
import org.jetbrains.kotlin.types.checker.JetTypeChecker
|
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() {
|
object Factory : JetSingleIntentionActionFactory() {
|
||||||
override fun createAction(diagnostic: Diagnostic): ChangeFunctionSignatureFix? {
|
override fun createAction(diagnostic: Diagnostic): ChangeFunctionSignatureFix? {
|
||||||
val callElement = PsiTreeUtil.getParentOfType(diagnostic.psiElement, JetCallElement::class.java) ?: return null
|
val callElement = PsiTreeUtil.getParentOfType(diagnostic.psiElement, JetCallElement::class.java) ?: return null
|
||||||
|
|||||||
Reference in New Issue
Block a user