From bce79906ef106f864d55c92612317a28c2bc6669 Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Fri, 26 Jun 2015 19:19:42 +0300 Subject: [PATCH] Use of List's instead of Array's --- .../idea/completion/handlers/GenerateLambda.kt | 2 +- .../kotlin/idea/core/KotlinNameSuggester.kt | 16 ++++++++-------- .../intentions/IterateExpressionIntention.kt | 2 +- .../ChangeFunctionLiteralSignatureFix.java | 2 +- .../quickfix/ChangeFunctionSignatureFix.java | 2 +- .../callableBuilder/CallableBuilder.kt | 2 +- .../callableBuilder/CallableInfo.kt | 2 +- .../KotlinIntroduceParameterHandler.kt | 2 +- .../KotlinIntroduceVariableHandler.java | 10 +++++----- .../KotlinVariableInplaceIntroducer.kt | 5 ++--- .../nameSuggester/JetNameSuggesterTest.kt | 3 +-- 11 files changed, 23 insertions(+), 25 deletions(-) diff --git a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/handlers/GenerateLambda.kt b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/handlers/GenerateLambda.kt index fb00b1f4899..dfc23d319f0 100644 --- a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/handlers/GenerateLambda.kt +++ b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/handlers/GenerateLambda.kt @@ -102,7 +102,7 @@ private fun buildTemplate(lambdaType: JetType, explicitParameterTypes: Boolean, template.addTextSegment(", ") } //TODO: check for names in scope - template.addVariable(ParameterNameExpression(KotlinNameSuggester.suggestNamesByType(parameterType, { true }, "p")), true) + template.addVariable(ParameterNameExpression(KotlinNameSuggester.suggestNamesByType(parameterType, { true }, "p").toTypedArray()), true) if (explicitParameterTypes) { template.addTextSegment(": " + IdeDescriptorRenderers.SOURCE_CODE.renderType(parameterType)) } diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/KotlinNameSuggester.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/KotlinNameSuggester.kt index 8c9270c55af..390976c0cb9 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/KotlinNameSuggester.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/KotlinNameSuggester.kt @@ -50,7 +50,7 @@ public object KotlinNameSuggester { * * * @return possible names */ - public fun suggestNamesByExpressionAndType(expression: JetExpression, validator: (String) -> Boolean, defaultName: String?): Array { + public fun suggestNamesByExpressionAndType(expression: JetExpression, validator: (String) -> Boolean, defaultName: String?): List { val result = ArrayList() val bindingContext = expression.analyze(BodyResolveMode.FULL) @@ -64,10 +64,10 @@ public object KotlinNameSuggester { result.addName(defaultName, validator) } - return ArrayUtil.toStringArray(result) + return result } - public fun suggestNamesByType(type: JetType, validator: (String) -> Boolean, defaultName: String? = null): Array { + public fun suggestNamesByType(type: JetType, validator: (String) -> Boolean, defaultName: String? = null): List { val result = ArrayList() result.addNamesByType(type, validator) @@ -76,10 +76,10 @@ public object KotlinNameSuggester { result.addName(defaultName, validator) } - return ArrayUtil.toStringArray(result) + return result } - public fun suggestNamesByExpressionOnly(expression: JetExpression, validator: (String) -> Boolean, defaultName: String? = null): Array { + public fun suggestNamesByExpressionOnly(expression: JetExpression, validator: (String) -> Boolean, defaultName: String? = null): List { val result = ArrayList() result.addNamesByExpression(expression, validator) @@ -88,17 +88,17 @@ public object KotlinNameSuggester { result.addName(defaultName, validator) } - return ArrayUtil.toStringArray(result) + return result } private val COMMON_TYPE_PARAMETER_NAMES = listOf("T", "U", "V", "W", "X", "Y", "Z") - public fun suggestNamesForTypeParameters(count: Int, validator: (String) -> Boolean): Array { + public fun suggestNamesForTypeParameters(count: Int, validator: (String) -> Boolean): List { val result = ArrayList() for (i in 0..count - 1) { result.add(suggestNameByMultipleNames(COMMON_TYPE_PARAMETER_NAMES, validator)) } - return ArrayUtil.toStringArray(result) + return result } /** diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/IterateExpressionIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/IterateExpressionIntention.kt index daaa98bd5d3..967a540b1d8 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/IterateExpressionIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/IterateExpressionIntention.kt @@ -69,7 +69,7 @@ public class IterateExpressionIntention : JetSelfTargetingIntention>() typeCandidates[parameter.typeInfo]!!.forEach { typeCandidate -> val suggestedNames = KotlinNameSuggester.suggestNamesByType(typeCandidate.theType, { true }) - parameterTypeToNamesMap[typeCandidate.renderedType!!] = suggestedNames + parameterTypeToNamesMap[typeCandidate.renderedType!!] = suggestedNames.toTypedArray() } // add expression to builder diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/CallableInfo.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/CallableInfo.kt index 59c8ae38576..5b5bedb809e 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/CallableInfo.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/CallableInfo.kt @@ -43,7 +43,7 @@ abstract class TypeInfo(val variance: Variance) { class ByExpression(val expression: JetExpression, variance: Variance): TypeInfo(variance) { override val possibleNamesFromExpression: Array by Delegates.lazy { - KotlinNameSuggester.suggestNamesByExpressionOnly(expression, { true }) + KotlinNameSuggester.suggestNamesByExpressionOnly(expression, { true }).toTypedArray() } override fun getPossibleTypes(builder: CallableBuilder): List = diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceParameter/KotlinIntroduceParameterHandler.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceParameter/KotlinIntroduceParameterHandler.kt index c040c693940..655a0673943 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceParameter/KotlinIntroduceParameterHandler.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceParameter/KotlinIntroduceParameterHandler.kt @@ -235,7 +235,7 @@ public open class KotlinIntroduceParameterHandler( else -> null } ?: throw AssertionError("Body element is not found: ${targetParent.getElementTextWithContext()}") val nameValidator = NameValidatorImpl(body, null, NameValidatorImpl.Target.PROPERTIES) - val suggestedNames = linkedSetOf(*KotlinNameSuggester.suggestNamesByType(replacementType, nameValidator, "p")) + val suggestedNames = KotlinNameSuggester.suggestNamesByType(replacementType, nameValidator, "p") val parametersUsages = findInternalUsagesOfParametersAndReceiver(targetParent, functionDescriptor) diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceVariable/KotlinIntroduceVariableHandler.java b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceVariable/KotlinIntroduceVariableHandler.java index 9398b961028..29fc5652472 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceVariable/KotlinIntroduceVariableHandler.java +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceVariable/KotlinIntroduceVariableHandler.java @@ -197,12 +197,12 @@ public class KotlinIntroduceVariableHandler extends KotlinIntroduceHandlerBase { calculateAnchor(commonParent, commonContainer, allReplaces), NameValidatorImpl.Target.PROPERTIES ); - final String[] suggestedNames = KotlinNameSuggester.INSTANCE$.suggestNamesByExpressionAndType(expression, validator, "value"); + final List suggestedNames = KotlinNameSuggester.INSTANCE$.suggestNamesByExpressionAndType(expression, validator, "value"); final Ref propertyRef = new Ref(); final ArrayList references = new ArrayList(); final Ref reference = new Ref(); final Runnable introduceRunnable = introduceVariable( - expression, suggestedNames, allReplaces, commonContainer, + expression, suggestedNames.get(0), allReplaces, commonContainer, commonParent, replaceOccurrence, propertyRef, references, reference, finalNoTypeInference, expressionType, bindingContext); CommandProcessor.getInstance().executeCommand(project, new Runnable() { @@ -251,7 +251,7 @@ public class KotlinIntroduceVariableHandler extends KotlinIntroduceHandlerBase { private static Runnable introduceVariable( final JetExpression expression, - final String[] suggestedNames, + final String nameSuggestion, final List allReplaces, final PsiElement commonContainer, final PsiElement commonParent, @@ -303,7 +303,7 @@ public class KotlinIntroduceVariableHandler extends KotlinIntroduceHandlerBase { PsiElement commonParent, List allReplaces ) { - String variableText = "val " + suggestedNames[0]; + String variableText = "val " + nameSuggestion; if (noTypeInference) { variableText += ": " + IdeDescriptorRenderers.SOURCE_CODE.renderType(expressionType); } @@ -449,7 +449,7 @@ public class KotlinIntroduceVariableHandler extends KotlinIntroduceHandlerBase { private JetExpression replaceExpression(JetExpression replace) { boolean isActualExpression = expression == replace; - JetExpression replacement = psiFactory.createExpression(suggestedNames[0]); + JetExpression replacement = psiFactory.createExpression(nameSuggestion); JetExpression result; if (PsiUtilPackage.isFunctionLiteralOutsideParentheses(replace)) { JetFunctionLiteralArgument functionLiteralArgument = diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceVariable/KotlinVariableInplaceIntroducer.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceVariable/KotlinVariableInplaceIntroducer.kt index 280ccfee4de..de5058a4d2a 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceVariable/KotlinVariableInplaceIntroducer.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceVariable/KotlinVariableInplaceIntroducer.kt @@ -44,7 +44,7 @@ public class KotlinVariableInplaceIntroducer( val addedVariable: JetProperty, val originalExpression: JetExpression?, val occurrencesToReplace: Array, - val suggestedNames: Array, + suggestedNames: List, val isVar: Boolean, val doNotChangeVar: Boolean, val expressionType: JetType?, @@ -59,8 +59,7 @@ public class KotlinVariableInplaceIntroducer( project, editor ) { - companion object { - } + private val suggestedNames = suggestedNames.toTypedArray() init { initFormComponents { diff --git a/idea/tests/org/jetbrains/kotlin/idea/refactoring/nameSuggester/JetNameSuggesterTest.kt b/idea/tests/org/jetbrains/kotlin/idea/refactoring/nameSuggester/JetNameSuggesterTest.kt index cce2ec494b0..f54ac1bfd09 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/refactoring/nameSuggester/JetNameSuggesterTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/refactoring/nameSuggester/JetNameSuggesterTest.kt @@ -69,8 +69,7 @@ public class JetNameSuggesterTest : LightCodeInsightFixtureTestCase() { try { JetRefactoringUtil.selectExpression(myFixture.getEditor(), file, object : JetRefactoringUtil.SelectExpressionCallback { override fun run(expression: JetExpression) { - val names = KotlinNameSuggester.suggestNamesByExpressionAndType(expression, { true }, "value") - Arrays.sort(names) + val names = KotlinNameSuggester.suggestNamesByExpressionAndType(expression, { true }, "value").sort() val result = StringUtil.join(names, "\n").trim() assertEquals(expectedResultText, result) }