Merge pull request #808 from mcgee/KT-10196

KT-10196: Suggest to replace 'substring' calls by take/drop/dropLast calls when possible
This commit is contained in:
Dmitry Jemerov
2016-01-15 19:52:35 +01:00
52 changed files with 612 additions and 0 deletions
@@ -0,0 +1 @@
org.jetbrains.kotlin.idea.intentions.ReplaceSubstringWithDropLastIntention
@@ -0,0 +1,7 @@
// WITH_RUNTIME
class A(val x: String)
fun foo(a: A) {
a.x.substring<caret>(0, a.x.length - 5)
}
@@ -0,0 +1,7 @@
// WITH_RUNTIME
class A(val x: String)
fun foo(a: A) {
a.x.dropLast(5)
}
@@ -0,0 +1,10 @@
// WITH_RUNTIME
// IS_APPLICABLE: false
class A() {
fun bar(): String = null!!
}
fun foo(a: A) {
a.bar().substring<caret>(0, a.bar().length - 5)
}
@@ -0,0 +1,6 @@
// IS_APPLICABLE: false
// WITH_RUNTIME
fun foo(s: String) {
s.substring<caret>(3, s.length - 5)
}
@@ -0,0 +1,5 @@
// WITH_RUNTIME
fun foo(s: String) {
s.substring<caret>(0, s.length - 5)
}
@@ -0,0 +1,5 @@
// WITH_RUNTIME
fun foo(s: String) {
s.dropLast(5)
}
@@ -0,0 +1,5 @@
// WITH_RUNTIME
fun foo(s: String) {
s.substring<caret>(0, s.length - 5);
}
@@ -0,0 +1,5 @@
// WITH_RUNTIME
fun foo(s: String) {
s.dropLast(5);
}
@@ -0,0 +1 @@
org.jetbrains.kotlin.idea.intentions.ReplaceSubstringWithSubstringAfterIntention
@@ -0,0 +1,7 @@
// WITH_RUNTIME
class A(val x: String)
fun foo(a: A) {
a.x.substring<caret>(a.x.indexOf('x'))
}
@@ -0,0 +1,7 @@
// WITH_RUNTIME
class A(val x: String)
fun foo(a: A) {
a.x.substringAfter('x')
}
@@ -0,0 +1,10 @@
// WITH_RUNTIME
// IS_APPLICABLE: false
class A() {
fun bar(): String = null!!
}
fun foo(a: A) {
a.bar().substring<caret>(a.bar().indexOf('x'))
}
@@ -0,0 +1,5 @@
// WITH_RUNTIME
fun foo(s: String) {
s.substring<caret>(s.indexOf('x'))
}
@@ -0,0 +1,5 @@
// WITH_RUNTIME
fun foo(s: String) {
s.substringAfter('x')
}
@@ -0,0 +1,5 @@
// WITH_RUNTIME
fun foo(s: String) {
s.substring<caret>(s.indexOf('x'));
}
@@ -0,0 +1,5 @@
// WITH_RUNTIME
fun foo(s: String) {
s.substringAfter('x');
}
@@ -0,0 +1 @@
org.jetbrains.kotlin.idea.intentions.ReplaceSubstringWithSubstringBeforeIntention
@@ -0,0 +1,7 @@
// WITH_RUNTIME
class A(val x: String)
fun foo(a: A) {
a.x.substring<caret>(0, a.x.indexOf('x'))
}
@@ -0,0 +1,7 @@
// WITH_RUNTIME
class A(val x: String)
fun foo(a: A) {
a.x.substringBefore('x')
}
@@ -0,0 +1,10 @@
// WITH_RUNTIME
// IS_APPLICABLE: false
class A() {
fun bar(): String = null!!
}
fun foo(a: A) {
a.bar().substring<caret>(0, a.bar().indexOf('x'))
}
@@ -0,0 +1,6 @@
// IS_APPLICABLE: false
// WITH_RUNTIME
fun foo(s: String) {
s.substring<caret>(1, s.indexOf('x'))
}
@@ -0,0 +1,5 @@
// WITH_RUNTIME
fun foo(s: String) {
s.substring<caret>(0, s.indexOf('x'))
}
@@ -0,0 +1,5 @@
// WITH_RUNTIME
fun foo(s: String) {
s.substringBefore('x')
}
@@ -0,0 +1,5 @@
// WITH_RUNTIME
fun foo(s: String) {
s.substring<caret>(0, s.indexOf('x'));
}
@@ -0,0 +1,5 @@
// WITH_RUNTIME
fun foo(s: String) {
s.substringBefore('x');
}
@@ -0,0 +1 @@
org.jetbrains.kotlin.idea.intentions.ReplaceSubstringWithTakeIntention
@@ -0,0 +1,8 @@
// IS_APPLICABLE: false
// WITH_RUNTIME
const val x = 0
fun foo(s: String) {
s.substring<caret>(x, 10)
}
@@ -0,0 +1,6 @@
// IS_APPLICABLE: false
// WITH_RUNTIME
fun foo(s: String) {
s.substring<caret>(1 - 1, 10)
}
@@ -0,0 +1,6 @@
// IS_APPLICABLE: false
// WITH_RUNTIME
fun foo(s: String) {
s.substring<caret>(1, 10)
}
@@ -0,0 +1,5 @@
// WITH_RUNTIME
fun foo(s: String) {
s.substring<caret>(0, 10)
}
@@ -0,0 +1,5 @@
// WITH_RUNTIME
fun foo(s: String) {
s.take(10)
}
@@ -0,0 +1,5 @@
// WITH_RUNTIME
fun foo(s: String) {
s.substring<caret>(0, 10);
}
@@ -0,0 +1,5 @@
// WITH_RUNTIME
fun foo(s: String) {
s.take(10);
}