PSI Pattern Matching: Add equivalence tests for JetPsiUnifier
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
// WITH_RUNTIME
|
||||
fun foo() {
|
||||
when {
|
||||
true -> <selection>{
|
||||
val a = object: Function0<Int> {
|
||||
override fun invoke(): Int = 1
|
||||
}
|
||||
val b = object: Function0<Int> {
|
||||
override fun invoke(): Int = a() + 1
|
||||
}
|
||||
println(a() - b())
|
||||
}</selection>
|
||||
|
||||
true -> {
|
||||
val b = object: Function0<Int> {
|
||||
override fun invoke(): Int = 1
|
||||
}
|
||||
val a = object: Function0<Int> {
|
||||
override fun invoke(): Int = b() + 1
|
||||
}
|
||||
println(b() - a())
|
||||
}
|
||||
|
||||
true -> {
|
||||
val b = object: Function0<Int> {
|
||||
override fun invoke(): Int = 1
|
||||
}
|
||||
val a = object: Function0<Int> {
|
||||
override fun invoke(): Int = b() + 1
|
||||
}
|
||||
println(a() - b())
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
val a = object: Function0<Int> {
|
||||
override fun invoke(): Int = 1
|
||||
}
|
||||
val b = object: Function0<Int> {
|
||||
override fun invoke(): Int = a() + 1
|
||||
}
|
||||
println(a() - b())
|
||||
}
|
||||
|
||||
{
|
||||
val b = object: Function0<Int> {
|
||||
override fun invoke(): Int = 1
|
||||
}
|
||||
val a = object: Function0<Int> {
|
||||
override fun invoke(): Int = b() + 1
|
||||
}
|
||||
println(b() - a())
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
// WITH_RUNTIME
|
||||
fun foo() {
|
||||
when {
|
||||
true -> <selection>{
|
||||
fun a() = 1
|
||||
fun b() = a() + 1
|
||||
println(a() - b())
|
||||
}</selection>
|
||||
|
||||
true -> {
|
||||
fun b() = 1
|
||||
fun a() = b() + 1
|
||||
println(b() - a())
|
||||
}
|
||||
|
||||
true -> {
|
||||
fun b() = 1
|
||||
fun a() = b() + 1
|
||||
println(a() - b())
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
fun a() = 1
|
||||
fun b() = a() + 1
|
||||
println(a() - b())
|
||||
}
|
||||
|
||||
{
|
||||
fun b() = 1
|
||||
fun a() = b() + 1
|
||||
println(b() - a())
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
// WITH_RUNTIME
|
||||
fun foo() {
|
||||
when {
|
||||
true -> <selection>{
|
||||
val a = 1
|
||||
val b = a + 1
|
||||
println(a - b)
|
||||
}</selection>
|
||||
|
||||
true -> {
|
||||
val b = 1
|
||||
val a = b + 1
|
||||
println(b - a)
|
||||
}
|
||||
|
||||
true -> {
|
||||
val b = 1
|
||||
val a = b + 1
|
||||
println(a - b)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
val a = 1
|
||||
val b = a + 1
|
||||
println(a - b)
|
||||
}
|
||||
|
||||
{
|
||||
val b = 1
|
||||
val a = b + 1
|
||||
println(b - a)
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
fun foo(a: Int) {
|
||||
@A
|
||||
while (true) {
|
||||
@B
|
||||
while (true) {
|
||||
if (a > 0) break@A
|
||||
if (a < 0) <selection>break@B</selection>
|
||||
}
|
||||
|
||||
@B
|
||||
while (true) {
|
||||
if (a > 0) break@A
|
||||
if (a < 0) break@B
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
break@B
|
||||
@@ -0,0 +1,16 @@
|
||||
fun foo(a: Int) {
|
||||
@A
|
||||
while (true) {
|
||||
@B
|
||||
while (true) {
|
||||
if (a > 0) <selection>continue@A</selection>
|
||||
if (a < 0) continue@B
|
||||
}
|
||||
|
||||
@B
|
||||
while (true) {
|
||||
if (a > 0) continue@A
|
||||
if (a < 0) continue@B
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
continue@A
|
||||
|
||||
continue@A
|
||||
@@ -0,0 +1,24 @@
|
||||
// WITH_RUNTIME
|
||||
fun foo(a: Int, b: Int) {
|
||||
var t = a
|
||||
<selection>do {
|
||||
println((t))
|
||||
t++
|
||||
} while (t != (a + b))</selection>
|
||||
|
||||
var u = a
|
||||
do {
|
||||
println(t)
|
||||
t++
|
||||
} while (u != a + b)
|
||||
|
||||
while (t != a + b) {
|
||||
println(t)
|
||||
t++
|
||||
}
|
||||
|
||||
do {
|
||||
println(t)
|
||||
t++
|
||||
} while (t != a + b)
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
do {
|
||||
println((t))
|
||||
t++
|
||||
} while (t != (a + b))
|
||||
|
||||
do {
|
||||
println(t)
|
||||
t++
|
||||
} while (t != a + b)
|
||||
@@ -0,0 +1,18 @@
|
||||
// WITH_RUNTIME
|
||||
fun foo(a: Int, b: Int) {
|
||||
<selection>for (i in a - b..a + b) {
|
||||
println(i*i)
|
||||
}</selection>
|
||||
|
||||
for (k in a - b..a + b) {
|
||||
println(k*k)
|
||||
}
|
||||
|
||||
for (i in a..a + b) {
|
||||
println(i*i)
|
||||
}
|
||||
|
||||
for (i in (a - b..a + b)) {
|
||||
println(i*i)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
for (i in a - b..a + b) {
|
||||
println(i*i)
|
||||
}
|
||||
|
||||
for (k in a - b..a + b) {
|
||||
println(k*k)
|
||||
}
|
||||
|
||||
for (i in (a - b..a + b)) {
|
||||
println(i*i)
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
// WITH_RUNTIME
|
||||
fun foo(a: Int, b: Int) {
|
||||
<selection>if ((a) + b > 0) {
|
||||
println(a*(b))
|
||||
}</selection>
|
||||
|
||||
println(a*b)
|
||||
|
||||
if (a + b > 0) {
|
||||
println(a*(b))
|
||||
}
|
||||
|
||||
if (a + b > 0) {
|
||||
println((a*b))
|
||||
}
|
||||
else {
|
||||
println(a + b)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
if ((a) + b > 0) {
|
||||
println(a*(b))
|
||||
}
|
||||
|
||||
if (a + b > 0) {
|
||||
println(a*(b))
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
// WITH_RUNTIME
|
||||
fun foo(a: Int, b: Int) {
|
||||
if ((a) + b > 0) {
|
||||
println(a*b)
|
||||
}
|
||||
|
||||
println(a*b)
|
||||
|
||||
if (a + b > (0)) {
|
||||
println(a*(b))
|
||||
}
|
||||
else {
|
||||
println(a + b)
|
||||
}
|
||||
|
||||
if (a + b > 0) {
|
||||
println(a*b)
|
||||
}
|
||||
|
||||
<selection>if (a + (b) > 0) {
|
||||
println(a*b)
|
||||
}
|
||||
else {
|
||||
println((a + b))
|
||||
}</selection>
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
if (a + b > (0)) {
|
||||
println(a*(b))
|
||||
}
|
||||
else {
|
||||
println(a + b)
|
||||
}
|
||||
|
||||
if (a + (b) > 0) {
|
||||
println(a*b)
|
||||
}
|
||||
else {
|
||||
println((a + b))
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
inline fun run(f: () -> Unit) = f()
|
||||
|
||||
fun foo(a: Int) {
|
||||
run {
|
||||
run {
|
||||
if (a > 0) <selection>return@foo</selection>
|
||||
if (a < 0) return
|
||||
return@foo
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
return@foo
|
||||
|
||||
return@foo
|
||||
@@ -0,0 +1,6 @@
|
||||
fun foo() {
|
||||
<selection>throw AssertionError()</selection>
|
||||
throw NullPointerException()
|
||||
AssertionError()
|
||||
throw (AssertionError())
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
throw AssertionError()
|
||||
|
||||
throw (AssertionError())
|
||||
@@ -0,0 +1,6 @@
|
||||
// DISABLE-ERRORS
|
||||
fun foo(a: Int) {
|
||||
if (a > 0) <selection>return</selection>
|
||||
if (a < 0) return a
|
||||
return
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
return
|
||||
|
||||
return
|
||||
@@ -0,0 +1,8 @@
|
||||
// DISABLE-ERRORS
|
||||
fun foo(a: Int): Int {
|
||||
if (a > 0) <selection>return (a) + 1</selection>
|
||||
if (a < 0) return
|
||||
if (a == 0) return a
|
||||
return (a + 1)
|
||||
return
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
return (a) + 1
|
||||
|
||||
return (a + 1)
|
||||
@@ -0,0 +1,30 @@
|
||||
// WITH_RUNTIME
|
||||
fun foo(a: Int, b: Int) {
|
||||
<selection>when((a)) {
|
||||
1 -> println(b)
|
||||
(2) -> println((a - b))
|
||||
else -> println(a + b)
|
||||
}</selection>
|
||||
|
||||
when(a) {
|
||||
1 -> println(b)
|
||||
2 -> println(a - b)
|
||||
}
|
||||
|
||||
when {
|
||||
a == 1 -> println(b)
|
||||
a == 2 -> println(a - b)
|
||||
else -> println(a + b)
|
||||
}
|
||||
|
||||
when(a) {
|
||||
1 -> println(b)
|
||||
2 -> println(a - b)
|
||||
else -> println(a + b)
|
||||
}
|
||||
|
||||
when(a) {
|
||||
2 -> println(a - b)
|
||||
1 -> println(b)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
when((a)) {
|
||||
1 -> println(b)
|
||||
(2) -> println((a - b))
|
||||
else -> println(a + b)
|
||||
}
|
||||
|
||||
when(a) {
|
||||
1 -> println(b)
|
||||
2 -> println(a - b)
|
||||
else -> println(a + b)
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
// WITH_RUNTIME
|
||||
fun foo(a: Int, b: Int) {
|
||||
<selection>when {
|
||||
(a == 1) -> println(b)
|
||||
a == 2 -> println(a - b)
|
||||
else -> println(a + b)
|
||||
}</selection>
|
||||
|
||||
when {
|
||||
a == 1 -> println(b)
|
||||
a == 2 -> println(a - b)
|
||||
}
|
||||
|
||||
when {
|
||||
a == 1 -> println(b)
|
||||
(a == 2) -> println((a - b))
|
||||
else -> println(a + b)
|
||||
}
|
||||
|
||||
when(a) {
|
||||
2 -> println(a - b)
|
||||
1 -> println(b)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
when {
|
||||
(a == 1) -> println(b)
|
||||
a == 2 -> println(a - b)
|
||||
else -> println(a + b)
|
||||
}
|
||||
|
||||
when {
|
||||
a == 1 -> println(b)
|
||||
(a == 2) -> println((a - b))
|
||||
else -> println(a + b)
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
// WITH_RUNTIME
|
||||
fun foo(a: Int, b: Int) {
|
||||
var t = a
|
||||
<selection>while (t != (a + b)) {
|
||||
println(t)
|
||||
t++
|
||||
}</selection>
|
||||
|
||||
var u = a
|
||||
while (u != a + b) {
|
||||
println(t)
|
||||
t++
|
||||
}
|
||||
|
||||
do {
|
||||
println(t)
|
||||
t++
|
||||
} while (t != a + b)
|
||||
|
||||
while (t != a + b) {
|
||||
println((t))
|
||||
t++
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
while (t != (a + b)) {
|
||||
println(t)
|
||||
t++
|
||||
}
|
||||
|
||||
while (t != a + b) {
|
||||
println((t))
|
||||
t++
|
||||
}
|
||||
Reference in New Issue
Block a user