From 66310806ca73c16d60e324a6b9001a03d7825ce0 Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Tue, 20 Oct 2015 16:01:04 +0300 Subject: [PATCH] KT-9628 Intention&inspection to replace use of "set" operator function with [] #KT-9628 Fixed --- .../inspectionDescriptions/ExplicitGet.html | 5 -- .../ReplaceGetOrSet.html | 5 ++ .../ReplaceGetIntention/description.html | 5 -- .../after.kt.template | 0 .../before.kt.template | 0 .../ReplaceGetOrSetIntention/description.html | 5 ++ idea/src/META-INF/plugin.xml | 6 +- .../jetbrains/kotlin/idea/intentions/Utils.kt | 4 +- .../ReplaceCallWithBinaryOperatorIntention.kt | 3 +- .../ReplaceContainsIntention.kt | 3 +- ...tention.kt => ReplaceGetOrSetIntention.kt} | 53 +++++++++--- .../kotlin/idea/j2k/J2kPostProcessings.kt | 6 +- .../replaceGet/inspectionData/expected.xml | 64 --------------- .../.intention | 2 +- .../acceptableVararg.kt | 0 .../acceptableVararg.kt.after | 0 .../argumentAndFunction.kt | 0 .../argumentAndFunction.kt.after | 0 .../duplicateArguments.kt | 0 .../extensionFunction.kt | 0 .../extensionFunction.kt.after | 0 .../functionalArgument.kt | 0 .../functionalArgument.kt.after | 0 .../inspectionData/expected.xml | 82 +++++++++++++++++++ .../inspectionData/inspections.test | 2 +- .../invalidArgument.kt | 0 .../missingDefaultArgument.kt | 0 .../multiArgument.kt | 0 .../multiArgument.kt.after | 0 .../noArgument.kt | 0 .../notOperator.kt | 0 .../qualifier.kt | 0 .../qualifier.kt.after | 0 .../sanityCheck.kt | 0 .../replaceGetOrSet/set.kt | 9 ++ .../replaceGetOrSet/set.kt.after | 9 ++ .../replaceGetOrSet/set2.kt | 11 +++ .../replaceGetOrSet/set2.kt.after | 11 +++ .../replaceGetOrSet/setValueUsed.kt | 11 +++ .../singleArgument.kt | 2 + .../singleArgument.kt.after | 2 + .../staticMethod.1.java | 0 .../staticMethod.kt | 0 .../{replaceGet => replaceGetOrSet}/super.kt | 0 .../topLevelFun.kt | 0 .../unacceptableVararg.kt | 0 .../unnamedAndNamed.kt | 0 .../JetInspectionTestGenerated.java | 6 +- .../intentions/IntentionTestGenerated.java | 62 +++++++++----- .../for/forThroughListIndices.kt | 4 +- .../for/forThroughListIndicesNE.kt | 2 +- 51 files changed, 248 insertions(+), 126 deletions(-) delete mode 100644 idea/resources/inspectionDescriptions/ExplicitGet.html create mode 100644 idea/resources/inspectionDescriptions/ReplaceGetOrSet.html delete mode 100644 idea/resources/intentionDescriptions/ReplaceGetIntention/description.html rename idea/resources/intentionDescriptions/{ReplaceGetIntention => ReplaceGetOrSetIntention}/after.kt.template (100%) rename idea/resources/intentionDescriptions/{ReplaceGetIntention => ReplaceGetOrSetIntention}/before.kt.template (100%) create mode 100644 idea/resources/intentionDescriptions/ReplaceGetOrSetIntention/description.html rename idea/src/org/jetbrains/kotlin/idea/intentions/conventionNameCalls/{ReplaceGetIntention.kt => ReplaceGetOrSetIntention.kt} (56%) delete mode 100644 idea/testData/intentions/conventionNameCalls/replaceGet/inspectionData/expected.xml rename idea/testData/intentions/conventionNameCalls/{replaceGet => replaceGetOrSet}/.intention (78%) rename idea/testData/intentions/conventionNameCalls/{replaceGet => replaceGetOrSet}/acceptableVararg.kt (100%) rename idea/testData/intentions/conventionNameCalls/{replaceGet => replaceGetOrSet}/acceptableVararg.kt.after (100%) rename idea/testData/intentions/conventionNameCalls/{replaceGet => replaceGetOrSet}/argumentAndFunction.kt (100%) rename idea/testData/intentions/conventionNameCalls/{replaceGet => replaceGetOrSet}/argumentAndFunction.kt.after (100%) rename idea/testData/intentions/conventionNameCalls/{replaceGet => replaceGetOrSet}/duplicateArguments.kt (100%) rename idea/testData/intentions/conventionNameCalls/{replaceGet => replaceGetOrSet}/extensionFunction.kt (100%) rename idea/testData/intentions/conventionNameCalls/{replaceGet => replaceGetOrSet}/extensionFunction.kt.after (100%) rename idea/testData/intentions/conventionNameCalls/{replaceGet => replaceGetOrSet}/functionalArgument.kt (100%) rename idea/testData/intentions/conventionNameCalls/{replaceGet => replaceGetOrSet}/functionalArgument.kt.after (100%) create mode 100644 idea/testData/intentions/conventionNameCalls/replaceGetOrSet/inspectionData/expected.xml rename idea/testData/intentions/conventionNameCalls/{replaceGet => replaceGetOrSet}/inspectionData/inspections.test (61%) rename idea/testData/intentions/conventionNameCalls/{replaceGet => replaceGetOrSet}/invalidArgument.kt (100%) rename idea/testData/intentions/conventionNameCalls/{replaceGet => replaceGetOrSet}/missingDefaultArgument.kt (100%) rename idea/testData/intentions/conventionNameCalls/{replaceGet => replaceGetOrSet}/multiArgument.kt (100%) rename idea/testData/intentions/conventionNameCalls/{replaceGet => replaceGetOrSet}/multiArgument.kt.after (100%) rename idea/testData/intentions/conventionNameCalls/{replaceGet => replaceGetOrSet}/noArgument.kt (100%) rename idea/testData/intentions/conventionNameCalls/{replaceGet => replaceGetOrSet}/notOperator.kt (100%) rename idea/testData/intentions/conventionNameCalls/{replaceGet => replaceGetOrSet}/qualifier.kt (100%) rename idea/testData/intentions/conventionNameCalls/{replaceGet => replaceGetOrSet}/qualifier.kt.after (100%) rename idea/testData/intentions/conventionNameCalls/{replaceGet => replaceGetOrSet}/sanityCheck.kt (100%) create mode 100644 idea/testData/intentions/conventionNameCalls/replaceGetOrSet/set.kt create mode 100644 idea/testData/intentions/conventionNameCalls/replaceGetOrSet/set.kt.after create mode 100644 idea/testData/intentions/conventionNameCalls/replaceGetOrSet/set2.kt create mode 100644 idea/testData/intentions/conventionNameCalls/replaceGetOrSet/set2.kt.after create mode 100644 idea/testData/intentions/conventionNameCalls/replaceGetOrSet/setValueUsed.kt rename idea/testData/intentions/conventionNameCalls/{replaceGet => replaceGetOrSet}/singleArgument.kt (66%) rename idea/testData/intentions/conventionNameCalls/{replaceGet => replaceGetOrSet}/singleArgument.kt.after (64%) rename idea/testData/intentions/conventionNameCalls/{replaceGet => replaceGetOrSet}/staticMethod.1.java (100%) rename idea/testData/intentions/conventionNameCalls/{replaceGet => replaceGetOrSet}/staticMethod.kt (100%) rename idea/testData/intentions/conventionNameCalls/{replaceGet => replaceGetOrSet}/super.kt (100%) rename idea/testData/intentions/conventionNameCalls/{replaceGet => replaceGetOrSet}/topLevelFun.kt (100%) rename idea/testData/intentions/conventionNameCalls/{replaceGet => replaceGetOrSet}/unacceptableVararg.kt (100%) rename idea/testData/intentions/conventionNameCalls/{replaceGet => replaceGetOrSet}/unnamedAndNamed.kt (100%) diff --git a/idea/resources/inspectionDescriptions/ExplicitGet.html b/idea/resources/inspectionDescriptions/ExplicitGet.html deleted file mode 100644 index 5bc1cae187d..00000000000 --- a/idea/resources/inspectionDescriptions/ExplicitGet.html +++ /dev/null @@ -1,5 +0,0 @@ - - -This inspection reports any explicit calls of 'get' which can be replaced by indexing operator [] - - diff --git a/idea/resources/inspectionDescriptions/ReplaceGetOrSet.html b/idea/resources/inspectionDescriptions/ReplaceGetOrSet.html new file mode 100644 index 00000000000..4dae55e30fa --- /dev/null +++ b/idea/resources/inspectionDescriptions/ReplaceGetOrSet.html @@ -0,0 +1,5 @@ + + +This inspection reports any explicit calls of 'get' or 'set' functions which can be replaced by indexing operator [] + + diff --git a/idea/resources/intentionDescriptions/ReplaceGetIntention/description.html b/idea/resources/intentionDescriptions/ReplaceGetIntention/description.html deleted file mode 100644 index 01c3553bfa2..00000000000 --- a/idea/resources/intentionDescriptions/ReplaceGetIntention/description.html +++ /dev/null @@ -1,5 +0,0 @@ - - -This intention replaces get member calls with the array index operator ([]). - - \ No newline at end of file diff --git a/idea/resources/intentionDescriptions/ReplaceGetIntention/after.kt.template b/idea/resources/intentionDescriptions/ReplaceGetOrSetIntention/after.kt.template similarity index 100% rename from idea/resources/intentionDescriptions/ReplaceGetIntention/after.kt.template rename to idea/resources/intentionDescriptions/ReplaceGetOrSetIntention/after.kt.template diff --git a/idea/resources/intentionDescriptions/ReplaceGetIntention/before.kt.template b/idea/resources/intentionDescriptions/ReplaceGetOrSetIntention/before.kt.template similarity index 100% rename from idea/resources/intentionDescriptions/ReplaceGetIntention/before.kt.template rename to idea/resources/intentionDescriptions/ReplaceGetOrSetIntention/before.kt.template diff --git a/idea/resources/intentionDescriptions/ReplaceGetOrSetIntention/description.html b/idea/resources/intentionDescriptions/ReplaceGetOrSetIntention/description.html new file mode 100644 index 00000000000..08810115993 --- /dev/null +++ b/idea/resources/intentionDescriptions/ReplaceGetOrSetIntention/description.html @@ -0,0 +1,5 @@ + + +This intention replaces get or set function calls with the indexing operator ([]). + + \ No newline at end of file diff --git a/idea/src/META-INF/plugin.xml b/idea/src/META-INF/plugin.xml index 29a80afa678..c316b1b16f5 100644 --- a/idea/src/META-INF/plugin.xml +++ b/idea/src/META-INF/plugin.xml @@ -653,7 +653,7 @@ - org.jetbrains.kotlin.idea.intentions.conventionNameCalls.ReplaceGetIntention + org.jetbrains.kotlin.idea.intentions.conventionNameCalls.ReplaceGetOrSetIntention Kotlin @@ -1096,8 +1096,8 @@ level="INFO" /> - ? { +fun KtQualifiedExpression.toResolvedCall(bodyResolveMode: BodyResolveMode): ResolvedCall? { val callExpression = callExpression ?: return null - return callExpression.getResolvedCall(callExpression.analyze()) ?: return null + return callExpression.getResolvedCall(callExpression.analyze(bodyResolveMode)) ?: return null } fun KtExpression.isExitStatement(): Boolean { diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/conventionNameCalls/ReplaceCallWithBinaryOperatorIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/conventionNameCalls/ReplaceCallWithBinaryOperatorIntention.kt index 3aef7dd9a91..e01efbe00e0 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/conventionNameCalls/ReplaceCallWithBinaryOperatorIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/conventionNameCalls/ReplaceCallWithBinaryOperatorIntention.kt @@ -26,13 +26,14 @@ import org.jetbrains.kotlin.psi.KtPsiFactory import org.jetbrains.kotlin.psi.createExpressionByPattern import org.jetbrains.kotlin.resolve.calls.model.ArgumentMatch import org.jetbrains.kotlin.resolve.calls.model.isReallySuccess +import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode import org.jetbrains.kotlin.types.expressions.OperatorConventions public class ReplaceCallWithBinaryOperatorIntention : JetSelfTargetingRangeIntention(javaClass(), "Replace call with binary operator"), HighPriorityAction { override fun applicabilityRange(element: KtDotQualifiedExpression): TextRange? { val operation = operation(element.calleeName) ?: return null - val resolvedCall = element.toResolvedCall() ?: return null + val resolvedCall = element.toResolvedCall(BodyResolveMode.PARTIAL) ?: return null if (!resolvedCall.isReallySuccess()) return null if (resolvedCall.getCall().getTypeArgumentList() != null) return null val argument = resolvedCall.getCall().getValueArguments().singleOrNull() ?: return null diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/conventionNameCalls/ReplaceContainsIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/conventionNameCalls/ReplaceContainsIntention.kt index e6d24f9309b..4ebd7500702 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/conventionNameCalls/ReplaceContainsIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/conventionNameCalls/ReplaceContainsIntention.kt @@ -25,13 +25,14 @@ import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.resolve.calls.model.ArgumentMatch import org.jetbrains.kotlin.resolve.calls.model.isReallySuccess import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns +import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode import org.jetbrains.kotlin.util.OperatorNameConventions public class ReplaceContainsIntention : JetSelfTargetingRangeIntention(javaClass(), "Replace 'contains' call with 'in' operator"), HighPriorityAction { override fun applicabilityRange(element: KtDotQualifiedExpression): TextRange? { if (element.calleeName != OperatorNameConventions.CONTAINS.asString()) return null - val resolvedCall = element.toResolvedCall() ?: return null + val resolvedCall = element.toResolvedCall(BodyResolveMode.PARTIAL) ?: return null if (!resolvedCall.isReallySuccess()) return null val argument = resolvedCall.getCall().getValueArguments().singleOrNull() ?: return null if ((resolvedCall.getArgumentMapping(argument) as ArgumentMatch).valueParameter.getIndex() != 0) return null diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/conventionNameCalls/ReplaceGetIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/conventionNameCalls/ReplaceGetOrSetIntention.kt similarity index 56% rename from idea/src/org/jetbrains/kotlin/idea/intentions/conventionNameCalls/ReplaceGetIntention.kt rename to idea/src/org/jetbrains/kotlin/idea/intentions/conventionNameCalls/ReplaceGetOrSetIntention.kt index 404e91c1a9e..83cd5e44262 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/conventionNameCalls/ReplaceGetIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/conventionNameCalls/ReplaceGetOrSetIntention.kt @@ -20,6 +20,7 @@ import com.intellij.codeInsight.intention.HighPriorityAction import com.intellij.openapi.editor.Editor import com.intellij.openapi.util.TextRange import org.jetbrains.kotlin.descriptors.FunctionDescriptor +import org.jetbrains.kotlin.idea.caches.resolve.analyze import org.jetbrains.kotlin.idea.inspections.IntentionBasedInspection import org.jetbrains.kotlin.idea.intentions.JetSelfTargetingRangeIntention import org.jetbrains.kotlin.idea.intentions.callExpression @@ -29,15 +30,19 @@ import org.jetbrains.kotlin.load.java.descriptors.JavaClassDescriptor import org.jetbrains.kotlin.psi.KtDotQualifiedExpression import org.jetbrains.kotlin.psi.KtPsiFactory import org.jetbrains.kotlin.psi.buildExpression +import org.jetbrains.kotlin.resolve.bindingContextUtil.isUsedAsExpression +import org.jetbrains.kotlin.resolve.calls.callUtil.getResolvedCall import org.jetbrains.kotlin.resolve.calls.model.isReallySuccess +import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode +import org.jetbrains.kotlin.util.OperatorNameConventions -public class ReplaceGetInspection : IntentionBasedInspection( - ReplaceGetIntention(), ReplaceGetInspection.additionalChecker +public class ReplaceGetOrSetInspection : IntentionBasedInspection( + ReplaceGetOrSetIntention(), ReplaceGetOrSetInspection.additionalChecker ) { companion object { val additionalChecker = { expression: KtDotQualifiedExpression -> - (expression.toResolvedCall()!!.resultingDescriptor as FunctionDescriptor).isExplicitOperator() + (expression.toResolvedCall(BodyResolveMode.PARTIAL)!!.resultingDescriptor as FunctionDescriptor).isExplicitOperator() } } } @@ -49,23 +54,35 @@ private fun FunctionDescriptor.isExplicitOperator(): Boolean { overriddenDescriptors.any { it.isExplicitOperator() } } -public class ReplaceGetIntention : JetSelfTargetingRangeIntention(javaClass(), "Replace 'get' call with index operator"), HighPriorityAction { +class ReplaceGetOrSetIntention : JetSelfTargetingRangeIntention( + KtDotQualifiedExpression::class.java, + "Replace 'get' or 'set' call with indexing operator" +), HighPriorityAction { + + private val operatorNames = setOf(OperatorNameConventions.GET, OperatorNameConventions.SET) + override fun applicabilityRange(element: KtDotQualifiedExpression): TextRange? { - val resolvedCall = element.toResolvedCall() ?: return null + val callExpression = element.callExpression ?: return null + val bindingContext = callExpression.analyze(BodyResolveMode.PARTIAL) + val resolvedCall = callExpression.getResolvedCall(bindingContext) ?: return null if (!resolvedCall.isReallySuccess()) return null + val target = resolvedCall.resultingDescriptor as? FunctionDescriptor ?: return null - if (target.name.asString() != "get" || !target.isOperator) return null + if (!target.isOperator || target.name !in operatorNames) return null - val call = element.callExpression ?: return null - if (call.getTypeArgumentList() != null) return null + if (callExpression.getTypeArgumentList() != null) return null - val arguments = call.getValueArguments() + val arguments = callExpression.getValueArguments() if (arguments.isEmpty()) return null if (arguments.any { it.isNamed() }) return null if (!element.isReceiverExpressionWithValue()) return null - return call.getCalleeExpression()!!.getTextRange() + if (target.name == OperatorNameConventions.SET && element.isUsedAsExpression(bindingContext)) return null + + text = "Replace '${target.name.asString()}' call with indexing operator" + + return callExpression.getCalleeExpression()!!.getTextRange() } override fun applyTo(element: KtDotQualifiedExpression, editor: Editor) { @@ -73,13 +90,19 @@ public class ReplaceGetIntention : JetSelfTargetingRangeIntention 0) + } + val expression = KtPsiFactory(element).buildExpression { appendExpression(element.getReceiverExpression()) appendFixedText("[") - val call = element.callExpression!! - for ((index, argument) in call.getValueArguments().withIndex()) { + val arguments = if (isSet) allArguments.dropLast(1) else allArguments + for ((index, argument) in arguments.withIndex()) { if (index > 0) { appendFixedText(",") } @@ -87,7 +110,13 @@ public class ReplaceGetIntention : JetSelfTargetingRangeIntention - Explicit 'get' - Replace 'get' call with index operator - - - - multiArgument.kt - 6 - light_idea_test_case - - Explicit 'get' - Replace 'get' call with index operator - - - - functionalArgument.kt - 6 - light_idea_test_case - - Explicit 'get' - Replace 'get' call with index operator - - - - extensionFunction.kt - 7 - light_idea_test_case - - Explicit 'get' - Replace 'get' call with index operator - - - - argumentAndFunction.kt - 6 - light_idea_test_case - - Explicit 'get' - Replace 'get' call with index operator - - - - acceptableVararg.kt - 6 - light_idea_test_case - - Explicit 'get' - Replace 'get' call with index operator - - - - qualifier.kt - 8 - light_idea_test_case - - Explicit 'get' - Replace 'get' call with index operator - - diff --git a/idea/testData/intentions/conventionNameCalls/replaceGet/.intention b/idea/testData/intentions/conventionNameCalls/replaceGetOrSet/.intention similarity index 78% rename from idea/testData/intentions/conventionNameCalls/replaceGet/.intention rename to idea/testData/intentions/conventionNameCalls/replaceGetOrSet/.intention index 9d0a87bb7ed..1cc0a8bd180 100644 --- a/idea/testData/intentions/conventionNameCalls/replaceGet/.intention +++ b/idea/testData/intentions/conventionNameCalls/replaceGetOrSet/.intention @@ -1 +1 @@ -org.jetbrains.kotlin.idea.intentions.conventionNameCalls.ReplaceGetIntention +org.jetbrains.kotlin.idea.intentions.conventionNameCalls.ReplaceGetOrSetIntention diff --git a/idea/testData/intentions/conventionNameCalls/replaceGet/acceptableVararg.kt b/idea/testData/intentions/conventionNameCalls/replaceGetOrSet/acceptableVararg.kt similarity index 100% rename from idea/testData/intentions/conventionNameCalls/replaceGet/acceptableVararg.kt rename to idea/testData/intentions/conventionNameCalls/replaceGetOrSet/acceptableVararg.kt diff --git a/idea/testData/intentions/conventionNameCalls/replaceGet/acceptableVararg.kt.after b/idea/testData/intentions/conventionNameCalls/replaceGetOrSet/acceptableVararg.kt.after similarity index 100% rename from idea/testData/intentions/conventionNameCalls/replaceGet/acceptableVararg.kt.after rename to idea/testData/intentions/conventionNameCalls/replaceGetOrSet/acceptableVararg.kt.after diff --git a/idea/testData/intentions/conventionNameCalls/replaceGet/argumentAndFunction.kt b/idea/testData/intentions/conventionNameCalls/replaceGetOrSet/argumentAndFunction.kt similarity index 100% rename from idea/testData/intentions/conventionNameCalls/replaceGet/argumentAndFunction.kt rename to idea/testData/intentions/conventionNameCalls/replaceGetOrSet/argumentAndFunction.kt diff --git a/idea/testData/intentions/conventionNameCalls/replaceGet/argumentAndFunction.kt.after b/idea/testData/intentions/conventionNameCalls/replaceGetOrSet/argumentAndFunction.kt.after similarity index 100% rename from idea/testData/intentions/conventionNameCalls/replaceGet/argumentAndFunction.kt.after rename to idea/testData/intentions/conventionNameCalls/replaceGetOrSet/argumentAndFunction.kt.after diff --git a/idea/testData/intentions/conventionNameCalls/replaceGet/duplicateArguments.kt b/idea/testData/intentions/conventionNameCalls/replaceGetOrSet/duplicateArguments.kt similarity index 100% rename from idea/testData/intentions/conventionNameCalls/replaceGet/duplicateArguments.kt rename to idea/testData/intentions/conventionNameCalls/replaceGetOrSet/duplicateArguments.kt diff --git a/idea/testData/intentions/conventionNameCalls/replaceGet/extensionFunction.kt b/idea/testData/intentions/conventionNameCalls/replaceGetOrSet/extensionFunction.kt similarity index 100% rename from idea/testData/intentions/conventionNameCalls/replaceGet/extensionFunction.kt rename to idea/testData/intentions/conventionNameCalls/replaceGetOrSet/extensionFunction.kt diff --git a/idea/testData/intentions/conventionNameCalls/replaceGet/extensionFunction.kt.after b/idea/testData/intentions/conventionNameCalls/replaceGetOrSet/extensionFunction.kt.after similarity index 100% rename from idea/testData/intentions/conventionNameCalls/replaceGet/extensionFunction.kt.after rename to idea/testData/intentions/conventionNameCalls/replaceGetOrSet/extensionFunction.kt.after diff --git a/idea/testData/intentions/conventionNameCalls/replaceGet/functionalArgument.kt b/idea/testData/intentions/conventionNameCalls/replaceGetOrSet/functionalArgument.kt similarity index 100% rename from idea/testData/intentions/conventionNameCalls/replaceGet/functionalArgument.kt rename to idea/testData/intentions/conventionNameCalls/replaceGetOrSet/functionalArgument.kt diff --git a/idea/testData/intentions/conventionNameCalls/replaceGet/functionalArgument.kt.after b/idea/testData/intentions/conventionNameCalls/replaceGetOrSet/functionalArgument.kt.after similarity index 100% rename from idea/testData/intentions/conventionNameCalls/replaceGet/functionalArgument.kt.after rename to idea/testData/intentions/conventionNameCalls/replaceGetOrSet/functionalArgument.kt.after diff --git a/idea/testData/intentions/conventionNameCalls/replaceGetOrSet/inspectionData/expected.xml b/idea/testData/intentions/conventionNameCalls/replaceGetOrSet/inspectionData/expected.xml new file mode 100644 index 00000000000..056dad6b970 --- /dev/null +++ b/idea/testData/intentions/conventionNameCalls/replaceGetOrSet/inspectionData/expected.xml @@ -0,0 +1,82 @@ + + + singleArgument.kt + 8 + light_idea_test_case + + + Replace 'get' call with indexing operator + + + + multiArgument.kt + 6 + light_idea_test_case + + + Replace 'get' call with indexing operator + + + + functionalArgument.kt + 6 + light_idea_test_case + + + Replace 'get' call with indexing operator + + + + extensionFunction.kt + 7 + light_idea_test_case + + + Replace 'get' call with indexing operator + + + + argumentAndFunction.kt + 6 + light_idea_test_case + + + Replace 'get' call with indexing operator + + + + acceptableVararg.kt + 6 + light_idea_test_case + + + Replace 'get' call with indexing operator + + + + qualifier.kt + 8 + light_idea_test_case + + + Replace 'get' call with indexing operator + + + + set.kt + 8 + light_idea_test_case + + + Replace 'set' call with indexing operator + + + + set2.kt + 9 + light_idea_test_case + + + Replace 'set' call with indexing operator + + diff --git a/idea/testData/intentions/conventionNameCalls/replaceGet/inspectionData/inspections.test b/idea/testData/intentions/conventionNameCalls/replaceGetOrSet/inspectionData/inspections.test similarity index 61% rename from idea/testData/intentions/conventionNameCalls/replaceGet/inspectionData/inspections.test rename to idea/testData/intentions/conventionNameCalls/replaceGetOrSet/inspectionData/inspections.test index b4f00d0ba2f..3049fb8bebe 100644 --- a/idea/testData/intentions/conventionNameCalls/replaceGet/inspectionData/inspections.test +++ b/idea/testData/intentions/conventionNameCalls/replaceGetOrSet/inspectionData/inspections.test @@ -1 +1 @@ -// INSPECTION_CLASS: org.jetbrains.kotlin.idea.intentions.conventionNameCalls.ReplaceGetInspection +// INSPECTION_CLASS: org.jetbrains.kotlin.idea.intentions.conventionNameCalls.ReplaceGetOrSetInspection diff --git a/idea/testData/intentions/conventionNameCalls/replaceGet/invalidArgument.kt b/idea/testData/intentions/conventionNameCalls/replaceGetOrSet/invalidArgument.kt similarity index 100% rename from idea/testData/intentions/conventionNameCalls/replaceGet/invalidArgument.kt rename to idea/testData/intentions/conventionNameCalls/replaceGetOrSet/invalidArgument.kt diff --git a/idea/testData/intentions/conventionNameCalls/replaceGet/missingDefaultArgument.kt b/idea/testData/intentions/conventionNameCalls/replaceGetOrSet/missingDefaultArgument.kt similarity index 100% rename from idea/testData/intentions/conventionNameCalls/replaceGet/missingDefaultArgument.kt rename to idea/testData/intentions/conventionNameCalls/replaceGetOrSet/missingDefaultArgument.kt diff --git a/idea/testData/intentions/conventionNameCalls/replaceGet/multiArgument.kt b/idea/testData/intentions/conventionNameCalls/replaceGetOrSet/multiArgument.kt similarity index 100% rename from idea/testData/intentions/conventionNameCalls/replaceGet/multiArgument.kt rename to idea/testData/intentions/conventionNameCalls/replaceGetOrSet/multiArgument.kt diff --git a/idea/testData/intentions/conventionNameCalls/replaceGet/multiArgument.kt.after b/idea/testData/intentions/conventionNameCalls/replaceGetOrSet/multiArgument.kt.after similarity index 100% rename from idea/testData/intentions/conventionNameCalls/replaceGet/multiArgument.kt.after rename to idea/testData/intentions/conventionNameCalls/replaceGetOrSet/multiArgument.kt.after diff --git a/idea/testData/intentions/conventionNameCalls/replaceGet/noArgument.kt b/idea/testData/intentions/conventionNameCalls/replaceGetOrSet/noArgument.kt similarity index 100% rename from idea/testData/intentions/conventionNameCalls/replaceGet/noArgument.kt rename to idea/testData/intentions/conventionNameCalls/replaceGetOrSet/noArgument.kt diff --git a/idea/testData/intentions/conventionNameCalls/replaceGet/notOperator.kt b/idea/testData/intentions/conventionNameCalls/replaceGetOrSet/notOperator.kt similarity index 100% rename from idea/testData/intentions/conventionNameCalls/replaceGet/notOperator.kt rename to idea/testData/intentions/conventionNameCalls/replaceGetOrSet/notOperator.kt diff --git a/idea/testData/intentions/conventionNameCalls/replaceGet/qualifier.kt b/idea/testData/intentions/conventionNameCalls/replaceGetOrSet/qualifier.kt similarity index 100% rename from idea/testData/intentions/conventionNameCalls/replaceGet/qualifier.kt rename to idea/testData/intentions/conventionNameCalls/replaceGetOrSet/qualifier.kt diff --git a/idea/testData/intentions/conventionNameCalls/replaceGet/qualifier.kt.after b/idea/testData/intentions/conventionNameCalls/replaceGetOrSet/qualifier.kt.after similarity index 100% rename from idea/testData/intentions/conventionNameCalls/replaceGet/qualifier.kt.after rename to idea/testData/intentions/conventionNameCalls/replaceGetOrSet/qualifier.kt.after diff --git a/idea/testData/intentions/conventionNameCalls/replaceGet/sanityCheck.kt b/idea/testData/intentions/conventionNameCalls/replaceGetOrSet/sanityCheck.kt similarity index 100% rename from idea/testData/intentions/conventionNameCalls/replaceGet/sanityCheck.kt rename to idea/testData/intentions/conventionNameCalls/replaceGetOrSet/sanityCheck.kt diff --git a/idea/testData/intentions/conventionNameCalls/replaceGetOrSet/set.kt b/idea/testData/intentions/conventionNameCalls/replaceGetOrSet/set.kt new file mode 100644 index 00000000000..a7183c945fd --- /dev/null +++ b/idea/testData/intentions/conventionNameCalls/replaceGetOrSet/set.kt @@ -0,0 +1,9 @@ +// INTENTION_TEXT: Replace 'set' call with indexing operator + +class C { + operator fun set(s: String, value: Int) {} +} + +fun foo() { + C().set("x", 1) +} diff --git a/idea/testData/intentions/conventionNameCalls/replaceGetOrSet/set.kt.after b/idea/testData/intentions/conventionNameCalls/replaceGetOrSet/set.kt.after new file mode 100644 index 00000000000..bfbe28b8aa5 --- /dev/null +++ b/idea/testData/intentions/conventionNameCalls/replaceGetOrSet/set.kt.after @@ -0,0 +1,9 @@ +// INTENTION_TEXT: Replace 'set' call with indexing operator + +class C { + operator fun set(s: String, value: Int) {} +} + +fun foo() { + C()["x"] = 1 +} diff --git a/idea/testData/intentions/conventionNameCalls/replaceGetOrSet/set2.kt b/idea/testData/intentions/conventionNameCalls/replaceGetOrSet/set2.kt new file mode 100644 index 00000000000..d4d490d5f37 --- /dev/null +++ b/idea/testData/intentions/conventionNameCalls/replaceGetOrSet/set2.kt @@ -0,0 +1,11 @@ +// INTENTION_TEXT: Replace 'set' call with indexing operator + +class C { + operator fun set(s: String, value: Int) {} +} + +class D(val c: C) { + fun foo() { + this.c.set("x", 1) + } +} diff --git a/idea/testData/intentions/conventionNameCalls/replaceGetOrSet/set2.kt.after b/idea/testData/intentions/conventionNameCalls/replaceGetOrSet/set2.kt.after new file mode 100644 index 00000000000..4dadfcb3d69 --- /dev/null +++ b/idea/testData/intentions/conventionNameCalls/replaceGetOrSet/set2.kt.after @@ -0,0 +1,11 @@ +// INTENTION_TEXT: Replace 'set' call with indexing operator + +class C { + operator fun set(s: String, value: Int) {} +} + +class D(val c: C) { + fun foo() { + this.c["x"] = 1 + } +} diff --git a/idea/testData/intentions/conventionNameCalls/replaceGetOrSet/setValueUsed.kt b/idea/testData/intentions/conventionNameCalls/replaceGetOrSet/setValueUsed.kt new file mode 100644 index 00000000000..44a3ef2d5fd --- /dev/null +++ b/idea/testData/intentions/conventionNameCalls/replaceGetOrSet/setValueUsed.kt @@ -0,0 +1,11 @@ +// IS_APPLICABLE: false + +class C { + operator fun set(s: String, value: Int): Boolean = true +} + +class D(val c: C) { + fun foo(): Boolean { + return this.c.set("x", 1) + } +} diff --git a/idea/testData/intentions/conventionNameCalls/replaceGet/singleArgument.kt b/idea/testData/intentions/conventionNameCalls/replaceGetOrSet/singleArgument.kt similarity index 66% rename from idea/testData/intentions/conventionNameCalls/replaceGet/singleArgument.kt rename to idea/testData/intentions/conventionNameCalls/replaceGetOrSet/singleArgument.kt index 81ee1da68cb..0120bd84bc7 100644 --- a/idea/testData/intentions/conventionNameCalls/replaceGet/singleArgument.kt +++ b/idea/testData/intentions/conventionNameCalls/replaceGetOrSet/singleArgument.kt @@ -1,3 +1,5 @@ +// INTENTION_TEXT: Replace 'get' call with indexing operator + fun test() { class Test{ operator fun get(i: Int) : Int = 0 diff --git a/idea/testData/intentions/conventionNameCalls/replaceGet/singleArgument.kt.after b/idea/testData/intentions/conventionNameCalls/replaceGetOrSet/singleArgument.kt.after similarity index 64% rename from idea/testData/intentions/conventionNameCalls/replaceGet/singleArgument.kt.after rename to idea/testData/intentions/conventionNameCalls/replaceGetOrSet/singleArgument.kt.after index cdfc28a0de9..6193fd26156 100644 --- a/idea/testData/intentions/conventionNameCalls/replaceGet/singleArgument.kt.after +++ b/idea/testData/intentions/conventionNameCalls/replaceGetOrSet/singleArgument.kt.after @@ -1,3 +1,5 @@ +// INTENTION_TEXT: Replace 'get' call with indexing operator + fun test() { class Test{ operator fun get(i: Int) : Int = 0 diff --git a/idea/testData/intentions/conventionNameCalls/replaceGet/staticMethod.1.java b/idea/testData/intentions/conventionNameCalls/replaceGetOrSet/staticMethod.1.java similarity index 100% rename from idea/testData/intentions/conventionNameCalls/replaceGet/staticMethod.1.java rename to idea/testData/intentions/conventionNameCalls/replaceGetOrSet/staticMethod.1.java diff --git a/idea/testData/intentions/conventionNameCalls/replaceGet/staticMethod.kt b/idea/testData/intentions/conventionNameCalls/replaceGetOrSet/staticMethod.kt similarity index 100% rename from idea/testData/intentions/conventionNameCalls/replaceGet/staticMethod.kt rename to idea/testData/intentions/conventionNameCalls/replaceGetOrSet/staticMethod.kt diff --git a/idea/testData/intentions/conventionNameCalls/replaceGet/super.kt b/idea/testData/intentions/conventionNameCalls/replaceGetOrSet/super.kt similarity index 100% rename from idea/testData/intentions/conventionNameCalls/replaceGet/super.kt rename to idea/testData/intentions/conventionNameCalls/replaceGetOrSet/super.kt diff --git a/idea/testData/intentions/conventionNameCalls/replaceGet/topLevelFun.kt b/idea/testData/intentions/conventionNameCalls/replaceGetOrSet/topLevelFun.kt similarity index 100% rename from idea/testData/intentions/conventionNameCalls/replaceGet/topLevelFun.kt rename to idea/testData/intentions/conventionNameCalls/replaceGetOrSet/topLevelFun.kt diff --git a/idea/testData/intentions/conventionNameCalls/replaceGet/unacceptableVararg.kt b/idea/testData/intentions/conventionNameCalls/replaceGetOrSet/unacceptableVararg.kt similarity index 100% rename from idea/testData/intentions/conventionNameCalls/replaceGet/unacceptableVararg.kt rename to idea/testData/intentions/conventionNameCalls/replaceGetOrSet/unacceptableVararg.kt diff --git a/idea/testData/intentions/conventionNameCalls/replaceGet/unnamedAndNamed.kt b/idea/testData/intentions/conventionNameCalls/replaceGetOrSet/unnamedAndNamed.kt similarity index 100% rename from idea/testData/intentions/conventionNameCalls/replaceGet/unnamedAndNamed.kt rename to idea/testData/intentions/conventionNameCalls/replaceGetOrSet/unnamedAndNamed.kt diff --git a/idea/tests/org/jetbrains/kotlin/idea/codeInsight/JetInspectionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/codeInsight/JetInspectionTestGenerated.java index f0891b1e9c6..8dcf2321bf4 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/codeInsight/JetInspectionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/codeInsight/JetInspectionTestGenerated.java @@ -49,9 +49,9 @@ public class JetInspectionTestGenerated extends AbstractJetInspectionTest { doTest(fileName); } - @TestMetadata("conventionNameCalls/replaceGet/inspectionData/inspections.test") - public void testConventionNameCalls_replaceGet_inspectionData_Inspections_test() throws Exception { - String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/conventionNameCalls/replaceGet/inspectionData/inspections.test"); + @TestMetadata("conventionNameCalls/replaceGetOrSet/inspectionData/inspections.test") + public void testConventionNameCalls_replaceGetOrSet_inspectionData_Inspections_test() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/conventionNameCalls/replaceGetOrSet/inspectionData/inspections.test"); doTest(fileName); } diff --git a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java index 728d11416f1..40f67478d5b 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java @@ -2772,119 +2772,137 @@ public class IntentionTestGenerated extends AbstractIntentionTest { } } - @TestMetadata("idea/testData/intentions/conventionNameCalls/replaceGet") + @TestMetadata("idea/testData/intentions/conventionNameCalls/replaceGetOrSet") @TestDataPath("$PROJECT_ROOT") @RunWith(JUnit3RunnerWithInners.class) - public static class ReplaceGet extends AbstractIntentionTest { + public static class ReplaceGetOrSet extends AbstractIntentionTest { @TestMetadata("acceptableVararg.kt") public void testAcceptableVararg() throws Exception { - String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/conventionNameCalls/replaceGet/acceptableVararg.kt"); + String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/conventionNameCalls/replaceGetOrSet/acceptableVararg.kt"); doTest(fileName); } - public void testAllFilesPresentInReplaceGet() throws Exception { - JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/intentions/conventionNameCalls/replaceGet"), Pattern.compile("^([\\w\\-_]+)\\.kt$"), true); + public void testAllFilesPresentInReplaceGetOrSet() throws Exception { + JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/intentions/conventionNameCalls/replaceGetOrSet"), Pattern.compile("^([\\w\\-_]+)\\.kt$"), true); } @TestMetadata("argumentAndFunction.kt") public void testArgumentAndFunction() throws Exception { - String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/conventionNameCalls/replaceGet/argumentAndFunction.kt"); + String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/conventionNameCalls/replaceGetOrSet/argumentAndFunction.kt"); doTest(fileName); } @TestMetadata("duplicateArguments.kt") public void testDuplicateArguments() throws Exception { - String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/conventionNameCalls/replaceGet/duplicateArguments.kt"); + String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/conventionNameCalls/replaceGetOrSet/duplicateArguments.kt"); doTest(fileName); } @TestMetadata("extensionFunction.kt") public void testExtensionFunction() throws Exception { - String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/conventionNameCalls/replaceGet/extensionFunction.kt"); + String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/conventionNameCalls/replaceGetOrSet/extensionFunction.kt"); doTest(fileName); } @TestMetadata("functionalArgument.kt") public void testFunctionalArgument() throws Exception { - String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/conventionNameCalls/replaceGet/functionalArgument.kt"); + String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/conventionNameCalls/replaceGetOrSet/functionalArgument.kt"); doTest(fileName); } @TestMetadata("invalidArgument.kt") public void testInvalidArgument() throws Exception { - String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/conventionNameCalls/replaceGet/invalidArgument.kt"); + String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/conventionNameCalls/replaceGetOrSet/invalidArgument.kt"); doTest(fileName); } @TestMetadata("missingDefaultArgument.kt") public void testMissingDefaultArgument() throws Exception { - String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/conventionNameCalls/replaceGet/missingDefaultArgument.kt"); + String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/conventionNameCalls/replaceGetOrSet/missingDefaultArgument.kt"); doTest(fileName); } @TestMetadata("multiArgument.kt") public void testMultiArgument() throws Exception { - String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/conventionNameCalls/replaceGet/multiArgument.kt"); + String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/conventionNameCalls/replaceGetOrSet/multiArgument.kt"); doTest(fileName); } @TestMetadata("noArgument.kt") public void testNoArgument() throws Exception { - String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/conventionNameCalls/replaceGet/noArgument.kt"); + String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/conventionNameCalls/replaceGetOrSet/noArgument.kt"); doTest(fileName); } @TestMetadata("notOperator.kt") public void testNotOperator() throws Exception { - String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/conventionNameCalls/replaceGet/notOperator.kt"); + String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/conventionNameCalls/replaceGetOrSet/notOperator.kt"); doTest(fileName); } @TestMetadata("qualifier.kt") public void testQualifier() throws Exception { - String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/conventionNameCalls/replaceGet/qualifier.kt"); + String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/conventionNameCalls/replaceGetOrSet/qualifier.kt"); doTest(fileName); } @TestMetadata("sanityCheck.kt") public void testSanityCheck() throws Exception { - String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/conventionNameCalls/replaceGet/sanityCheck.kt"); + String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/conventionNameCalls/replaceGetOrSet/sanityCheck.kt"); + doTest(fileName); + } + + @TestMetadata("set.kt") + public void testSet() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/conventionNameCalls/replaceGetOrSet/set.kt"); + doTest(fileName); + } + + @TestMetadata("set2.kt") + public void testSet2() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/conventionNameCalls/replaceGetOrSet/set2.kt"); + doTest(fileName); + } + + @TestMetadata("setValueUsed.kt") + public void testSetValueUsed() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/conventionNameCalls/replaceGetOrSet/setValueUsed.kt"); doTest(fileName); } @TestMetadata("singleArgument.kt") public void testSingleArgument() throws Exception { - String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/conventionNameCalls/replaceGet/singleArgument.kt"); + String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/conventionNameCalls/replaceGetOrSet/singleArgument.kt"); doTest(fileName); } @TestMetadata("staticMethod.kt") public void testStaticMethod() throws Exception { - String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/conventionNameCalls/replaceGet/staticMethod.kt"); + String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/conventionNameCalls/replaceGetOrSet/staticMethod.kt"); doTest(fileName); } @TestMetadata("super.kt") public void testSuper() throws Exception { - String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/conventionNameCalls/replaceGet/super.kt"); + String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/conventionNameCalls/replaceGetOrSet/super.kt"); doTest(fileName); } @TestMetadata("topLevelFun.kt") public void testTopLevelFun() throws Exception { - String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/conventionNameCalls/replaceGet/topLevelFun.kt"); + String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/conventionNameCalls/replaceGetOrSet/topLevelFun.kt"); doTest(fileName); } @TestMetadata("unacceptableVararg.kt") public void testUnacceptableVararg() throws Exception { - String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/conventionNameCalls/replaceGet/unacceptableVararg.kt"); + String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/conventionNameCalls/replaceGetOrSet/unacceptableVararg.kt"); doTest(fileName); } @TestMetadata("unnamedAndNamed.kt") public void testUnnamedAndNamed() throws Exception { - String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/conventionNameCalls/replaceGet/unnamedAndNamed.kt"); + String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/conventionNameCalls/replaceGetOrSet/unnamedAndNamed.kt"); doTest(fileName); } diff --git a/j2k/testData/fileOrElement/for/forThroughListIndices.kt b/j2k/testData/fileOrElement/for/forThroughListIndices.kt index 8670db1fb31..45bd0422a63 100644 --- a/j2k/testData/fileOrElement/for/forThroughListIndices.kt +++ b/j2k/testData/fileOrElement/for/forThroughListIndices.kt @@ -3,13 +3,13 @@ import java.util.ArrayList internal class C { fun foo1(list: MutableList) { for (i in list.indices) { - list.set(i, "a") + list[i] = "a" } } fun foo2(list: ArrayList) { for (i in list.indices) { - list.set(i, "a") + list[i] = "a" } } } \ No newline at end of file diff --git a/j2k/testData/fileOrElement/for/forThroughListIndicesNE.kt b/j2k/testData/fileOrElement/for/forThroughListIndicesNE.kt index 9b869460c7f..5f43fbc1370 100644 --- a/j2k/testData/fileOrElement/for/forThroughListIndicesNE.kt +++ b/j2k/testData/fileOrElement/for/forThroughListIndicesNE.kt @@ -3,7 +3,7 @@ import java.util.ArrayList internal class C { fun foo(list: MutableList) { for (i in list.indices) { - list.set(i, "a") + list[i] = "a" } } }