K2: add various tests describing current KT-62554 / KT-63242 behavior
This commit is contained in:
committed by
Space Team
parent
17a1871b83
commit
54d978ba86
@@ -0,0 +1,17 @@
|
||||
// FIR_IDENTICAL
|
||||
// WITH_STDLIB
|
||||
// FILE: BaseOwnerJava.java
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
public interface BaseOwnerJava {
|
||||
void setSomething(Collection<? extends BaseOwnerJava> arg);
|
||||
}
|
||||
|
||||
// FILE: test.kt
|
||||
|
||||
abstract class Impl : BaseOwnerJava {
|
||||
override fun setSomething(arg: Collection<BaseOwnerJava>) = throw IllegalStateException()
|
||||
}
|
||||
|
||||
class Final : Impl(), BaseOwnerJava
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
// ISSUE: KT-62554
|
||||
// FIR_DUMP
|
||||
// SCOPE_DUMP: C:foo
|
||||
// FILE: A.java
|
||||
|
||||
public class A {
|
||||
public void foo(Integer x) {}
|
||||
}
|
||||
|
||||
// FILE: main.kt
|
||||
|
||||
interface B {
|
||||
fun foo(x: Int) {}
|
||||
}
|
||||
|
||||
<!MANY_IMPL_MEMBER_NOT_IMPLEMENTED!>class C<!> : A(), B
|
||||
|
||||
fun main() {
|
||||
C().foo(42)
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
C:
|
||||
[IntersectionOverride]: public open fun foo(x: R|kotlin/Int!|): R|kotlin/Unit| from Use site scope of /C [id: 0]
|
||||
[Enhancement]: public open fun foo(x: R|kotlin/Int!|): R|kotlin/Unit| from Java enhancement scope for /A [id: 1]
|
||||
[Source]: public open fun foo(x: R|kotlin/Int|): R|kotlin/Unit| from Use site scope of /B [id: 2]
|
||||
Vendored
+15
@@ -0,0 +1,15 @@
|
||||
FILE: main.kt
|
||||
public abstract interface B : R|kotlin/Any| {
|
||||
public open fun foo(x: R|kotlin/Int|): R|kotlin/Unit| {
|
||||
}
|
||||
|
||||
}
|
||||
public final class C : R|A|, R|B| {
|
||||
public constructor(): R|C| {
|
||||
super<R|A|>()
|
||||
}
|
||||
|
||||
}
|
||||
public final fun main(): R|kotlin/Unit| {
|
||||
R|/C.C|().R|/A.foo|(Int(42))
|
||||
}
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
// ISSUE: KT-62554
|
||||
// FIR_DUMP
|
||||
// SCOPE_DUMP: C:foo
|
||||
// FILE: A.java
|
||||
|
||||
public class A {
|
||||
public void foo(Integer x) {}
|
||||
}
|
||||
|
||||
// FILE: main.kt
|
||||
|
||||
interface B {
|
||||
fun foo(x: Int) {}
|
||||
}
|
||||
|
||||
class C : A(), B
|
||||
|
||||
fun main() {
|
||||
C().foo(42)
|
||||
}
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
// ISSUE: KT-62554
|
||||
// FIR_DUMP
|
||||
// SCOPE_DUMP: D:foo
|
||||
// FILE: A.java
|
||||
|
||||
public class A<T> {
|
||||
public T foo(Integer x) {
|
||||
return "A";
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: main.kt
|
||||
|
||||
interface B {
|
||||
fun foo(x: Int) = "B"
|
||||
}
|
||||
|
||||
open class C : A<String>()
|
||||
|
||||
<!MANY_IMPL_MEMBER_NOT_IMPLEMENTED!>class D<!> : C(), B
|
||||
|
||||
fun main() {
|
||||
D().foo(42)
|
||||
}
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
D:
|
||||
[IntersectionOverride]: public open fun foo(x: R|kotlin/Int|): R|kotlin/String| from Use site scope of /D [id: 0]
|
||||
[SubstitutionOverride(DeclarationSite)]: public open fun foo(x: R|kotlin/Int!|): R|kotlin/String!| from Use site scope of /C [id: 1]
|
||||
[SubstitutionOverride(DeclarationSite)]: public open fun foo(x: R|kotlin/Int!|): R|kotlin/String!| from Substitution scope for [Java enhancement scope for /A] for type C [id: 1]
|
||||
[Enhancement]: public open fun foo(x: R|kotlin/Int!|): R|ft<T & Any, T?>| from Java enhancement scope for /A [id: 2]
|
||||
[Source]: public open fun foo(x: R|kotlin/Int|): R|kotlin/String| from Use site scope of /B [id: 3]
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
FILE: main.kt
|
||||
public abstract interface B : R|kotlin/Any| {
|
||||
public open fun foo(x: R|kotlin/Int|): R|kotlin/String| {
|
||||
^foo String(B)
|
||||
}
|
||||
|
||||
}
|
||||
public open class C : R|A<kotlin/String>| {
|
||||
public constructor(): R|C| {
|
||||
super<R|A<kotlin/String>|>()
|
||||
}
|
||||
|
||||
}
|
||||
public final class D : R|C|, R|B| {
|
||||
public constructor(): R|D| {
|
||||
super<R|C|>()
|
||||
}
|
||||
|
||||
}
|
||||
public final fun main(): R|kotlin/Unit| {
|
||||
R|/D.D|().R|/B.foo|(Int(42))
|
||||
}
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
// ISSUE: KT-62554
|
||||
// FIR_DUMP
|
||||
// SCOPE_DUMP: D:foo
|
||||
// FILE: A.java
|
||||
|
||||
public class A<T> {
|
||||
public T foo(Integer x) {
|
||||
return "A";
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: main.kt
|
||||
|
||||
interface B {
|
||||
fun foo(x: Int) = "B"
|
||||
}
|
||||
|
||||
open class C : A<String>()
|
||||
|
||||
class D : C(), B
|
||||
|
||||
fun main() {
|
||||
D().foo(42)
|
||||
}
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
// ISSUE: KT-62554
|
||||
// FIR_DUMP
|
||||
// SCOPE_DUMP: D:foo
|
||||
// FILE: A.java
|
||||
|
||||
public class A<T> {
|
||||
public String foo(T x) {
|
||||
return "A";
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: C.java
|
||||
|
||||
public class C extends A<Integer> {}
|
||||
|
||||
// FILE: main.kt
|
||||
|
||||
interface B {
|
||||
fun foo(x: Int) = "B"
|
||||
}
|
||||
|
||||
<!MANY_IMPL_MEMBER_NOT_IMPLEMENTED!>class D<!> : C(), B
|
||||
|
||||
fun main() {
|
||||
D().foo(42)
|
||||
}
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
D:
|
||||
[IntersectionOverride]: public open fun foo(x: R|kotlin/Int|): R|kotlin/String| from Use site scope of /D [id: 0]
|
||||
[SubstitutionOverride(DeclarationSite)]: public open fun foo(x: R|kotlin/Int!|): R|kotlin/String!| from Java enhancement scope for /C [id: 1]
|
||||
[SubstitutionOverride(DeclarationSite)]: public open fun foo(x: R|kotlin/Int!|): R|kotlin/String!| from Substitution scope for [Java enhancement scope for /A] for type C [id: 1]
|
||||
[Enhancement]: public open fun foo(x: R|ft<T & Any, T?>|): R|kotlin/String!| from Java enhancement scope for /A [id: 2]
|
||||
[Source]: public open fun foo(x: R|kotlin/Int|): R|kotlin/String| from Use site scope of /B [id: 3]
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
FILE: main.kt
|
||||
public abstract interface B : R|kotlin/Any| {
|
||||
public open fun foo(x: R|kotlin/Int|): R|kotlin/String| {
|
||||
^foo String(B)
|
||||
}
|
||||
|
||||
}
|
||||
public final class D : R|C|, R|B| {
|
||||
public constructor(): R|D| {
|
||||
super<R|C|>()
|
||||
}
|
||||
|
||||
}
|
||||
public final fun main(): R|kotlin/Unit| {
|
||||
R|/D.D|().R|/B.foo|(Int(42))
|
||||
}
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
// ISSUE: KT-62554
|
||||
// FIR_DUMP
|
||||
// SCOPE_DUMP: D:foo
|
||||
// FILE: A.java
|
||||
|
||||
public class A<T> {
|
||||
public String foo(T x) {
|
||||
return "A";
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: C.java
|
||||
|
||||
public class C extends A<Integer> {}
|
||||
|
||||
// FILE: main.kt
|
||||
|
||||
interface B {
|
||||
fun foo(x: Int) = "B"
|
||||
}
|
||||
|
||||
class D : C(), B
|
||||
|
||||
fun main() {
|
||||
D().foo(42)
|
||||
}
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
// ISSUE: KT-62554
|
||||
// FIR_DUMP
|
||||
// SCOPE_DUMP: D:foo
|
||||
// FILE: A.java
|
||||
|
||||
public class A<T> {
|
||||
public String foo(T x) {
|
||||
return "A";
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: main.kt
|
||||
|
||||
interface B {
|
||||
fun foo(x: Int) = "B"
|
||||
}
|
||||
|
||||
open class C : A<Int>()
|
||||
|
||||
<!MANY_IMPL_MEMBER_NOT_IMPLEMENTED!>class D<!> : C(), B
|
||||
|
||||
fun main() {
|
||||
D().foo(42)
|
||||
}
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
D:
|
||||
[IntersectionOverride]: public open fun foo(x: R|kotlin/Int|): R|kotlin/String| from Use site scope of /D [id: 0]
|
||||
[SubstitutionOverride(DeclarationSite)]: public open fun foo(x: R|kotlin/Int!|): R|kotlin/String!| from Use site scope of /C [id: 1]
|
||||
[SubstitutionOverride(DeclarationSite)]: public open fun foo(x: R|kotlin/Int!|): R|kotlin/String!| from Substitution scope for [Java enhancement scope for /A] for type C [id: 1]
|
||||
[Enhancement]: public open fun foo(x: R|ft<T & Any, T?>|): R|kotlin/String!| from Java enhancement scope for /A [id: 2]
|
||||
[Source]: public open fun foo(x: R|kotlin/Int|): R|kotlin/String| from Use site scope of /B [id: 3]
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
FILE: main.kt
|
||||
public abstract interface B : R|kotlin/Any| {
|
||||
public open fun foo(x: R|kotlin/Int|): R|kotlin/String| {
|
||||
^foo String(B)
|
||||
}
|
||||
|
||||
}
|
||||
public open class C : R|A<kotlin/Int>| {
|
||||
public constructor(): R|C| {
|
||||
super<R|A<kotlin/Int>|>()
|
||||
}
|
||||
|
||||
}
|
||||
public final class D : R|C|, R|B| {
|
||||
public constructor(): R|D| {
|
||||
super<R|C|>()
|
||||
}
|
||||
|
||||
}
|
||||
public final fun main(): R|kotlin/Unit| {
|
||||
R|/D.D|().R|/B.foo|(Int(42))
|
||||
}
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
// ISSUE: KT-62554
|
||||
// FIR_DUMP
|
||||
// SCOPE_DUMP: D:foo
|
||||
// FILE: A.java
|
||||
|
||||
public class A<T> {
|
||||
public String foo(T x) {
|
||||
return "A";
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: main.kt
|
||||
|
||||
interface B {
|
||||
fun foo(x: Int) = "B"
|
||||
}
|
||||
|
||||
open class C : A<Int>()
|
||||
|
||||
class D : C(), B
|
||||
|
||||
fun main() {
|
||||
D().foo(42)
|
||||
}
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
// ISSUE: KT-62554
|
||||
// FIR_DUMP
|
||||
// SCOPE_DUMP: E:foo
|
||||
// FILE: A.java
|
||||
|
||||
public class A<T> {
|
||||
public String foo(T x) {
|
||||
return "A";
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: main.kt
|
||||
|
||||
interface B<T> {
|
||||
fun foo(x: T) = "B"
|
||||
}
|
||||
|
||||
open class C : A<Int>()
|
||||
|
||||
interface D : B<Int>
|
||||
|
||||
<!MANY_IMPL_MEMBER_NOT_IMPLEMENTED!>class E<!> : C(), D
|
||||
|
||||
fun main() {
|
||||
E().foo(42)
|
||||
}
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
E:
|
||||
[IntersectionOverride]: public open fun foo(x: R|kotlin/Int|): R|kotlin/String| from Use site scope of /E [id: 0]
|
||||
[SubstitutionOverride(DeclarationSite)]: public open fun foo(x: R|kotlin/Int!|): R|kotlin/String!| from Use site scope of /C [id: 1]
|
||||
[SubstitutionOverride(DeclarationSite)]: public open fun foo(x: R|kotlin/Int!|): R|kotlin/String!| from Substitution scope for [Java enhancement scope for /A] for type C [id: 1]
|
||||
[Enhancement]: public open fun foo(x: R|ft<T & Any, T?>|): R|kotlin/String!| from Java enhancement scope for /A [id: 2]
|
||||
[SubstitutionOverride(DeclarationSite)]: public open fun foo(x: R|kotlin/Int|): R|kotlin/String| from Use site scope of /D [id: 3]
|
||||
[SubstitutionOverride(DeclarationSite)]: public open fun foo(x: R|kotlin/Int|): R|kotlin/String| from Substitution scope for [Use site scope of /B] for type D [id: 3]
|
||||
[Source]: public open fun foo(x: R|T|): R|kotlin/String| from Use site scope of /B [id: 4]
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
FILE: main.kt
|
||||
public abstract interface B<T> : R|kotlin/Any| {
|
||||
public open fun foo(x: R|T|): R|kotlin/String| {
|
||||
^foo String(B)
|
||||
}
|
||||
|
||||
}
|
||||
public open class C : R|A<kotlin/Int>| {
|
||||
public constructor(): R|C| {
|
||||
super<R|A<kotlin/Int>|>()
|
||||
}
|
||||
|
||||
}
|
||||
public abstract interface D : R|B<kotlin/Int>| {
|
||||
}
|
||||
public final class E : R|C|, R|D| {
|
||||
public constructor(): R|E| {
|
||||
super<R|C|>()
|
||||
}
|
||||
|
||||
}
|
||||
public final fun main(): R|kotlin/Unit| {
|
||||
R|/E.E|().R|/D.foo|(Int(42))
|
||||
}
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
// ISSUE: KT-62554
|
||||
// FIR_DUMP
|
||||
// SCOPE_DUMP: E:foo
|
||||
// FILE: A.java
|
||||
|
||||
public class A<T> {
|
||||
public String foo(T x) {
|
||||
return "A";
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: main.kt
|
||||
|
||||
interface B<T> {
|
||||
fun foo(x: T) = "B"
|
||||
}
|
||||
|
||||
open class C : A<Int>()
|
||||
|
||||
interface D : B<Int>
|
||||
|
||||
class <!CONFLICTING_INHERITED_JVM_DECLARATIONS!>E<!> : C(), D
|
||||
|
||||
fun main() {
|
||||
E().foo(42)
|
||||
}
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
// ISSUE: KT-62554
|
||||
// FIR_DUMP
|
||||
// SCOPE_DUMP: E:foo
|
||||
// FILE: A.java
|
||||
|
||||
public class A {
|
||||
public String foo(Integer x) {
|
||||
return "A";
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: main.kt
|
||||
|
||||
interface B<T> {
|
||||
fun foo(x: T) = "B"
|
||||
}
|
||||
|
||||
interface D : B<Int>
|
||||
|
||||
<!MANY_IMPL_MEMBER_NOT_IMPLEMENTED!>class E<!> : A(), D
|
||||
|
||||
fun main() {
|
||||
E().foo(42)
|
||||
}
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
E:
|
||||
[IntersectionOverride]: public open fun foo(x: R|kotlin/Int|): R|kotlin/String| from Use site scope of /E [id: 0]
|
||||
[Enhancement]: public open fun foo(x: R|kotlin/Int!|): R|kotlin/String!| from Java enhancement scope for /A [id: 1]
|
||||
[SubstitutionOverride(DeclarationSite)]: public open fun foo(x: R|kotlin/Int|): R|kotlin/String| from Use site scope of /D [id: 2]
|
||||
[SubstitutionOverride(DeclarationSite)]: public open fun foo(x: R|kotlin/Int|): R|kotlin/String| from Substitution scope for [Use site scope of /B] for type D [id: 2]
|
||||
[Source]: public open fun foo(x: R|T|): R|kotlin/String| from Use site scope of /B [id: 3]
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
FILE: main.kt
|
||||
public abstract interface B<T> : R|kotlin/Any| {
|
||||
public open fun foo(x: R|T|): R|kotlin/String| {
|
||||
^foo String(B)
|
||||
}
|
||||
|
||||
}
|
||||
public abstract interface D : R|B<kotlin/Int>| {
|
||||
}
|
||||
public final class E : R|A|, R|D| {
|
||||
public constructor(): R|E| {
|
||||
super<R|A|>()
|
||||
}
|
||||
|
||||
}
|
||||
public final fun main(): R|kotlin/Unit| {
|
||||
R|/E.E|().R|/D.foo|(Int(42))
|
||||
}
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
// ISSUE: KT-62554
|
||||
// FIR_DUMP
|
||||
// SCOPE_DUMP: E:foo
|
||||
// FILE: A.java
|
||||
|
||||
public class A {
|
||||
public String foo(Integer x) {
|
||||
return "A";
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: main.kt
|
||||
|
||||
interface B<T> {
|
||||
fun foo(x: T) = "B"
|
||||
}
|
||||
|
||||
interface D : B<Int>
|
||||
|
||||
class E : A(), D
|
||||
|
||||
fun main() {
|
||||
E().foo(42)
|
||||
}
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
// ISSUE: KT-62554
|
||||
// FIR_DUMP
|
||||
// SCOPE_DUMP: C:foo
|
||||
// FILE: A.java
|
||||
|
||||
import org.jetbrains.annotations.*;
|
||||
|
||||
public class A {
|
||||
public void foo(@NotNull Integer x) {}
|
||||
}
|
||||
|
||||
// FILE: main.kt
|
||||
|
||||
interface B {
|
||||
fun foo(x: Int) {}
|
||||
}
|
||||
|
||||
<!MANY_IMPL_MEMBER_NOT_IMPLEMENTED!>class C<!> : A(), B
|
||||
|
||||
fun main() {
|
||||
C().foo(42)
|
||||
}
|
||||
compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithNotNullType.fir.overrides.txt
Vendored
+4
@@ -0,0 +1,4 @@
|
||||
C:
|
||||
[IntersectionOverride]: public open fun foo(x: R|@EnhancedNullability kotlin/Int|): R|kotlin/Unit| from Use site scope of /C [id: 0]
|
||||
[Enhancement]: public open fun foo(x: R|@EnhancedNullability kotlin/Int|): R|kotlin/Unit| from Java enhancement scope for /A [id: 1]
|
||||
[Source]: public open fun foo(x: R|kotlin/Int|): R|kotlin/Unit| from Use site scope of /B [id: 2]
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
FILE: main.kt
|
||||
public abstract interface B : R|kotlin/Any| {
|
||||
public open fun foo(x: R|kotlin/Int|): R|kotlin/Unit| {
|
||||
}
|
||||
|
||||
}
|
||||
public final class C : R|A|, R|B| {
|
||||
public constructor(): R|C| {
|
||||
super<R|A|>()
|
||||
}
|
||||
|
||||
}
|
||||
public final fun main(): R|kotlin/Unit| {
|
||||
R|/C.C|().R|/A.foo|(Int(42))
|
||||
}
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
// ISSUE: KT-62554
|
||||
// FIR_DUMP
|
||||
// SCOPE_DUMP: C:foo
|
||||
// FILE: A.java
|
||||
|
||||
import org.jetbrains.annotations.*;
|
||||
|
||||
public class A {
|
||||
public void foo(@NotNull Integer x) {}
|
||||
}
|
||||
|
||||
// FILE: main.kt
|
||||
|
||||
interface B {
|
||||
fun foo(x: Int) {}
|
||||
}
|
||||
|
||||
class C : A(), B
|
||||
|
||||
fun main() {
|
||||
C().<!OVERLOAD_RESOLUTION_AMBIGUITY!>foo<!>(42)
|
||||
}
|
||||
Vendored
+15
@@ -0,0 +1,15 @@
|
||||
FILE: main.kt
|
||||
public abstract interface B : R|kotlin/Any| {
|
||||
public open fun foo(x: R|kotlin/Int|): R|kotlin/Unit| {
|
||||
}
|
||||
|
||||
}
|
||||
public final class C : R|A|, R|B| {
|
||||
public constructor(): R|C| {
|
||||
super<R|A|>()
|
||||
}
|
||||
|
||||
}
|
||||
public final fun main(): R|kotlin/Unit| {
|
||||
R|/C.C|().R|/B.foo|(Int(42))
|
||||
}
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
// FIR_IDENTICAL
|
||||
// ISSUE: KT-62554
|
||||
// FIR_DUMP
|
||||
// SCOPE_DUMP: C:foo
|
||||
// FILE: A.java
|
||||
|
||||
import org.jetbrains.annotations.*;
|
||||
|
||||
public class A {
|
||||
public void foo(@Nullable Integer x) {}
|
||||
}
|
||||
|
||||
// FILE: main.kt
|
||||
|
||||
interface B {
|
||||
fun foo(x: Int) {}
|
||||
}
|
||||
|
||||
class C : A(), B
|
||||
|
||||
fun main() {
|
||||
C().foo(42)
|
||||
}
|
||||
Vendored
+6
@@ -0,0 +1,6 @@
|
||||
C:
|
||||
[Enhancement]: public open fun foo(x: R|kotlin/Int?|): R|kotlin/Unit| from Use site scope of /C [id: 0]
|
||||
[Enhancement]: public open fun foo(x: R|kotlin/Int?|): R|kotlin/Unit| from Java enhancement scope for /A [id: 0]
|
||||
[Source]: public open fun foo(x: R|kotlin/Int|): R|kotlin/Unit| from Use site scope of /C [id: 0]
|
||||
[Source]: public open fun foo(x: R|kotlin/Int|): R|kotlin/Unit| from Use site scope of /B [id: 0]
|
||||
|
||||
Reference in New Issue
Block a user