diff --git a/idea/resources/intentionDescriptions/ReplaceSubstringWithDropIntention/after.kt.template b/idea/resources/intentionDescriptions/ReplaceSubstringWithDropIntention/after.kt.template
deleted file mode 100644
index bc7391ca86c..00000000000
--- a/idea/resources/intentionDescriptions/ReplaceSubstringWithDropIntention/after.kt.template
+++ /dev/null
@@ -1 +0,0 @@
-s.drop(5)
\ No newline at end of file
diff --git a/idea/resources/intentionDescriptions/ReplaceSubstringWithDropIntention/before.kt.template b/idea/resources/intentionDescriptions/ReplaceSubstringWithDropIntention/before.kt.template
deleted file mode 100644
index 6ede901326c..00000000000
--- a/idea/resources/intentionDescriptions/ReplaceSubstringWithDropIntention/before.kt.template
+++ /dev/null
@@ -1 +0,0 @@
-s.substring(5)
\ No newline at end of file
diff --git a/idea/resources/intentionDescriptions/ReplaceSubstringWithDropIntention/description.html b/idea/resources/intentionDescriptions/ReplaceSubstringWithDropIntention/description.html
deleted file mode 100644
index df9b27cfaa7..00000000000
--- a/idea/resources/intentionDescriptions/ReplaceSubstringWithDropIntention/description.html
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-This intention replaces 'substring' call with 'drop' call.
-
-
diff --git a/idea/resources/intentionDescriptions/ReplaceSubstringWithDropLastIntention/description.html b/idea/resources/intentionDescriptions/ReplaceSubstringWithDropLastIntention/description.html
index 40ed08cd378..7482e9e2132 100644
--- a/idea/resources/intentionDescriptions/ReplaceSubstringWithDropLastIntention/description.html
+++ b/idea/resources/intentionDescriptions/ReplaceSubstringWithDropLastIntention/description.html
@@ -1,5 +1,5 @@
-This intention replaces 'substring' call with 'dropLast' call.
+This intention replaces call like s.substring(0, s.length - x) with s.dropLast(x) call.
diff --git a/idea/resources/intentionDescriptions/ReplaceSubstringWithSubstringAfterIntention/description.html b/idea/resources/intentionDescriptions/ReplaceSubstringWithSubstringAfterIntention/description.html
index 883344cd71d..93f3fe3f69c 100644
--- a/idea/resources/intentionDescriptions/ReplaceSubstringWithSubstringAfterIntention/description.html
+++ b/idea/resources/intentionDescriptions/ReplaceSubstringWithSubstringAfterIntention/description.html
@@ -1,5 +1,5 @@
-This intention replaces 'substring' and 'indexOf' calls with 'substringAfter' call.
+This intention replaces call like s.substring(s.indexOf(x)) with s.substringAfter(x) call.
diff --git a/idea/resources/intentionDescriptions/ReplaceSubstringWithSubstringBeforeIntention/description.html b/idea/resources/intentionDescriptions/ReplaceSubstringWithSubstringBeforeIntention/description.html
index 27730fc21a0..18f291720ad 100644
--- a/idea/resources/intentionDescriptions/ReplaceSubstringWithSubstringBeforeIntention/description.html
+++ b/idea/resources/intentionDescriptions/ReplaceSubstringWithSubstringBeforeIntention/description.html
@@ -1,5 +1,5 @@
-This intention replaces 'substring' and 'indexOf' calls with 'substringBefore' call.
+This intention replaces call like s.substring(0, s.indexOf(x)) with s.substringBefore(x) call.
diff --git a/idea/resources/intentionDescriptions/ReplaceSubstringWithTakeIntention/description.html b/idea/resources/intentionDescriptions/ReplaceSubstringWithTakeIntention/description.html
index f5863546a1a..a9d4286de2c 100644
--- a/idea/resources/intentionDescriptions/ReplaceSubstringWithTakeIntention/description.html
+++ b/idea/resources/intentionDescriptions/ReplaceSubstringWithTakeIntention/description.html
@@ -1,5 +1,5 @@
-This intention replaces 'substring' call with 'take' call.
+This intention replaces call like s.substring(0, x) with s.take(x) call.
diff --git a/idea/src/META-INF/plugin.xml b/idea/src/META-INF/plugin.xml
index 3ff4756c90d..ae9456d9d3e 100644
--- a/idea/src/META-INF/plugin.xml
+++ b/idea/src/META-INF/plugin.xml
@@ -880,11 +880,6 @@
Kotlin
-
- org.jetbrains.kotlin.idea.intentions.ReplaceSubstringWithDropIntention
- Kotlin
-
-
org.jetbrains.kotlin.idea.intentions.ReplaceSubstringWithDropLastIntention
Kotlin
diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/ReplaceSubstringIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/ReplaceSubstringIntention.kt
index 49ac34766dc..3c39edc0de3 100644
--- a/idea/src/org/jetbrains/kotlin/idea/intentions/ReplaceSubstringIntention.kt
+++ b/idea/src/org/jetbrains/kotlin/idea/intentions/ReplaceSubstringIntention.kt
@@ -16,37 +16,54 @@
package org.jetbrains.kotlin.idea.intentions
-import com.intellij.codeInsight.intention.HighPriorityAction
import com.intellij.openapi.util.TextRange
import org.jetbrains.kotlin.idea.caches.resolve.analyze
+import org.jetbrains.kotlin.idea.intentions.branchedTransformations.evaluatesTo
import org.jetbrains.kotlin.idea.intentions.branchedTransformations.isStableVariable
-import org.jetbrains.kotlin.psi.KtConstantExpression
-import org.jetbrains.kotlin.psi.KtDotQualifiedExpression
+import org.jetbrains.kotlin.psi.*
+import org.jetbrains.kotlin.resolve.calls.callUtil.getResolvedCall
import org.jetbrains.kotlin.resolve.constants.evaluate.ConstantExpressionEvaluator
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameUnsafe
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
-abstract class ReplaceSubstringIntention(text: String) : SelfTargetingRangeIntention(KtDotQualifiedExpression::class.java, text), HighPriorityAction {
+abstract class ReplaceSubstringIntention(text: String) : SelfTargetingRangeIntention(KtDotQualifiedExpression::class.java, text) {
protected abstract fun applicabilityRangeInner(element: KtDotQualifiedExpression): TextRange?
override fun applicabilityRange(element: KtDotQualifiedExpression): TextRange? {
- if (!element.receiverExpression.isStableVariable()) return null
- val resolvedCall = element.toResolvedCall(BodyResolveMode.PARTIAL) ?: return null
- if (resolvedCall.resultingDescriptor.fqNameUnsafe.asString() != "kotlin.text.substring") return null
- return applicabilityRangeInner(element)
+ if (element.receiverExpression.isStableVariable() && element.isMethodCall("kotlin.text.substring")) {
+ return applicabilityRangeInner(element)
+ }
+ return null
+ }
+
+ protected fun isIndexOfCall(expression: KtExpression?, expectedReceiver: KtExpression): Boolean {
+ return expression is KtDotQualifiedExpression
+ && expression.isMethodCall("kotlin.text.indexOf")
+ && expression.receiverExpression.evaluatesTo(expectedReceiver)
+ && expression.callExpression!!.valueArguments.size == 1
+ }
+
+ private fun KtDotQualifiedExpression.isMethodCall(fqMethodName: String): Boolean {
+ val resolvedCall = toResolvedCall(BodyResolveMode.PARTIAL) ?: return false
+ return resolvedCall.resultingDescriptor.fqNameUnsafe.asString() == fqMethodName
}
protected fun KtDotQualifiedExpression.isFirstArgumentZero(): Boolean {
- val resolvedCall = toResolvedCall(BodyResolveMode.PARTIAL) ?: return false
+ val bindingContext = analyze()
+ val resolvedCall = callExpression.getResolvedCall(bindingContext) ?: return false
val expression = resolvedCall.call.valueArguments[0].getArgumentExpression() as? KtConstantExpression ?: return false
- val bindingContext = expression.analyze()
val constant = ConstantExpressionEvaluator.getConstant(expression, bindingContext) ?: return false
val constantType = bindingContext.getType(expression) ?: return false
return constant.getValue(constantType) == 0
}
protected fun getTextRange(element: KtDotQualifiedExpression): TextRange? {
- return element.callExpression!!.textRange
+ return element.callExpression?.textRange
}
-}
+
+ protected fun KtDotQualifiedExpression.replaceWith(pattern: String, argument: KtExpression) {
+ val psiFactory = KtPsiFactory(this)
+ replace(psiFactory.createExpressionByPattern(pattern, receiverExpression, argument))
+ }
+}
\ No newline at end of file
diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/ReplaceSubstringWithDropIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/ReplaceSubstringWithDropIntention.kt
deleted file mode 100644
index 0666991176c..00000000000
--- a/idea/src/org/jetbrains/kotlin/idea/intentions/ReplaceSubstringWithDropIntention.kt
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright 2010-2016 JetBrains s.r.o.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.jetbrains.kotlin.idea.intentions
-
-import com.intellij.openapi.editor.Editor
-import com.intellij.openapi.util.TextRange
-import org.jetbrains.kotlin.psi.KtDotQualifiedExpression
-import org.jetbrains.kotlin.psi.KtPsiFactory
-import org.jetbrains.kotlin.psi.createExpressionByPattern
-
-class ReplaceSubstringWithDropIntention : ReplaceSubstringIntention("Replace 'substring' call with 'drop' call") {
- override fun applicabilityRangeInner(element: KtDotQualifiedExpression): TextRange? {
- val arguments = element.callExpression?.valueArguments ?: return null
- if (arguments.count() != 1) return null
- return getTextRange(element)
- }
-
- override fun applyTo(element: KtDotQualifiedExpression, editor: Editor?) {
- val receiver = element.receiverExpression
- val argument = element.callExpression!!.valueArguments[0].getArgumentExpression()!!
-
- val psiFactory = KtPsiFactory(element)
- element.replace(psiFactory.createExpressionByPattern("$0.drop($1)", receiver, argument))
- }
-}
diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/ReplaceSubstringWithDropLastIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/ReplaceSubstringWithDropLastIntention.kt
index 0f6ace5f314..6a518392e6b 100644
--- a/idea/src/org/jetbrains/kotlin/idea/intentions/ReplaceSubstringWithDropLastIntention.kt
+++ b/idea/src/org/jetbrains/kotlin/idea/intentions/ReplaceSubstringWithDropLastIntention.kt
@@ -25,7 +25,7 @@ import org.jetbrains.kotlin.psi.*
class ReplaceSubstringWithDropLastIntention : ReplaceSubstringIntention("Replace 'substring' call with 'dropLast' call") {
override fun applicabilityRangeInner(element: KtDotQualifiedExpression): TextRange? {
val arguments = element.callExpression?.valueArguments ?: return null
- if (arguments.count() != 2 || !element.isFirstArgumentZero()) return null
+ if (arguments.size != 2 || !element.isFirstArgumentZero()) return null
val secondArgumentExpression = arguments[1].getArgumentExpression()
@@ -39,12 +39,10 @@ class ReplaceSubstringWithDropLastIntention : ReplaceSubstringIntention("Replace
}
override fun applyTo(element: KtDotQualifiedExpression, editor: Editor?) {
- val receiver = element.receiverExpression
val argument = element.callExpression!!.valueArguments[1].getArgumentExpression()!!
val rightExpression = (argument as KtBinaryExpression).right!!
- val psiFactory = KtPsiFactory(element)
- element.replace(psiFactory.createExpressionByPattern("$0.dropLast($1)", receiver, rightExpression))
+ element.replaceWith("$0.dropLast($1)", rightExpression)
}
private fun isLengthAccess(expression: KtExpression?, expectedReceiver: KtExpression): Boolean {
diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/ReplaceSubstringWithSubstringBeforeAfterIntentions.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/ReplaceSubstringWithSubstringBeforeAfterIntentions.kt
index d749bf77fe1..73f65dc7aa0 100644
--- a/idea/src/org/jetbrains/kotlin/idea/intentions/ReplaceSubstringWithSubstringBeforeAfterIntentions.kt
+++ b/idea/src/org/jetbrains/kotlin/idea/intentions/ReplaceSubstringWithSubstringBeforeAfterIntentions.kt
@@ -27,7 +27,7 @@ class ReplaceSubstringWithSubstringAfterIntention : ReplaceSubstringIntention("R
override fun applicabilityRangeInner(element: KtDotQualifiedExpression): TextRange? {
val arguments = element.callExpression?.valueArguments ?: return null
- if (arguments.count() == 1 && isIndexOfCall(arguments[0].getArgumentExpression(), element.receiverExpression)) {
+ if (arguments.size == 1 && isIndexOfCall(arguments[0].getArgumentExpression(), element.receiverExpression)) {
return getTextRange(element)
}
@@ -45,7 +45,7 @@ class ReplaceSubstringWithSubstringBeforeIntention : ReplaceSubstringIntention("
override fun applicabilityRangeInner(element: KtDotQualifiedExpression): TextRange? {
val arguments = element.callExpression?.valueArguments ?: return null
- if (arguments.count() == 2
+ if (arguments.size == 2
&& element.isFirstArgumentZero()
&& isIndexOfCall(arguments[1].getArgumentExpression(), element.receiverExpression)) {
return getTextRange(element)
@@ -61,21 +61,6 @@ class ReplaceSubstringWithSubstringBeforeIntention : ReplaceSubstringIntention("
}
}
-
-private fun KtDotQualifiedExpression.replaceWith(pattern: String, argument: KtExpression) {
- val psiFactory = KtPsiFactory(this)
- replace(psiFactory.createExpressionByPattern(pattern, receiverExpression, argument))
-}
-
private fun KtDotQualifiedExpression.getArgumentExpression(index: Int): KtExpression {
return callExpression!!.valueArguments[index].getArgumentExpression()!!
}
-
-private fun isIndexOfCall(expression: KtExpression?, expectedReceiver: KtExpression): Boolean {
- if (expression !is KtDotQualifiedExpression) return false
- val resolvedCall = expression.toResolvedCall(BodyResolveMode.PARTIAL) ?: return false
- if (resolvedCall.resultingDescriptor.fqNameUnsafe.asString() != "kotlin.text.indexOf") return false
- if (!expression.receiverExpression.evaluatesTo(expectedReceiver)) return false
- return expression.callExpression!!.valueArguments.count() == 1
-}
-
diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/ReplaceSubstringWithTakeIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/ReplaceSubstringWithTakeIntention.kt
index 58c686867d9..6e17dd7097c 100644
--- a/idea/src/org/jetbrains/kotlin/idea/intentions/ReplaceSubstringWithTakeIntention.kt
+++ b/idea/src/org/jetbrains/kotlin/idea/intentions/ReplaceSubstringWithTakeIntention.kt
@@ -25,17 +25,14 @@ import org.jetbrains.kotlin.psi.createExpressionByPattern
class ReplaceSubstringWithTakeIntention : ReplaceSubstringIntention("Replace 'substring' call with 'take' call") {
override fun applicabilityRangeInner(element: KtDotQualifiedExpression): TextRange? {
val arguments = element.callExpression?.valueArguments ?: return null
- if (arguments.count() == 2 && element.isFirstArgumentZero()) {
+ if (arguments.size == 2 && element.isFirstArgumentZero()) {
return getTextRange(element)
}
return null
}
override fun applyTo(element: KtDotQualifiedExpression, editor: Editor?) {
- val receiver = element.receiverExpression
val argument = element.callExpression!!.valueArguments[1].getArgumentExpression()!!
-
- val psiFactory = KtPsiFactory(element)
- element.replace(psiFactory.createExpressionByPattern("$0.take($1)", receiver, argument))
+ element.replaceWith("$0.take($1)", argument)
}
}
diff --git a/idea/testData/intentions/replaceSubstringWithDrop/.intention b/idea/testData/intentions/replaceSubstringWithDrop/.intention
deleted file mode 100644
index 3dd0f221200..00000000000
--- a/idea/testData/intentions/replaceSubstringWithDrop/.intention
+++ /dev/null
@@ -1 +0,0 @@
-org.jetbrains.kotlin.idea.intentions.ReplaceSubstringWithDropIntention
\ No newline at end of file
diff --git a/idea/testData/intentions/replaceSubstringWithDrop/replaceWithDrop.kt b/idea/testData/intentions/replaceSubstringWithDrop/replaceWithDrop.kt
deleted file mode 100644
index d0c031db4ed..00000000000
--- a/idea/testData/intentions/replaceSubstringWithDrop/replaceWithDrop.kt
+++ /dev/null
@@ -1,5 +0,0 @@
-// WITH_RUNTIME
-
-fun foo(s: String) {
- s.substring(4)
-}
\ No newline at end of file
diff --git a/idea/testData/intentions/replaceSubstringWithDrop/replaceWithDrop.kt.after b/idea/testData/intentions/replaceSubstringWithDrop/replaceWithDrop.kt.after
deleted file mode 100644
index 5d3f38ae406..00000000000
--- a/idea/testData/intentions/replaceSubstringWithDrop/replaceWithDrop.kt.after
+++ /dev/null
@@ -1,5 +0,0 @@
-// WITH_RUNTIME
-
-fun foo(s: String) {
- s.drop(4)
-}
\ No newline at end of file
diff --git a/idea/testData/intentions/replaceSubstringWithDrop/semicolon.kt b/idea/testData/intentions/replaceSubstringWithDrop/semicolon.kt
deleted file mode 100644
index 3b682cb4190..00000000000
--- a/idea/testData/intentions/replaceSubstringWithDrop/semicolon.kt
+++ /dev/null
@@ -1,5 +0,0 @@
-// WITH_RUNTIME
-
-fun foo(s: String) {
- s.substring(4);
-}
\ No newline at end of file
diff --git a/idea/testData/intentions/replaceSubstringWithDrop/semicolon.kt.after b/idea/testData/intentions/replaceSubstringWithDrop/semicolon.kt.after
deleted file mode 100644
index 9a0b9134d6b..00000000000
--- a/idea/testData/intentions/replaceSubstringWithDrop/semicolon.kt.after
+++ /dev/null
@@ -1,5 +0,0 @@
-// WITH_RUNTIME
-
-fun foo(s: String) {
- s.drop(4);
-}
\ No newline at end of file
diff --git a/idea/testData/intentions/replaceSubstringWithDrop/substringWithTwoArguments.kt b/idea/testData/intentions/replaceSubstringWithDrop/substringWithTwoArguments.kt
deleted file mode 100644
index f791c078b76..00000000000
--- a/idea/testData/intentions/replaceSubstringWithDrop/substringWithTwoArguments.kt
+++ /dev/null
@@ -1,6 +0,0 @@
-// IS_APPLICABLE: false
-// WITH_RUNTIME
-
-fun foo(s: String) {
- s.substring(0, 10)
-}
\ No newline at end of file
diff --git a/idea/testData/intentions/replaceSubstringWithDropLast/methodCallReceiver.kt b/idea/testData/intentions/replaceSubstringWithDropLast/methodCallReceiver.kt
new file mode 100644
index 00000000000..cf2ef46af17
--- /dev/null
+++ b/idea/testData/intentions/replaceSubstringWithDropLast/methodCallReceiver.kt
@@ -0,0 +1,10 @@
+// WITH_RUNTIME
+// IS_APPLICABLE: false
+
+class A() {
+ fun bar(): String = null!!
+}
+
+fun foo(a: A) {
+ a.bar().substring(0, a.bar().length - 5)
+}
\ No newline at end of file
diff --git a/idea/testData/intentions/replaceSubstringWithSubstringAfter/methodCallReceiver.kt b/idea/testData/intentions/replaceSubstringWithSubstringAfter/methodCallReceiver.kt
new file mode 100644
index 00000000000..4885d5ee9d0
--- /dev/null
+++ b/idea/testData/intentions/replaceSubstringWithSubstringAfter/methodCallReceiver.kt
@@ -0,0 +1,10 @@
+// WITH_RUNTIME
+// IS_APPLICABLE: false
+
+class A() {
+ fun bar(): String = null!!
+}
+
+fun foo(a: A) {
+ a.bar().substring(a.bar().indexOf('x'))
+}
\ No newline at end of file
diff --git a/idea/testData/intentions/replaceSubstringWithSubstringBefore/methodCallReceiver.kt b/idea/testData/intentions/replaceSubstringWithSubstringBefore/methodCallReceiver.kt
new file mode 100644
index 00000000000..74f9dde72a4
--- /dev/null
+++ b/idea/testData/intentions/replaceSubstringWithSubstringBefore/methodCallReceiver.kt
@@ -0,0 +1,10 @@
+// WITH_RUNTIME
+// IS_APPLICABLE: false
+
+class A() {
+ fun bar(): String = null!!
+}
+
+fun foo(a: A) {
+ a.bar().substring(0, a.bar().indexOf('x'))
+}
\ No newline at end of file
diff --git a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java
index f3c9fed4608..56771b91627 100644
--- a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java
+++ b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java
@@ -7573,33 +7573,6 @@ public class IntentionTestGenerated extends AbstractIntentionTest {
}
}
- @TestMetadata("idea/testData/intentions/replaceSubstringWithDrop")
- @TestDataPath("$PROJECT_ROOT")
- @RunWith(JUnit3RunnerWithInners.class)
- public static class ReplaceSubstringWithDrop extends AbstractIntentionTest {
- public void testAllFilesPresentInReplaceSubstringWithDrop() throws Exception {
- KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/intentions/replaceSubstringWithDrop"), Pattern.compile("^([\\w\\-_]+)\\.kt$"), true);
- }
-
- @TestMetadata("replaceWithDrop.kt")
- public void testReplaceWithDrop() throws Exception {
- String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/replaceSubstringWithDrop/replaceWithDrop.kt");
- doTest(fileName);
- }
-
- @TestMetadata("semicolon.kt")
- public void testSemicolon() throws Exception {
- String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/replaceSubstringWithDrop/semicolon.kt");
- doTest(fileName);
- }
-
- @TestMetadata("substringWithTwoArguments.kt")
- public void testSubstringWithTwoArguments() throws Exception {
- String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/replaceSubstringWithDrop/substringWithTwoArguments.kt");
- doTest(fileName);
- }
- }
-
@TestMetadata("idea/testData/intentions/replaceSubstringWithDropLast")
@TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)
@@ -7614,6 +7587,12 @@ public class IntentionTestGenerated extends AbstractIntentionTest {
doTest(fileName);
}
+ @TestMetadata("methodCallReceiver.kt")
+ public void testMethodCallReceiver() throws Exception {
+ String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/replaceSubstringWithDropLast/methodCallReceiver.kt");
+ doTest(fileName);
+ }
+
@TestMetadata("nonZeroFirstArgument.kt")
public void testNonZeroFirstArgument() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/replaceSubstringWithDropLast/nonZeroFirstArgument.kt");
@@ -7647,6 +7626,12 @@ public class IntentionTestGenerated extends AbstractIntentionTest {
doTest(fileName);
}
+ @TestMetadata("methodCallReceiver.kt")
+ public void testMethodCallReceiver() throws Exception {
+ String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/replaceSubstringWithSubstringAfter/methodCallReceiver.kt");
+ doTest(fileName);
+ }
+
@TestMetadata("replaceWithSubstringAfter.kt")
public void testReplaceWithSubstringAfter() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/replaceSubstringWithSubstringAfter/replaceWithSubstringAfter.kt");
@@ -7674,6 +7659,12 @@ public class IntentionTestGenerated extends AbstractIntentionTest {
doTest(fileName);
}
+ @TestMetadata("methodCallReceiver.kt")
+ public void testMethodCallReceiver() throws Exception {
+ String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/replaceSubstringWithSubstringBefore/methodCallReceiver.kt");
+ doTest(fileName);
+ }
+
@TestMetadata("nonZeroFirstArgument.kt")
public void testNonZeroFirstArgument() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/replaceSubstringWithSubstringBefore/nonZeroFirstArgument.kt");