Moved method

This commit is contained in:
Valentin Kipyatkov
2015-10-14 17:40:08 +03:00
parent bce9f26327
commit 4df9a46b00
2 changed files with 18 additions and 23 deletions
@@ -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