Introduce Variable: Support extraction of string template fragments

#KT-2089 Fixed
This commit is contained in:
Alexey Sedunov
2015-11-16 16:06:01 +03:00
parent 7dbcceee79
commit f4b4b023a3
40 changed files with 592 additions and 48 deletions
@@ -0,0 +1,3 @@
fun foo(param: Int): String {
return "<selection>abc${pa</selection>ram}def"
}
@@ -0,0 +1 @@
Cannot find an expression to introduce
@@ -0,0 +1,3 @@
fun foo(param: Int): String {
return "<selection>abc$pa</selection>ram"
}
@@ -0,0 +1 @@
Cannot find an expression to introduce
@@ -0,0 +1,3 @@
fun foo(a: Int): String {
return "<selection>abc$a\</selection>ndef"
}
@@ -0,0 +1 @@
Cannot find an expression to introduce
@@ -0,0 +1,6 @@
fun foo(param: Int): String {
val x = "xyfalsez"
val y = "xyFalsez"
val z = false
return "ab<selection>false</selection>def"
}
@@ -0,0 +1,7 @@
fun foo(param: Int): String {
val b = false
val x = "xy${b}z"
val y = "xyFalsez"
val z = false
return "ab${b}def"
}
@@ -0,0 +1,7 @@
fun foo(param: Int): String {
val x = "a1234_"
val y = "-4123a"
val z = "+1243a"
val u = 123
return "ab<selection>123</selection>def"
}
@@ -0,0 +1,8 @@
fun foo(param: Int): String {
val i = 123
val x = "a${i}4_"
val y = "-4${i}a"
val z = "+1243a"
val u = 123
return "ab${i}def"
}
@@ -0,0 +1,6 @@
fun foo(param: Int): String {
val x = "atrue123"
val x = "aTRUE123"
val z = true
return "ab<selection>true</selection>def"
}
@@ -0,0 +1,7 @@
fun foo(param: Int): String {
val b = true
val x = "a${b}123"
val x = "aTRUE123"
val z = true
return "ab${b}def"
}
@@ -0,0 +1,6 @@
fun foo(a: Int): String {
val x = "abc$a"
val y = "abc${a}"
val z = "abc{$a}def"
return "<selection>abc$a</selection>" + "def"
}
@@ -0,0 +1,7 @@
fun foo(a: Int): String {
val s = "abc$a"
val x = s
val y = s
val z = "abc{$a}def"
return s + "def"
}
@@ -0,0 +1,6 @@
fun foo(a: Int): String {
val x = "-${a + 1}"
val y = "x${a + 1}y"
val z = "x${a - 1}y"
return "abc<selection>${a + 1}</selection>def"
}
@@ -0,0 +1,7 @@
fun foo(a: Int): String {
val i = a + 1
val x = "-$i"
val y = "x${i}y"
val z = "x${a - 1}y"
return "abc${i}def"
}
@@ -0,0 +1,6 @@
fun foo(a: Int): String {
val x = "-$a"
val y = "x${a}y"
val z = "x$ay"
return "abc<selection>${a}</selection>def"
}
@@ -0,0 +1,7 @@
fun foo(a: Int): String {
val a1 = a
val x = "-$a1"
val y = "x${a1}y"
val z = "x$ay"
return "abc${a1}def"
}
@@ -0,0 +1,5 @@
fun foo(a: Int): String {
val x = "+cd$a:${a + 1}efg"
val y = "+cd$a${a + 1}efg"
return "ab<selection>cd$a:${a + 1}ef</selection>"
}
@@ -0,0 +1,6 @@
fun foo(a: Int): String {
val s = "cd$a:${a + 1}ef"
val x = "+${s}g"
val y = "+cd$a${a + 1}efg"
return "ab$s"
}
@@ -0,0 +1,5 @@
fun foo(a: Int): String {
val x = "_c$a:${a + 1}d_"
val y = "_$a:${a + 1}d_"
return "ab<selection>c$a:${a + 1}d</selection>ef"
}
@@ -0,0 +1,6 @@
fun foo(a: Int): String {
val s = "c$a:${a + 1}d"
val x = "_${s}_"
val y = "_$a:${a + 1}d_"
return "ab${s}ef"
}
@@ -0,0 +1,5 @@
fun foo(a: Int): String {
val x = "_ab$a:${a + 1}cd__"
val y = "_a$a:${a + 1}cd__"
return "<selection>ab$a:${a + 1}cd</selection>ef"
}
@@ -0,0 +1,6 @@
fun foo(a: Int): String {
val s = "ab$a:${a + 1}cd"
val x = "_${s}__"
val y = "_a$a:${a + 1}cd__"
return "${s}ef"
}
@@ -0,0 +1,9 @@
fun foo(a: Int): String {
val x = """_c$a
:${a + 1}d_"""
val y = "_$a:${a + 1}d_"
val z = """_c$a:${a + 1}d_"""
val u = "_c$a\n:${a + 1}d_"
return """ab<selection>c$a
:${a + 1}d</selection>ef"""
}
@@ -0,0 +1,9 @@
fun foo(a: Int): String {
val s = """c$a
:${a + 1}d"""
val x = """_${s}_"""
val y = "_$a:${a + 1}d_"
val z = """_c$a:${a + 1}d_"""
val u = "_c$a\n:${a + 1}d_"
return """ab${s}ef"""
}
@@ -0,0 +1,6 @@
fun foo(a: Int): String {
val x = "xabc$a"
val y = "${a}abcx"
val z = "xacb$a"
return "<selection>abc</selection>def"
}
@@ -0,0 +1,7 @@
fun foo(a: Int): String {
val s = "abc"
val x = "x$s$a"
val y = "${a}${s}x"
val z = "xacb$a"
return "${s}def"
}
@@ -0,0 +1,6 @@
fun foo(a: Int): String {
val x = "xcd$a"
val y = "${a}cdx"
val z = "xcf$a"
return "ab<selection>cd</selection>ef"
}
@@ -0,0 +1,7 @@
fun foo(a: Int): String {
val s = "cd"
val x = "x$s$a"
val y = "${a}${s}x"
val z = "xcf$a"
return "ab${s}ef"
}
@@ -0,0 +1,6 @@
fun foo(a: Int): String {
val x = "xdef$a"
val y = "${a}defx"
val z = "xddf$a"
return "abc<selection>def</selection>"
}
@@ -0,0 +1,7 @@
fun foo(a: Int): String {
val s = "def"
val x = "x$s$a"
val y = "${a}${s}x"
val z = "xddf$a"
return "abc$s"
}