Use of List's instead of Array's

This commit is contained in:
Valentin Kipyatkov
2015-06-26 19:19:42 +03:00
parent 343604bce0
commit bce79906ef
11 changed files with 23 additions and 25 deletions
@@ -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))
}
@@ -50,7 +50,7 @@ public object KotlinNameSuggester {
* *
* @return possible names
*/
public fun suggestNamesByExpressionAndType(expression: JetExpression, validator: (String) -> Boolean, defaultName: String?): Array<String> {
public fun suggestNamesByExpressionAndType(expression: JetExpression, validator: (String) -> Boolean, defaultName: String?): List<String> {
val result = ArrayList<String>()
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<String> {
public fun suggestNamesByType(type: JetType, validator: (String) -> Boolean, defaultName: String? = null): List<String> {
val result = ArrayList<String>()
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<String> {
public fun suggestNamesByExpressionOnly(expression: JetExpression, validator: (String) -> Boolean, defaultName: String? = null): List<String> {
val result = ArrayList<String>()
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<String> {
public fun suggestNamesForTypeParameters(count: Int, validator: (String) -> Boolean): List<String> {
val result = ArrayList<String>()
for (i in 0..count - 1) {
result.add(suggestNameByMultipleNames(COMMON_TYPE_PARAMETER_NAMES, validator))
}
return ArrayUtil.toStringArray(result)
return result
}
/**
@@ -69,7 +69,7 @@ public class IterateExpressionIntention : JetSelfTargetingIntention<JetExpressio
val bodyPlaceholder = (forExpression.getBody() as JetBlockExpression).getStatements().single()
val templateBuilder = TemplateBuilderImpl(forExpression)
templateBuilder.replaceElement(forExpression.getLoopParameter()!!, ChooseStringExpression(names.asList()))
templateBuilder.replaceElement(forExpression.getLoopParameter()!!, ChooseStringExpression(names))
templateBuilder.replaceElement(bodyPlaceholder, ConstantNode(""), false)
templateBuilder.setEndVariableAfter(bodyPlaceholder)
@@ -70,7 +70,7 @@ public class ChangeFunctionLiteralSignatureFix extends ChangeFunctionSignatureFi
CollectingNameValidator validator = new CollectingNameValidator();
descriptor.clearNonReceiverParameters();
for (JetType type : parameterTypes) {
String name = KotlinNameSuggester.INSTANCE$.suggestNamesByType(type, validator, "param")[0];
String name = KotlinNameSuggester.INSTANCE$.suggestNamesByType(type, validator, "param").get(0);
descriptor.addParameter(
new JetParameterInfo(functionDescriptor, -1, name, type, null, null, JetValVar.None, null)
);
@@ -105,7 +105,7 @@ public abstract class ChangeFunctionSignatureFix extends JetIntentionAction<PsiE
return KotlinNameSuggester.INSTANCE$.suggestNameByName(argumentName.getAsName().asString(), validator);
}
else if (expression != null) {
return KotlinNameSuggester.INSTANCE$.suggestNamesByExpressionAndType(expression, validator, "param")[0];
return KotlinNameSuggester.INSTANCE$.suggestNamesByExpressionAndType(expression, validator, "param").get(0);
}
return KotlinNameSuggester.INSTANCE$.suggestNameByName("param", validator);
@@ -821,7 +821,7 @@ class CallableBuilder(val config: CallableBuilderConfiguration) {
val parameterTypeToNamesMap = HashMap<String, Array<String>>()
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
@@ -43,7 +43,7 @@ abstract class TypeInfo(val variance: Variance) {
class ByExpression(val expression: JetExpression, variance: Variance): TypeInfo(variance) {
override val possibleNamesFromExpression: Array<String> by Delegates.lazy {
KotlinNameSuggester.suggestNamesByExpressionOnly(expression, { true })
KotlinNameSuggester.suggestNamesByExpressionOnly(expression, { true }).toTypedArray()
}
override fun getPossibleTypes(builder: CallableBuilder): List<JetType> =
@@ -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)
@@ -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<String> suggestedNames = KotlinNameSuggester.INSTANCE$.suggestNamesByExpressionAndType(expression, validator, "value");
final Ref<JetProperty> propertyRef = new Ref<JetProperty>();
final ArrayList<JetExpression> references = new ArrayList<JetExpression>();
final Ref<JetExpression> reference = new Ref<JetExpression>();
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<JetExpression> allReplaces,
final PsiElement commonContainer,
final PsiElement commonParent,
@@ -303,7 +303,7 @@ public class KotlinIntroduceVariableHandler extends KotlinIntroduceHandlerBase {
PsiElement commonParent,
List<JetExpression> 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 =
@@ -44,7 +44,7 @@ public class KotlinVariableInplaceIntroducer(
val addedVariable: JetProperty,
val originalExpression: JetExpression?,
val occurrencesToReplace: Array<JetExpression>,
val suggestedNames: Array<out String>,
suggestedNames: List<String>,
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 {
@@ -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)
}