Inline adds parentheses when it is necessary.

Test data for Remove Unnecessary Parentheses was updated, since parentheses in foo && (bar && baz) is not "unnecessary": removing it changes program semantics.

 #KT-2637 in progress
This commit is contained in:
Evgeny Gerashchenko
2013-07-08 19:19:41 +04:00
parent a394afcce1
commit 55b221776b
57 changed files with 413 additions and 21 deletions
@@ -0,0 +1,4 @@
fun f() {
val v = s1 + s2
println(<caret>v[1])
}
@@ -0,0 +1,3 @@
fun f() {
println((s1 + s2)[1])
}
@@ -0,0 +1,4 @@
fun f() {
val v = foo()
println(<caret>v[1])
}
@@ -0,0 +1,3 @@
fun f() {
println(foo()[1])
}
@@ -0,0 +1,4 @@
fun f() {
val v = 150 + 150
println(<caret>v * 1)
}
@@ -0,0 +1,3 @@
fun f() {
println((150 + 150) * 1)
}
@@ -0,0 +1,4 @@
fun f() {
val v = 150 * 2
println(<caret>v + 0)
}
@@ -0,0 +1,3 @@
fun f() {
println(150 * 2 + 0)
}
@@ -0,0 +1,4 @@
fun f() {
val v = -predicate
println(<caret>v())
}
@@ -0,0 +1,3 @@
fun f() {
println((-predicate)())
}
@@ -0,0 +1,4 @@
fun f() {
val v = foo[1]
println(<caret>v())
}
@@ -0,0 +1,3 @@
fun f() {
println(foo[1]())
}
@@ -0,0 +1,4 @@
fun f() {
val v = 2..3
println(<caret>v: IntRange)
}
@@ -0,0 +1,3 @@
fun f() {
println((2..3): IntRange)
}
@@ -0,0 +1,4 @@
fun f() {
val v = -1
println(<caret>v: Int)
}
@@ -0,0 +1,3 @@
fun f() {
println(-1: Int)
}
@@ -0,0 +1,4 @@
fun f() {
val v = 2 + 3
println(if (true) 1 else <caret>v)
}
@@ -0,0 +1,3 @@
fun f() {
println(if (true) 1 else 2 + 3)
}
@@ -0,0 +1,4 @@
fun f() {
val v = if (true) a else b
println(<caret>v[0])
}
@@ -0,0 +1,3 @@
fun f() {
println((if (true) a else b)[0])
}
@@ -0,0 +1,7 @@
import java.util.ArrayList
fun f() {
val a = ArrayList<Int>()
val v = if (true) 1 else 2
println(a[<caret>v])
}
@@ -0,0 +1,6 @@
import java.util.ArrayList
fun f() {
val a = ArrayList<Int>()
println(a[if (true) 1 else 2])
}
@@ -0,0 +1,4 @@
fun f() {
val v = if (true) 1 else 2
println(<caret>v * 1)
}
@@ -0,0 +1,3 @@
fun f() {
println((if (true) 1 else 2) * 1)
}
@@ -0,0 +1,4 @@
fun f() {
val v = if (true) 1 else 2
println(1 * <caret>v)
}
@@ -0,0 +1,3 @@
fun f() {
println(1 * if (true) 1 else 2)
}
@@ -0,0 +1,4 @@
fun f() {
val v = if (true) 1 else 2
println(1 * <caret>v + 2)
}
@@ -0,0 +1,3 @@
fun f() {
println(1 * (if (true) 1 else 2) + 2)
}
@@ -0,0 +1,4 @@
fun f() {
val v = if (true) 1 else 2
println((1 * <caret>v) + 2)
}
@@ -0,0 +1,3 @@
fun f() {
println((1 * if (true) 1 else 2) + 2)
}
@@ -0,0 +1,4 @@
fun f() {
val v = if (true) a else b
println(<caret>v++)
}
@@ -0,0 +1,3 @@
fun f() {
println((if (true) a else b)++)
}
@@ -0,0 +1,4 @@
fun f() {
val v = if (true) a else b
println(+<caret>v)
}
@@ -0,0 +1,3 @@
fun f() {
println(+if (true) a else b)
}
@@ -0,0 +1,4 @@
fun f() {
val v = foo()
println(<caret>v is String)
}
@@ -0,0 +1,3 @@
fun f() {
println(foo() is String)
}
@@ -0,0 +1,4 @@
fun f() {
val v = "" is String
println(<caret>v.toString())
}
@@ -0,0 +1,3 @@
fun f() {
println(("" is String).toString())
}
@@ -0,0 +1,4 @@
fun f() {
val v = a - b
println(c - <caret>v)
}
@@ -0,0 +1,3 @@
fun f() {
println(c - (a - b))
}
@@ -0,0 +1,4 @@
fun f() {
val v = a && b
println(c && <caret>v)
}
@@ -0,0 +1,3 @@
fun f() {
println(c && a && b)
}
@@ -0,0 +1,4 @@
fun f() {
val v = 150 - 150
println(<caret>v + 1)
}
@@ -0,0 +1,3 @@
fun f() {
println(150 - 150 + 1)
}
@@ -0,0 +1,4 @@
fun f() {
val v = y++
println(-<caret>v)
}
@@ -0,0 +1,3 @@
fun f() {
println(-y++)
}
@@ -0,0 +1,4 @@
fun f() {
val v = -y
println(<caret>v!!)
}
@@ -0,0 +1,3 @@
fun f() {
println((-y)!!)
}
@@ -0,0 +1,4 @@
fun f() {
val v = 150 + 150
println(<caret>v.toString())
}
@@ -0,0 +1,3 @@
fun f() {
println((150 + 150).toString())
}
@@ -0,0 +1,4 @@
fun f() {
val v = foo()
println(<caret>v.toString())
}
@@ -0,0 +1,3 @@
fun f() {
println(foo().toString())
}
@@ -0,0 +1,5 @@
fun f() {
// this case is not processed specifically in implementation, but it works
val x = -y
println(5-<caret>x)
}
@@ -0,0 +1,4 @@
fun f() {
// this case is not processed specifically in implementation, but it works
println(5- -y)
}