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(Errors.USELESS_CAST) { element, diagnostic ->
diff --git a/idea/testData/intentions/conventionNameCalls/replaceGet/inspectionData/expected.xml b/idea/testData/intentions/conventionNameCalls/replaceGet/inspectionData/expected.xml
deleted file mode 100644
index 59d765eeadc..00000000000
--- a/idea/testData/intentions/conventionNameCalls/replaceGet/inspectionData/expected.xml
+++ /dev/null
@@ -1,64 +0,0 @@
-
-
- singleArgument.kt
- 6
- light_idea_test_case
-
- 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"
}
}
}