K2: report JVM backend errors in the same way in PSI as LT

Do not try to find PSI element, but always use the IR element offsets
instead. This greatly simplifies test data because we don't need to have
custom PSI- and LT- based diagnostic ranges in every test, and K1/K2
behavior also is mostly the same.

The exact offset ranges are not as important for backend diagnostics, so
it's better to have K2+PSI and K2+LT behaving the same.
This commit is contained in:
Alexander Udalov
2023-07-27 19:12:36 +02:00
committed by Space Team
parent 6069aaee9c
commit 965946d3ef
148 changed files with 267 additions and 860 deletions
@@ -1,20 +0,0 @@
// COMPARE_WITH_LIGHT_TREE
// !DIAGNOSTICS: -UNUSED_PARAMETER
public open class A<T> {
fun foo(x: T) = "O"
fun foo(x: A<T>) = "K"
}
interface C<E> {
fun foo(x: E): String
fun foo(x: A<E>): String
}
interface D {
fun foo(x: A<String>): String
}
<!CONFLICTING_INHERITED_JVM_DECLARATIONS{LT}!>class <!CONFLICTING_INHERITED_JVM_DECLARATIONS{PSI}!>B1<!> : A<A<String>>(), D<!>
<!CONFLICTING_INHERITED_JVM_DECLARATIONS{LT}!>interface <!CONFLICTING_INHERITED_JVM_DECLARATIONS{PSI}!>B2<!> : C<A<String>>, D<!>
@@ -1,4 +1,4 @@
// COMPARE_WITH_LIGHT_TREE
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_PARAMETER
public open class A<T> {
@@ -15,6 +15,6 @@ interface D {
fun foo(x: A<String>): String
}
class <!CONFLICTING_INHERITED_JVM_DECLARATIONS!>B1<!> : A<A<String>>(), D
<!CONFLICTING_INHERITED_JVM_DECLARATIONS!>class B1 : A<A<String>>(), D<!>
interface <!CONFLICTING_INHERITED_JVM_DECLARATIONS!>B2<!> : C<A<String>>, D
<!CONFLICTING_INHERITED_JVM_DECLARATIONS!>interface B2 : C<A<String>>, D<!>
@@ -1,5 +0,0 @@
// COMPARE_WITH_LIGHT_TREE
// !DIAGNOSTICS: -UNUSED_PARAMETER
<!CONFLICTING_JVM_DECLARATIONS{LT}!><!CONFLICTING_JVM_DECLARATIONS{PSI}!>fun foo(s: List<String>)<!> {}<!>
<!CONFLICTING_JVM_DECLARATIONS{LT}!><!CONFLICTING_JVM_DECLARATIONS{PSI}!>fun foo(s: MutableList<String>)<!> {}<!>
@@ -1,5 +1,5 @@
// COMPARE_WITH_LIGHT_TREE
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_PARAMETER
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(s: List<String>)<!> {}
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(s: MutableList<String>)<!> {}
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(s: List<String>) {}<!>
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(s: MutableList<String>) {}<!>
@@ -1,15 +0,0 @@
// COMPARE_WITH_LIGHT_TREE
// !DIAGNOSTICS: -UNUSED_PARAMETER
interface Foo<T> {
fun foo(l: List<T>)
}
interface Bar<T> {
fun foo(l: List<T>)
}
<!CONFLICTING_JVM_DECLARATIONS{LT}!>class <!CONFLICTING_JVM_DECLARATIONS{PSI}!>Baz(f: Foo<String>, b: Bar<Int>)<!> :
Foo<String> by f,
Bar<Int> by b {
}<!>
@@ -1,4 +1,4 @@
// COMPARE_WITH_LIGHT_TREE
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_PARAMETER
interface Foo<T> {
@@ -9,7 +9,7 @@ interface Bar<T> {
fun foo(l: List<T>)
}
class <!CONFLICTING_JVM_DECLARATIONS!>Baz(f: Foo<String>, b: Bar<Int>)<!> :
<!CONFLICTING_JVM_DECLARATIONS!>class Baz(f: Foo<String>, b: Bar<Int>) :
Foo<String> by f,
Bar<Int> by b {
}
}<!>
@@ -1,10 +0,0 @@
// COMPARE_WITH_LIGHT_TREE
// !DIAGNOSTICS: -UNUSED_PARAMETER
interface Foo<T> {
fun foo(l: List<T>)
}
<!CONFLICTING_JVM_DECLARATIONS{LT}!>class <!CONFLICTING_JVM_DECLARATIONS{PSI}!>Bar(f: Foo<String>)<!>: Foo<String> by f {
<!CONFLICTING_JVM_DECLARATIONS{LT}!><!CONFLICTING_JVM_DECLARATIONS{PSI}!>fun foo(l: List<Int>)<!> {}<!>
}<!>
@@ -1,10 +1,10 @@
// COMPARE_WITH_LIGHT_TREE
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_PARAMETER
interface Foo<T> {
fun foo(l: List<T>)
}
class <!CONFLICTING_JVM_DECLARATIONS!>Bar(f: Foo<String>)<!>: Foo<String> by f {
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(l: List<Int>)<!> {}
}
<!CONFLICTING_JVM_DECLARATIONS!>class Bar(f: Foo<String>): Foo<String> by f {
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(l: List<Int>) {}<!>
}<!>
@@ -1,16 +0,0 @@
// COMPARE_WITH_LIGHT_TREE
// !DIAGNOSTICS: -UNUSED_PARAMETER
interface Foo<T> {
fun foo(l: List<T>) {
}
}
<!CONFLICTING_JVM_DECLARATIONS{LT}!>class <!CONFLICTING_JVM_DECLARATIONS{PSI}!>Bar(f: Foo<String>)<!>: Foo<String> by f {
<!CONFLICTING_JVM_DECLARATIONS{LT}!><!CONFLICTING_JVM_DECLARATIONS{PSI}!>fun foo(l: List<Int>)<!> {}<!>
}<!>
class BarOther(f: Foo<String>): Foo<String> by f {
override fun foo(l: List<String>) {}
}
@@ -1,4 +1,4 @@
// COMPARE_WITH_LIGHT_TREE
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_PARAMETER
interface Foo<T> {
@@ -7,9 +7,9 @@ interface Foo<T> {
}
}
class <!CONFLICTING_JVM_DECLARATIONS!>Bar(f: Foo<String>)<!>: Foo<String> by f {
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(l: List<Int>)<!> {}
}
<!CONFLICTING_JVM_DECLARATIONS!>class Bar(f: Foo<String>): Foo<String> by f {
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(l: List<Int>) {}<!>
}<!>
class BarOther(f: Foo<String>): Foo<String> by f {
override fun foo(l: List<String>) {}
@@ -1,9 +1,7 @@
// COMPARE_WITH_LIGHT_TREE
class G<T>
<!CONFLICTING_JVM_DECLARATIONS{LT}!><!CONFLICTING_JVM_DECLARATIONS{PSI}!>val <T> G<T>.foo: Int<!>
<!CONFLICTING_JVM_DECLARATIONS!>val <T> G<T>.foo: Int
get() = 1<!>
<!CONFLICTING_JVM_DECLARATIONS{LT}!><!CONFLICTING_JVM_DECLARATIONS{PSI}!>val G<String>.foo: Int<!>
<!CONFLICTING_JVM_DECLARATIONS!>val G<String>.foo: Int
get() = 1<!>
@@ -1,9 +1,7 @@
// COMPARE_WITH_LIGHT_TREE
class G<T>
val <T> G<T>.foo: Int
<!CONFLICTING_JVM_DECLARATIONS!>get()<!> = 1
<!CONFLICTING_JVM_DECLARATIONS!>get() = 1<!>
val G<String>.foo: Int
<!CONFLICTING_JVM_DECLARATIONS!>get()<!> = 1
<!CONFLICTING_JVM_DECLARATIONS!>get() = 1<!>
@@ -1,7 +0,0 @@
// COMPARE_WITH_LIGHT_TREE
// !DIAGNOSTICS: -UNUSED_PARAMETER
class G<T>
<!CONFLICTING_JVM_DECLARATIONS{LT}!><!CONFLICTING_JVM_DECLARATIONS{PSI}!>fun foo(x: G<String>): G<Int><!> {null!!}<!>
<!CONFLICTING_JVM_DECLARATIONS{LT}!><!CONFLICTING_JVM_DECLARATIONS{PSI}!>fun foo(x: G<Int>): G<String><!> {null!!}<!>
@@ -1,7 +1,7 @@
// COMPARE_WITH_LIGHT_TREE
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_PARAMETER
class G<T>
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(x: G<String>): G<Int><!> {null!!}
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(x: G<Int>): G<String><!> {null!!}
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(x: G<String>): G<Int> {null!!}<!>
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(x: G<Int>): G<String> {null!!}<!>
@@ -1,13 +0,0 @@
// COMPARE_WITH_LIGHT_TREE
// !DIAGNOSTICS: -UNUSED_PARAMETER
interface Foo<T> {
fun foo(l: List<T>) {}
}
interface Bar<T> {
fun foo(l: List<T>) {}
}
<!CONFLICTING_INHERITED_JVM_DECLARATIONS{LT}!>class <!CONFLICTING_INHERITED_JVM_DECLARATIONS{PSI}!>Baz()<!>: Foo<String>, Bar<Int> {
}<!>
@@ -1,4 +1,4 @@
// COMPARE_WITH_LIGHT_TREE
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_PARAMETER
interface Foo<T> {
@@ -9,5 +9,5 @@ interface Bar<T> {
fun foo(l: List<T>) {}
}
class <!CONFLICTING_INHERITED_JVM_DECLARATIONS!>Baz()<!>: Foo<String>, Bar<Int> {
}
<!CONFLICTING_INHERITED_JVM_DECLARATIONS!>class Baz(): Foo<String>, Bar<Int> {
}<!>
@@ -1,5 +0,0 @@
// COMPARE_WITH_LIGHT_TREE
// !DIAGNOSTICS: -UNUSED_PARAMETER -PLATFORM_CLASS_MAPPED_TO_KOTLIN
<!CONFLICTING_JVM_DECLARATIONS{LT}!><!CONFLICTING_JVM_DECLARATIONS{PSI}!>fun foo(s: List<String>)<!> {}<!>
<!CONFLICTING_JVM_DECLARATIONS{LT}!><!CONFLICTING_JVM_DECLARATIONS{PSI}!>fun foo(s: java.util.List<String>)<!> {}<!>
@@ -1,5 +1,5 @@
// COMPARE_WITH_LIGHT_TREE
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_PARAMETER -PLATFORM_CLASS_MAPPED_TO_KOTLIN
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(s: List<String>)<!> {}
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(s: java.util.List<String>)<!> {}
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(s: List<String>) {}<!>
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(s: java.util.List<String>) {}<!>
@@ -1,5 +0,0 @@
// COMPARE_WITH_LIGHT_TREE
// !DIAGNOSTICS: -UNUSED_PARAMETER
<!CONFLICTING_JVM_DECLARATIONS{LT}!><!CONFLICTING_JVM_DECLARATIONS{PSI}!>fun foo(x: String)<!> {}<!>
<!CONFLICTING_JVM_DECLARATIONS{LT}!><!CONFLICTING_JVM_DECLARATIONS{PSI}!>fun foo(x: String?)<!> {}<!>
@@ -1,5 +1,5 @@
// COMPARE_WITH_LIGHT_TREE
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_PARAMETER
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(x: String)<!> {}
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(x: String?)<!> {}
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(x: String) {}<!>
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(x: String?) {}<!>
@@ -1,14 +0,0 @@
// COMPARE_WITH_LIGHT_TREE
// !DIAGNOSTICS: -UNUSED_PARAMETER
interface A<T> {
fun foo(l: List<T>)
}
interface B {
fun foo(l: List<Int>) {}
}
<!ACCIDENTAL_OVERRIDE{LT}!>class <!ACCIDENTAL_OVERRIDE{PSI}!>C(f: A<String>)<!>: A<String> by f, B<!>
<!DELEGATED_MEMBER_HIDES_SUPERTYPE_OVERRIDE!>class D<!>(f: A<Int>): A<Int> by f, B
@@ -1,4 +1,4 @@
// COMPARE_WITH_LIGHT_TREE
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_PARAMETER
interface A<T> {
@@ -9,6 +9,6 @@ interface B {
fun foo(l: List<Int>) {}
}
class <!ACCIDENTAL_OVERRIDE!>C(f: A<String>)<!>: A<String> by f, B
<!ACCIDENTAL_OVERRIDE!>class C(f: A<String>): A<String> by f, B<!>
<!DELEGATED_MEMBER_HIDES_SUPERTYPE_OVERRIDE!>class D<!>(f: A<Int>): A<Int> by f, B
@@ -1,14 +0,0 @@
// COMPARE_WITH_LIGHT_TREE
// !DIAGNOSTICS: -UNUSED_PARAMETER
interface Foo<T> {
fun foo(l: List<T>) {}
}
interface Bar<T> {
fun foo(l: List<T>) {}
}
class Baz(): Foo<String>, Bar<Int> {
<!ACCIDENTAL_OVERRIDE{LT}!><!ACCIDENTAL_OVERRIDE{PSI}!>fun foo(l: List<Long>)<!> {}<!>
}
@@ -1,4 +1,4 @@
// COMPARE_WITH_LIGHT_TREE
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_PARAMETER
interface Foo<T> {
@@ -10,5 +10,5 @@ interface Bar<T> {
}
class Baz(): Foo<String>, Bar<Int> {
<!ACCIDENTAL_OVERRIDE!>fun foo(l: List<Long>)<!> {}
<!ACCIDENTAL_OVERRIDE!>fun foo(l: List<Long>) {}<!>
}
@@ -1,5 +0,0 @@
// COMPARE_WITH_LIGHT_TREE
// !DIAGNOSTICS: -UNUSED_PARAMETER -PLATFORM_CLASS_MAPPED_TO_KOTLIN
<!CONFLICTING_JVM_DECLARATIONS{LT}!><!CONFLICTING_JVM_DECLARATIONS{PSI}!>fun foo(s: java.lang.String)<!> {}<!>
<!CONFLICTING_JVM_DECLARATIONS{LT}!><!CONFLICTING_JVM_DECLARATIONS{PSI}!>fun foo(s: String)<!> {}<!>
@@ -1,5 +1,5 @@
// COMPARE_WITH_LIGHT_TREE
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_PARAMETER -PLATFORM_CLASS_MAPPED_TO_KOTLIN
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(s: java.lang.String)<!> {}
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(s: String)<!> {}
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(s: java.lang.String) {}<!>
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(s: String) {}<!>
@@ -1,5 +0,0 @@
// COMPARE_WITH_LIGHT_TREE
// !DIAGNOSTICS: -UNUSED_PARAMETER
<!CONFLICTING_JVM_DECLARATIONS{LT}!><!CONFLICTING_JVM_DECLARATIONS{PSI}!>fun <T> foo(x: T): T<!> {null!!}<!>
<!CONFLICTING_JVM_DECLARATIONS{LT}!><!CONFLICTING_JVM_DECLARATIONS{PSI}!>fun foo(x: Any): Any<!> {null!!}<!>
@@ -1,5 +1,5 @@
// COMPARE_WITH_LIGHT_TREE
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_PARAMETER
<!CONFLICTING_JVM_DECLARATIONS!>fun <T> foo(x: T): T<!> {null!!}
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(x: Any): Any<!> {null!!}
<!CONFLICTING_JVM_DECLARATIONS!>fun <T> foo(x: T): T {null!!}<!>
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(x: Any): Any {null!!}<!>
@@ -1,7 +0,0 @@
// COMPARE_WITH_LIGHT_TREE
// !DIAGNOSTICS: -UNUSED_PARAMETER
interface Foo
<!CONFLICTING_JVM_DECLARATIONS{LT}!><!CONFLICTING_JVM_DECLARATIONS{PSI}!>fun <T: Foo> foo(x: T): T<!> {null!!}<!>
<!CONFLICTING_JVM_DECLARATIONS{LT}!><!CONFLICTING_JVM_DECLARATIONS{PSI}!>fun foo(x: Foo): Foo<!> {null!!}<!>
@@ -1,7 +1,7 @@
// COMPARE_WITH_LIGHT_TREE
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_PARAMETER
interface Foo
<!CONFLICTING_JVM_DECLARATIONS!>fun <T: Foo> foo(x: T): T<!> {null!!}
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(x: Foo): Foo<!> {null!!}
<!CONFLICTING_JVM_DECLARATIONS!>fun <T: Foo> foo(x: T): T {null!!}<!>
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(x: Foo): Foo {null!!}<!>
@@ -1,9 +0,0 @@
// COMPARE_WITH_LIGHT_TREE
// !DIAGNOSTICS: -UNUSED_PARAMETER
interface Foo
interface Bar
<!CONFLICTING_JVM_DECLARATIONS{LT}!><!CONFLICTING_JVM_DECLARATIONS{PSI}!>fun <T> foo(x: T): T<!> where T: Foo, T: Bar {null!!}<!>
<!CONFLICTING_JVM_DECLARATIONS{LT}!><!CONFLICTING_JVM_DECLARATIONS{PSI}!>fun foo(x: Foo): Foo<!> {null!!}<!>
fun foo(x: Bar): Bar {null!!}
@@ -1,9 +1,9 @@
// COMPARE_WITH_LIGHT_TREE
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_PARAMETER
interface Foo
interface Bar
<!CONFLICTING_JVM_DECLARATIONS!>fun <T> foo(x: T): T<!> where T: Foo, T: Bar {null!!}
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(x: Foo): Foo<!> {null!!}
<!CONFLICTING_JVM_DECLARATIONS!>fun <T> foo(x: T): T where T: Foo, T: Bar {null!!}<!>
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(x: Foo): Foo {null!!}<!>
fun foo(x: Bar): Bar {null!!}
@@ -1,9 +0,0 @@
// COMPARE_WITH_LIGHT_TREE
// !DIAGNOSTICS: -UNUSED_PARAMETER
interface Foo
interface Bar
<!CONFLICTING_JVM_DECLARATIONS{LT}!><!CONFLICTING_JVM_DECLARATIONS{PSI}!>fun <T> foo(x: T): T<!> where T: Foo, T: Bar {null!!}<!>
<!CONFLICTING_JVM_DECLARATIONS{LT}!><!CONFLICTING_JVM_DECLARATIONS{PSI}!>fun foo(x: Foo): Foo<!> {null!!}<!>
fun foo(x: Bar): Bar {null!!}
@@ -1,9 +1,9 @@
// COMPARE_WITH_LIGHT_TREE
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_PARAMETER
interface Foo
interface Bar
<!CONFLICTING_JVM_DECLARATIONS!>fun <T> foo(x: T): T<!> where T: Foo, T: Bar {null!!}
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(x: Foo): Foo<!> {null!!}
<!CONFLICTING_JVM_DECLARATIONS!>fun <T> foo(x: T): T where T: Foo, T: Bar {null!!}<!>
<!CONFLICTING_JVM_DECLARATIONS!>fun foo(x: Foo): Foo {null!!}<!>
fun foo(x: Bar): Bar {null!!}