PSI Pattern Matching: Add equivalence tests for JetPsiUnifier
This commit is contained in:
+28
@@ -0,0 +1,28 @@
|
||||
fun foo() {
|
||||
{
|
||||
val t = <selection>object {
|
||||
val a = 1
|
||||
fun b() = a + 1
|
||||
val c: Int
|
||||
get() = b() + 1
|
||||
}</selection>
|
||||
}
|
||||
|
||||
{
|
||||
val v = object {
|
||||
val x = 1
|
||||
fun b() = x + 1
|
||||
val c: Int
|
||||
get() = b() + 1
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
val w = object {
|
||||
fun b() = a + 1
|
||||
val a = 1
|
||||
val c: Int
|
||||
get() = b() + 1
|
||||
}
|
||||
}
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
object {
|
||||
val a = 1
|
||||
fun b() = a + 1
|
||||
val c: Int
|
||||
get() = b() + 1
|
||||
}
|
||||
|
||||
object {
|
||||
fun b() = a + 1
|
||||
val a = 1
|
||||
val c: Int
|
||||
get() = b() + 1
|
||||
}
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
fun foo() {
|
||||
open class Z(p: Int)
|
||||
trait T;
|
||||
|
||||
{
|
||||
<selection>class A: Z(1), T</selection>
|
||||
}
|
||||
|
||||
{
|
||||
class B: Z(1), T
|
||||
}
|
||||
|
||||
{
|
||||
class C: Z(1)
|
||||
}
|
||||
|
||||
{
|
||||
class D: Z(2), T
|
||||
}
|
||||
|
||||
{
|
||||
class E: T
|
||||
}
|
||||
}
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
class A: Z(1), T
|
||||
|
||||
class B: Z(1), T
|
||||
@@ -0,0 +1,25 @@
|
||||
// DISABLE-ERRORS
|
||||
fun foo() {
|
||||
trait T
|
||||
open class Z(p: Int): T;
|
||||
|
||||
{
|
||||
<selection>class A: T by Z(1)</selection>
|
||||
}
|
||||
|
||||
{
|
||||
class B: Z(1), T
|
||||
}
|
||||
|
||||
{
|
||||
class C: Z(1)
|
||||
}
|
||||
|
||||
{
|
||||
class D: T by Z(1)
|
||||
}
|
||||
|
||||
{
|
||||
class E: T by Z(2)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
class A: T by Z(1)
|
||||
|
||||
class D: T by Z(1)
|
||||
@@ -0,0 +1,11 @@
|
||||
fun foo() {
|
||||
<selection>class A</selection>
|
||||
|
||||
class B {
|
||||
|
||||
}
|
||||
|
||||
class C {
|
||||
val n: Int = 1
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
class A
|
||||
|
||||
class B {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
// DISABLE-ERRORS
|
||||
fun foo() {
|
||||
{
|
||||
<selection>class A(p: Int = 1, val q: Int = p + 1) {
|
||||
val a = 1
|
||||
fun b() = a + 1
|
||||
val c: Int
|
||||
get() = b() + 1
|
||||
}</selection>
|
||||
}
|
||||
|
||||
{
|
||||
class B(n: Int = 1, val q: Int = n + 1) {
|
||||
fun b() = a + 1
|
||||
val a = 1
|
||||
val c: Int
|
||||
get() = b() + 1
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
class C {
|
||||
val x = 1
|
||||
fun b() = x + 1
|
||||
val c: Int
|
||||
get() = b() + 1
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
class D(n: Int = 1, val m: Int = n + 1) {
|
||||
val a = 1
|
||||
fun b() = a + 1
|
||||
val c: Int
|
||||
get() = b() + 1
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
class E(val n: Int = 1, val q: Int = n + 1) {
|
||||
val a = 1
|
||||
fun b() = a + 1
|
||||
val c: Int
|
||||
get() = b() + 1
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
object F {
|
||||
val a = 1
|
||||
fun b() = a + 1
|
||||
val c: Int
|
||||
get() = b() + 1
|
||||
}
|
||||
}
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
class A(p: Int = 1, val q: Int = p + 1) {
|
||||
val a = 1
|
||||
fun b() = a + 1
|
||||
val c: Int
|
||||
get() = b() + 1
|
||||
}
|
||||
|
||||
class B(n: Int = 1, val q: Int = n + 1) {
|
||||
fun b() = a + 1
|
||||
val a = 1
|
||||
val c: Int
|
||||
get() = b() + 1
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
// DISABLE-ERRORS
|
||||
fun foo() {
|
||||
{
|
||||
<selection>object A {
|
||||
val a = 1
|
||||
fun b() = a + 1
|
||||
val c: Int
|
||||
get() = b() + 1
|
||||
}</selection>
|
||||
}
|
||||
|
||||
{
|
||||
class B {
|
||||
val a = 1
|
||||
fun b() = a + 1
|
||||
val c: Int
|
||||
get() = b() + 1
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
object C {
|
||||
val x = 1
|
||||
fun b() = x + 1
|
||||
val c: Int
|
||||
get() = b() + 1
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
object D {
|
||||
fun b() = a + 1
|
||||
val a = 1
|
||||
val c: Int
|
||||
get() = b() + 1
|
||||
}
|
||||
}
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
object A {
|
||||
val a = 1
|
||||
fun b() = a + 1
|
||||
val c: Int
|
||||
get() = b() + 1
|
||||
}
|
||||
|
||||
object D {
|
||||
fun b() = a + 1
|
||||
val a = 1
|
||||
val c: Int
|
||||
get() = b() + 1
|
||||
}
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
fun foo() {
|
||||
<selection>{
|
||||
open class Z<T>(p: T)
|
||||
trait T
|
||||
class A: Z<Int>(1), T
|
||||
}</selection>
|
||||
|
||||
{
|
||||
open class Z<A>(r: A)
|
||||
trait T
|
||||
class B: Z<Int>(1), T
|
||||
}
|
||||
|
||||
{
|
||||
open class T<A>(r: A)
|
||||
trait Z
|
||||
class C: T<Int>(1), Z
|
||||
}
|
||||
|
||||
{
|
||||
open class Z<T>(q: T)
|
||||
trait T
|
||||
class D: Z<Int>(2), T
|
||||
}
|
||||
|
||||
{
|
||||
open class Z<T>(q: T)
|
||||
class E: Z<Int>(1)
|
||||
}
|
||||
|
||||
{
|
||||
open class Z<A>(r: A)
|
||||
trait T
|
||||
class F: Z<String>("1"), T
|
||||
}
|
||||
|
||||
{
|
||||
open class Z(r: Int)
|
||||
trait T
|
||||
class B: Z(1), T
|
||||
}
|
||||
}
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
{
|
||||
open class Z<T>(p: T)
|
||||
trait T
|
||||
class A: Z<Int>(1), T
|
||||
}
|
||||
|
||||
{
|
||||
open class Z<A>(r: A)
|
||||
trait T
|
||||
class B: Z<Int>(1), T
|
||||
}
|
||||
|
||||
{
|
||||
open class T<A>(r: A)
|
||||
trait Z
|
||||
class C: T<Int>(1), Z
|
||||
}
|
||||
@@ -0,0 +1,137 @@
|
||||
// DISABLE-ERRORS
|
||||
fun foo() {
|
||||
<selection>class A {
|
||||
fun a(x: Int): Int = b(x) + 1
|
||||
fun b(y: Int): Int = a(y) - 1
|
||||
|
||||
{
|
||||
println(1)
|
||||
}
|
||||
|
||||
class X
|
||||
inner class Y
|
||||
trait T
|
||||
object O
|
||||
|
||||
val p = 1
|
||||
val q = p + 1
|
||||
|
||||
{
|
||||
println(2)
|
||||
}
|
||||
|
||||
class object {
|
||||
fun f() = 1
|
||||
val g = f() - 1
|
||||
}
|
||||
}</selection>
|
||||
|
||||
class B {
|
||||
{
|
||||
println(1)
|
||||
}
|
||||
|
||||
class X
|
||||
|
||||
fun b(p: kotlin.Int): kotlin.Int = a(p) - 1
|
||||
|
||||
inner class Y
|
||||
|
||||
val p = 1
|
||||
|
||||
class object {
|
||||
fun f() = 1
|
||||
val g = f() - 1
|
||||
}
|
||||
|
||||
{
|
||||
println(2)
|
||||
}
|
||||
|
||||
object O
|
||||
|
||||
val q = p + 1
|
||||
|
||||
fun a(p: kotlin.Int): kotlin.Int = b(p) + 1
|
||||
|
||||
trait T
|
||||
}
|
||||
|
||||
class C {
|
||||
fun aa(x: Int): Int = bb(x) + 1
|
||||
fun bb(y: Int): Int = aa(y) - 1
|
||||
|
||||
{
|
||||
println(1)
|
||||
}
|
||||
|
||||
class X
|
||||
inner class Y
|
||||
trait T
|
||||
object O
|
||||
|
||||
val p = 1
|
||||
val q = p + 1
|
||||
|
||||
{
|
||||
println(2)
|
||||
}
|
||||
|
||||
class object {
|
||||
fun f() = 1
|
||||
val g = f() - 1
|
||||
}
|
||||
}
|
||||
|
||||
class D {
|
||||
fun a(x: Int): Int = b(x) + 1
|
||||
fun b(y: Int): Int = a(y) - 1
|
||||
|
||||
{
|
||||
println(1)
|
||||
}
|
||||
|
||||
class X
|
||||
inner class Y
|
||||
trait T
|
||||
object O
|
||||
|
||||
val q = p + 1
|
||||
val p = 1
|
||||
|
||||
{
|
||||
println(2)
|
||||
}
|
||||
|
||||
class object {
|
||||
fun f() = 1
|
||||
val g = f() - 1
|
||||
}
|
||||
}
|
||||
|
||||
class E {
|
||||
fun a(x: Int): Int = b(x) + 1
|
||||
fun b(y: Int): Int = a(y) - 1
|
||||
|
||||
{
|
||||
println(1)
|
||||
}
|
||||
|
||||
class XX
|
||||
inner class Y
|
||||
trait T
|
||||
object O
|
||||
|
||||
val p = 1
|
||||
val q = p + 1
|
||||
|
||||
{
|
||||
println(2)
|
||||
}
|
||||
|
||||
class object {
|
||||
fun f() = 1
|
||||
val g = f() - 1
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
class A {
|
||||
fun a(x: Int): Int = b(x) + 1
|
||||
fun b(y: Int): Int = a(y) - 1
|
||||
|
||||
{
|
||||
println(1)
|
||||
}
|
||||
|
||||
class X
|
||||
inner class Y
|
||||
trait T
|
||||
object O
|
||||
|
||||
val p = 1
|
||||
val q = p + 1
|
||||
|
||||
{
|
||||
println(2)
|
||||
}
|
||||
|
||||
class object {
|
||||
fun f() = 1
|
||||
val g = f() - 1
|
||||
}
|
||||
}
|
||||
|
||||
class B {
|
||||
{
|
||||
println(1)
|
||||
}
|
||||
|
||||
class X
|
||||
|
||||
fun b(p: kotlin.Int): kotlin.Int = a(p) - 1
|
||||
|
||||
inner class Y
|
||||
|
||||
val p = 1
|
||||
|
||||
class object {
|
||||
fun f() = 1
|
||||
val g = f() - 1
|
||||
}
|
||||
|
||||
{
|
||||
println(2)
|
||||
}
|
||||
|
||||
object O
|
||||
|
||||
val q = p + 1
|
||||
|
||||
fun a(p: kotlin.Int): kotlin.Int = b(p) + 1
|
||||
|
||||
trait T
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
fun foo() {
|
||||
open class Z(p: Int)
|
||||
trait T
|
||||
trait U;
|
||||
|
||||
{
|
||||
<selection>class A: Z(1), T, U</selection>
|
||||
}
|
||||
|
||||
{
|
||||
class B: Z(1), U, T
|
||||
}
|
||||
|
||||
{
|
||||
class C: Z(1)
|
||||
}
|
||||
|
||||
{
|
||||
class D: Z(1), T
|
||||
}
|
||||
|
||||
{
|
||||
class E: Z(1), U
|
||||
}
|
||||
}
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
class A: Z(1), T, U
|
||||
|
||||
class B: Z(1), U, T
|
||||
Reference in New Issue
Block a user