PSI Pattern Matching: Add equivalence tests for JetPsiUnifier

This commit is contained in:
Alexey Sedunov
2014-07-29 17:15:25 +04:00
parent a3758f9fa3
commit f1c18d0e3f
192 changed files with 3199 additions and 0 deletions
@@ -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++
}