Use of List's instead of Array's
This commit is contained in:
+1
-1
@@ -102,7 +102,7 @@ private fun buildTemplate(lambdaType: JetType, explicitParameterTypes: Boolean,
|
|||||||
template.addTextSegment(", ")
|
template.addTextSegment(", ")
|
||||||
}
|
}
|
||||||
//TODO: check for names in scope
|
//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) {
|
if (explicitParameterTypes) {
|
||||||
template.addTextSegment(": " + IdeDescriptorRenderers.SOURCE_CODE.renderType(parameterType))
|
template.addTextSegment(": " + IdeDescriptorRenderers.SOURCE_CODE.renderType(parameterType))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ public object KotlinNameSuggester {
|
|||||||
* *
|
* *
|
||||||
* @return possible names
|
* @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 result = ArrayList<String>()
|
||||||
|
|
||||||
val bindingContext = expression.analyze(BodyResolveMode.FULL)
|
val bindingContext = expression.analyze(BodyResolveMode.FULL)
|
||||||
@@ -64,10 +64,10 @@ public object KotlinNameSuggester {
|
|||||||
result.addName(defaultName, validator)
|
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>()
|
val result = ArrayList<String>()
|
||||||
|
|
||||||
result.addNamesByType(type, validator)
|
result.addNamesByType(type, validator)
|
||||||
@@ -76,10 +76,10 @@ public object KotlinNameSuggester {
|
|||||||
result.addName(defaultName, validator)
|
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>()
|
val result = ArrayList<String>()
|
||||||
|
|
||||||
result.addNamesByExpression(expression, validator)
|
result.addNamesByExpression(expression, validator)
|
||||||
@@ -88,17 +88,17 @@ public object KotlinNameSuggester {
|
|||||||
result.addName(defaultName, validator)
|
result.addName(defaultName, validator)
|
||||||
}
|
}
|
||||||
|
|
||||||
return ArrayUtil.toStringArray(result)
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
private val COMMON_TYPE_PARAMETER_NAMES = listOf("T", "U", "V", "W", "X", "Y", "Z")
|
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>()
|
val result = ArrayList<String>()
|
||||||
for (i in 0..count - 1) {
|
for (i in 0..count - 1) {
|
||||||
result.add(suggestNameByMultipleNames(COMMON_TYPE_PARAMETER_NAMES, validator))
|
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 bodyPlaceholder = (forExpression.getBody() as JetBlockExpression).getStatements().single()
|
||||||
|
|
||||||
val templateBuilder = TemplateBuilderImpl(forExpression)
|
val templateBuilder = TemplateBuilderImpl(forExpression)
|
||||||
templateBuilder.replaceElement(forExpression.getLoopParameter()!!, ChooseStringExpression(names.asList()))
|
templateBuilder.replaceElement(forExpression.getLoopParameter()!!, ChooseStringExpression(names))
|
||||||
templateBuilder.replaceElement(bodyPlaceholder, ConstantNode(""), false)
|
templateBuilder.replaceElement(bodyPlaceholder, ConstantNode(""), false)
|
||||||
templateBuilder.setEndVariableAfter(bodyPlaceholder)
|
templateBuilder.setEndVariableAfter(bodyPlaceholder)
|
||||||
|
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ public class ChangeFunctionLiteralSignatureFix extends ChangeFunctionSignatureFi
|
|||||||
CollectingNameValidator validator = new CollectingNameValidator();
|
CollectingNameValidator validator = new CollectingNameValidator();
|
||||||
descriptor.clearNonReceiverParameters();
|
descriptor.clearNonReceiverParameters();
|
||||||
for (JetType type : parameterTypes) {
|
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(
|
descriptor.addParameter(
|
||||||
new JetParameterInfo(functionDescriptor, -1, name, type, null, null, JetValVar.None, null)
|
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);
|
return KotlinNameSuggester.INSTANCE$.suggestNameByName(argumentName.getAsName().asString(), validator);
|
||||||
}
|
}
|
||||||
else if (expression != null) {
|
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);
|
return KotlinNameSuggester.INSTANCE$.suggestNameByName("param", validator);
|
||||||
|
|||||||
+1
-1
@@ -821,7 +821,7 @@ class CallableBuilder(val config: CallableBuilderConfiguration) {
|
|||||||
val parameterTypeToNamesMap = HashMap<String, Array<String>>()
|
val parameterTypeToNamesMap = HashMap<String, Array<String>>()
|
||||||
typeCandidates[parameter.typeInfo]!!.forEach { typeCandidate ->
|
typeCandidates[parameter.typeInfo]!!.forEach { typeCandidate ->
|
||||||
val suggestedNames = KotlinNameSuggester.suggestNamesByType(typeCandidate.theType, { true })
|
val suggestedNames = KotlinNameSuggester.suggestNamesByType(typeCandidate.theType, { true })
|
||||||
parameterTypeToNamesMap[typeCandidate.renderedType!!] = suggestedNames
|
parameterTypeToNamesMap[typeCandidate.renderedType!!] = suggestedNames.toTypedArray()
|
||||||
}
|
}
|
||||||
|
|
||||||
// add expression to builder
|
// add expression to builder
|
||||||
|
|||||||
+1
-1
@@ -43,7 +43,7 @@ abstract class TypeInfo(val variance: Variance) {
|
|||||||
|
|
||||||
class ByExpression(val expression: JetExpression, variance: Variance): TypeInfo(variance) {
|
class ByExpression(val expression: JetExpression, variance: Variance): TypeInfo(variance) {
|
||||||
override val possibleNamesFromExpression: Array<String> by Delegates.lazy {
|
override val possibleNamesFromExpression: Array<String> by Delegates.lazy {
|
||||||
KotlinNameSuggester.suggestNamesByExpressionOnly(expression, { true })
|
KotlinNameSuggester.suggestNamesByExpressionOnly(expression, { true }).toTypedArray()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getPossibleTypes(builder: CallableBuilder): List<JetType> =
|
override fun getPossibleTypes(builder: CallableBuilder): List<JetType> =
|
||||||
|
|||||||
+1
-1
@@ -235,7 +235,7 @@ public open class KotlinIntroduceParameterHandler(
|
|||||||
else -> null
|
else -> null
|
||||||
} ?: throw AssertionError("Body element is not found: ${targetParent.getElementTextWithContext()}")
|
} ?: throw AssertionError("Body element is not found: ${targetParent.getElementTextWithContext()}")
|
||||||
val nameValidator = NameValidatorImpl(body, null, NameValidatorImpl.Target.PROPERTIES)
|
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)
|
val parametersUsages = findInternalUsagesOfParametersAndReceiver(targetParent, functionDescriptor)
|
||||||
|
|
||||||
|
|||||||
+5
-5
@@ -197,12 +197,12 @@ public class KotlinIntroduceVariableHandler extends KotlinIntroduceHandlerBase {
|
|||||||
calculateAnchor(commonParent, commonContainer, allReplaces),
|
calculateAnchor(commonParent, commonContainer, allReplaces),
|
||||||
NameValidatorImpl.Target.PROPERTIES
|
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 Ref<JetProperty> propertyRef = new Ref<JetProperty>();
|
||||||
final ArrayList<JetExpression> references = new ArrayList<JetExpression>();
|
final ArrayList<JetExpression> references = new ArrayList<JetExpression>();
|
||||||
final Ref<JetExpression> reference = new Ref<JetExpression>();
|
final Ref<JetExpression> reference = new Ref<JetExpression>();
|
||||||
final Runnable introduceRunnable = introduceVariable(
|
final Runnable introduceRunnable = introduceVariable(
|
||||||
expression, suggestedNames, allReplaces, commonContainer,
|
expression, suggestedNames.get(0), allReplaces, commonContainer,
|
||||||
commonParent, replaceOccurrence, propertyRef, references,
|
commonParent, replaceOccurrence, propertyRef, references,
|
||||||
reference, finalNoTypeInference, expressionType, bindingContext);
|
reference, finalNoTypeInference, expressionType, bindingContext);
|
||||||
CommandProcessor.getInstance().executeCommand(project, new Runnable() {
|
CommandProcessor.getInstance().executeCommand(project, new Runnable() {
|
||||||
@@ -251,7 +251,7 @@ public class KotlinIntroduceVariableHandler extends KotlinIntroduceHandlerBase {
|
|||||||
|
|
||||||
private static Runnable introduceVariable(
|
private static Runnable introduceVariable(
|
||||||
final JetExpression expression,
|
final JetExpression expression,
|
||||||
final String[] suggestedNames,
|
final String nameSuggestion,
|
||||||
final List<JetExpression> allReplaces,
|
final List<JetExpression> allReplaces,
|
||||||
final PsiElement commonContainer,
|
final PsiElement commonContainer,
|
||||||
final PsiElement commonParent,
|
final PsiElement commonParent,
|
||||||
@@ -303,7 +303,7 @@ public class KotlinIntroduceVariableHandler extends KotlinIntroduceHandlerBase {
|
|||||||
PsiElement commonParent,
|
PsiElement commonParent,
|
||||||
List<JetExpression> allReplaces
|
List<JetExpression> allReplaces
|
||||||
) {
|
) {
|
||||||
String variableText = "val " + suggestedNames[0];
|
String variableText = "val " + nameSuggestion;
|
||||||
if (noTypeInference) {
|
if (noTypeInference) {
|
||||||
variableText += ": " + IdeDescriptorRenderers.SOURCE_CODE.renderType(expressionType);
|
variableText += ": " + IdeDescriptorRenderers.SOURCE_CODE.renderType(expressionType);
|
||||||
}
|
}
|
||||||
@@ -449,7 +449,7 @@ public class KotlinIntroduceVariableHandler extends KotlinIntroduceHandlerBase {
|
|||||||
private JetExpression replaceExpression(JetExpression replace) {
|
private JetExpression replaceExpression(JetExpression replace) {
|
||||||
boolean isActualExpression = expression == replace;
|
boolean isActualExpression = expression == replace;
|
||||||
|
|
||||||
JetExpression replacement = psiFactory.createExpression(suggestedNames[0]);
|
JetExpression replacement = psiFactory.createExpression(nameSuggestion);
|
||||||
JetExpression result;
|
JetExpression result;
|
||||||
if (PsiUtilPackage.isFunctionLiteralOutsideParentheses(replace)) {
|
if (PsiUtilPackage.isFunctionLiteralOutsideParentheses(replace)) {
|
||||||
JetFunctionLiteralArgument functionLiteralArgument =
|
JetFunctionLiteralArgument functionLiteralArgument =
|
||||||
|
|||||||
+2
-3
@@ -44,7 +44,7 @@ public class KotlinVariableInplaceIntroducer(
|
|||||||
val addedVariable: JetProperty,
|
val addedVariable: JetProperty,
|
||||||
val originalExpression: JetExpression?,
|
val originalExpression: JetExpression?,
|
||||||
val occurrencesToReplace: Array<JetExpression>,
|
val occurrencesToReplace: Array<JetExpression>,
|
||||||
val suggestedNames: Array<out String>,
|
suggestedNames: List<String>,
|
||||||
val isVar: Boolean,
|
val isVar: Boolean,
|
||||||
val doNotChangeVar: Boolean,
|
val doNotChangeVar: Boolean,
|
||||||
val expressionType: JetType?,
|
val expressionType: JetType?,
|
||||||
@@ -59,8 +59,7 @@ public class KotlinVariableInplaceIntroducer(
|
|||||||
project,
|
project,
|
||||||
editor
|
editor
|
||||||
) {
|
) {
|
||||||
companion object {
|
private val suggestedNames = suggestedNames.toTypedArray()
|
||||||
}
|
|
||||||
|
|
||||||
init {
|
init {
|
||||||
initFormComponents {
|
initFormComponents {
|
||||||
|
|||||||
+1
-2
@@ -69,8 +69,7 @@ public class JetNameSuggesterTest : LightCodeInsightFixtureTestCase() {
|
|||||||
try {
|
try {
|
||||||
JetRefactoringUtil.selectExpression(myFixture.getEditor(), file, object : JetRefactoringUtil.SelectExpressionCallback {
|
JetRefactoringUtil.selectExpression(myFixture.getEditor(), file, object : JetRefactoringUtil.SelectExpressionCallback {
|
||||||
override fun run(expression: JetExpression) {
|
override fun run(expression: JetExpression) {
|
||||||
val names = KotlinNameSuggester.suggestNamesByExpressionAndType(expression, { true }, "value")
|
val names = KotlinNameSuggester.suggestNamesByExpressionAndType(expression, { true }, "value").sort()
|
||||||
Arrays.sort(names)
|
|
||||||
val result = StringUtil.join(names, "\n").trim()
|
val result = StringUtil.join(names, "\n").trim()
|
||||||
assertEquals(expectedResultText, result)
|
assertEquals(expectedResultText, result)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user