K2: add various tests describing current KT-62554 / KT-63242 behavior

This commit is contained in:
Mikhail Glukhikh
2023-11-22 19:02:48 +01:00
committed by Space Team
parent 17a1871b83
commit 54d978ba86
47 changed files with 916 additions and 0 deletions
@@ -21944,6 +21944,12 @@ public class DiagnosticCompilerTestFE10TestdataTestGenerated extends AbstractDia
runTest("compiler/testData/diagnostics/tests/j+k/integerNotNullable.kt");
}
@Test
@TestMetadata("intersectionWithJavaVoidNothing.kt")
public void testIntersectionWithJavaVoidNothing() throws Exception {
runTest("compiler/testData/diagnostics/tests/j+k/intersectionWithJavaVoidNothing.kt");
}
@Test
@TestMetadata("invisiblePackagePrivateInheritedMember.kt")
public void testInvisiblePackagePrivateInheritedMember() throws Exception {
@@ -22698,6 +22704,54 @@ public class DiagnosticCompilerTestFE10TestdataTestGenerated extends AbstractDia
public void testSpecializedMap() throws Exception {
runTest("compiler/testData/diagnostics/tests/j+k/primitiveOverrides/specializedMap.kt");
}
@Test
@TestMetadata("triangleWithFlexibleType.kt")
public void testTriangleWithFlexibleType() throws Exception {
runTest("compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleType.kt");
}
@Test
@TestMetadata("triangleWithFlexibleTypeAndSubstitution.kt")
public void testTriangleWithFlexibleTypeAndSubstitution() throws Exception {
runTest("compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution.kt");
}
@Test
@TestMetadata("triangleWithFlexibleTypeAndSubstitution2.kt")
public void testTriangleWithFlexibleTypeAndSubstitution2() throws Exception {
runTest("compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution2.kt");
}
@Test
@TestMetadata("triangleWithFlexibleTypeAndSubstitution3.kt")
public void testTriangleWithFlexibleTypeAndSubstitution3() throws Exception {
runTest("compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution3.kt");
}
@Test
@TestMetadata("triangleWithFlexibleTypeAndSubstitution4.kt")
public void testTriangleWithFlexibleTypeAndSubstitution4() throws Exception {
runTest("compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution4.kt");
}
@Test
@TestMetadata("triangleWithFlexibleTypeAndSubstitution5.kt")
public void testTriangleWithFlexibleTypeAndSubstitution5() throws Exception {
runTest("compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution5.kt");
}
@Test
@TestMetadata("triangleWithNotNullType.kt")
public void testTriangleWithNotNullType() throws Exception {
runTest("compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithNotNullType.kt");
}
@Test
@TestMetadata("triangleWithNullableType.kt")
public void testTriangleWithNullableType() throws Exception {
runTest("compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithNullableType.kt");
}
}
@Nested
@@ -20192,6 +20192,12 @@ public class LLFirBlackBoxCodegenBasedTestGenerated extends AbstractLLFirBlackBo
runTest("compiler/testData/codegen/box/fir/notFoundClasses.kt");
}
@Test
@TestMetadata("primitiveDoubleJavaKotlinIntersection.kt")
public void testPrimitiveDoubleJavaKotlinIntersection() throws Exception {
runTest("compiler/testData/codegen/box/fir/primitiveDoubleJavaKotlinIntersection.kt");
}
@Test
@TestMetadata("publicMethodCallViaPackagePrivateCommon.kt")
public void testPublicMethodCallViaPackagePrivateCommon() throws Exception {
@@ -21944,6 +21944,12 @@ public class LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated
runTest("compiler/testData/diagnostics/tests/j+k/integerNotNullable.kt");
}
@Test
@TestMetadata("intersectionWithJavaVoidNothing.kt")
public void testIntersectionWithJavaVoidNothing() throws Exception {
runTest("compiler/testData/diagnostics/tests/j+k/intersectionWithJavaVoidNothing.kt");
}
@Test
@TestMetadata("invisiblePackagePrivateInheritedMember.kt")
public void testInvisiblePackagePrivateInheritedMember() throws Exception {
@@ -22698,6 +22704,54 @@ public class LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated
public void testSpecializedMap() throws Exception {
runTest("compiler/testData/diagnostics/tests/j+k/primitiveOverrides/specializedMap.kt");
}
@Test
@TestMetadata("triangleWithFlexibleType.kt")
public void testTriangleWithFlexibleType() throws Exception {
runTest("compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleType.kt");
}
@Test
@TestMetadata("triangleWithFlexibleTypeAndSubstitution.kt")
public void testTriangleWithFlexibleTypeAndSubstitution() throws Exception {
runTest("compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution.kt");
}
@Test
@TestMetadata("triangleWithFlexibleTypeAndSubstitution2.kt")
public void testTriangleWithFlexibleTypeAndSubstitution2() throws Exception {
runTest("compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution2.kt");
}
@Test
@TestMetadata("triangleWithFlexibleTypeAndSubstitution3.kt")
public void testTriangleWithFlexibleTypeAndSubstitution3() throws Exception {
runTest("compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution3.kt");
}
@Test
@TestMetadata("triangleWithFlexibleTypeAndSubstitution4.kt")
public void testTriangleWithFlexibleTypeAndSubstitution4() throws Exception {
runTest("compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution4.kt");
}
@Test
@TestMetadata("triangleWithFlexibleTypeAndSubstitution5.kt")
public void testTriangleWithFlexibleTypeAndSubstitution5() throws Exception {
runTest("compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution5.kt");
}
@Test
@TestMetadata("triangleWithNotNullType.kt")
public void testTriangleWithNotNullType() throws Exception {
runTest("compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithNotNullType.kt");
}
@Test
@TestMetadata("triangleWithNullableType.kt")
public void testTriangleWithNullableType() throws Exception {
runTest("compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithNullableType.kt");
}
}
@Nested
@@ -20192,6 +20192,12 @@ public class LLFirReversedBlackBoxCodegenBasedTestGenerated extends AbstractLLFi
runTest("compiler/testData/codegen/box/fir/notFoundClasses.kt");
}
@Test
@TestMetadata("primitiveDoubleJavaKotlinIntersection.kt")
public void testPrimitiveDoubleJavaKotlinIntersection() throws Exception {
runTest("compiler/testData/codegen/box/fir/primitiveDoubleJavaKotlinIntersection.kt");
}
@Test
@TestMetadata("publicMethodCallViaPackagePrivateCommon.kt")
public void testPublicMethodCallViaPackagePrivateCommon() throws Exception {
@@ -21938,6 +21938,12 @@ public class FirLightTreeOldFrontendDiagnosticsTestGenerated extends AbstractFir
runTest("compiler/testData/diagnostics/tests/j+k/integerNotNullable.kt");
}
@Test
@TestMetadata("intersectionWithJavaVoidNothing.kt")
public void testIntersectionWithJavaVoidNothing() throws Exception {
runTest("compiler/testData/diagnostics/tests/j+k/intersectionWithJavaVoidNothing.kt");
}
@Test
@TestMetadata("invisiblePackagePrivateInheritedMember.kt")
public void testInvisiblePackagePrivateInheritedMember() throws Exception {
@@ -22692,6 +22698,54 @@ public class FirLightTreeOldFrontendDiagnosticsTestGenerated extends AbstractFir
public void testSpecializedMap() throws Exception {
runTest("compiler/testData/diagnostics/tests/j+k/primitiveOverrides/specializedMap.kt");
}
@Test
@TestMetadata("triangleWithFlexibleType.kt")
public void testTriangleWithFlexibleType() throws Exception {
runTest("compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleType.kt");
}
@Test
@TestMetadata("triangleWithFlexibleTypeAndSubstitution.kt")
public void testTriangleWithFlexibleTypeAndSubstitution() throws Exception {
runTest("compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution.kt");
}
@Test
@TestMetadata("triangleWithFlexibleTypeAndSubstitution2.kt")
public void testTriangleWithFlexibleTypeAndSubstitution2() throws Exception {
runTest("compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution2.kt");
}
@Test
@TestMetadata("triangleWithFlexibleTypeAndSubstitution3.kt")
public void testTriangleWithFlexibleTypeAndSubstitution3() throws Exception {
runTest("compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution3.kt");
}
@Test
@TestMetadata("triangleWithFlexibleTypeAndSubstitution4.kt")
public void testTriangleWithFlexibleTypeAndSubstitution4() throws Exception {
runTest("compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution4.kt");
}
@Test
@TestMetadata("triangleWithFlexibleTypeAndSubstitution5.kt")
public void testTriangleWithFlexibleTypeAndSubstitution5() throws Exception {
runTest("compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution5.kt");
}
@Test
@TestMetadata("triangleWithNotNullType.kt")
public void testTriangleWithNotNullType() throws Exception {
runTest("compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithNotNullType.kt");
}
@Test
@TestMetadata("triangleWithNullableType.kt")
public void testTriangleWithNullableType() throws Exception {
runTest("compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithNullableType.kt");
}
}
@Nested
@@ -21944,6 +21944,12 @@ public class FirPsiOldFrontendDiagnosticsTestGenerated extends AbstractFirPsiDia
runTest("compiler/testData/diagnostics/tests/j+k/integerNotNullable.kt");
}
@Test
@TestMetadata("intersectionWithJavaVoidNothing.kt")
public void testIntersectionWithJavaVoidNothing() throws Exception {
runTest("compiler/testData/diagnostics/tests/j+k/intersectionWithJavaVoidNothing.kt");
}
@Test
@TestMetadata("invisiblePackagePrivateInheritedMember.kt")
public void testInvisiblePackagePrivateInheritedMember() throws Exception {
@@ -22698,6 +22704,54 @@ public class FirPsiOldFrontendDiagnosticsTestGenerated extends AbstractFirPsiDia
public void testSpecializedMap() throws Exception {
runTest("compiler/testData/diagnostics/tests/j+k/primitiveOverrides/specializedMap.kt");
}
@Test
@TestMetadata("triangleWithFlexibleType.kt")
public void testTriangleWithFlexibleType() throws Exception {
runTest("compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleType.kt");
}
@Test
@TestMetadata("triangleWithFlexibleTypeAndSubstitution.kt")
public void testTriangleWithFlexibleTypeAndSubstitution() throws Exception {
runTest("compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution.kt");
}
@Test
@TestMetadata("triangleWithFlexibleTypeAndSubstitution2.kt")
public void testTriangleWithFlexibleTypeAndSubstitution2() throws Exception {
runTest("compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution2.kt");
}
@Test
@TestMetadata("triangleWithFlexibleTypeAndSubstitution3.kt")
public void testTriangleWithFlexibleTypeAndSubstitution3() throws Exception {
runTest("compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution3.kt");
}
@Test
@TestMetadata("triangleWithFlexibleTypeAndSubstitution4.kt")
public void testTriangleWithFlexibleTypeAndSubstitution4() throws Exception {
runTest("compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution4.kt");
}
@Test
@TestMetadata("triangleWithFlexibleTypeAndSubstitution5.kt")
public void testTriangleWithFlexibleTypeAndSubstitution5() throws Exception {
runTest("compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution5.kt");
}
@Test
@TestMetadata("triangleWithNotNullType.kt")
public void testTriangleWithNotNullType() throws Exception {
runTest("compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithNotNullType.kt");
}
@Test
@TestMetadata("triangleWithNullableType.kt")
public void testTriangleWithNullableType() throws Exception {
runTest("compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithNullableType.kt");
}
}
@Nested
@@ -19921,6 +19921,12 @@ public class FirLightTreeBlackBoxCodegenTestGenerated extends AbstractFirLightTr
runTest("compiler/testData/codegen/box/fir/notFoundClasses.kt");
}
@Test
@TestMetadata("primitiveDoubleJavaKotlinIntersection.kt")
public void testPrimitiveDoubleJavaKotlinIntersection() throws Exception {
runTest("compiler/testData/codegen/box/fir/primitiveDoubleJavaKotlinIntersection.kt");
}
@Test
@TestMetadata("publicMethodCallViaPackagePrivateCommon.kt")
public void testPublicMethodCallViaPackagePrivateCommon() throws Exception {
@@ -19921,6 +19921,12 @@ public class FirLightTreeBlackBoxCodegenWithIrFakeOverrideGeneratorTestGenerated
runTest("compiler/testData/codegen/box/fir/notFoundClasses.kt");
}
@Test
@TestMetadata("primitiveDoubleJavaKotlinIntersection.kt")
public void testPrimitiveDoubleJavaKotlinIntersection() throws Exception {
runTest("compiler/testData/codegen/box/fir/primitiveDoubleJavaKotlinIntersection.kt");
}
@Test
@TestMetadata("publicMethodCallViaPackagePrivateCommon.kt")
public void testPublicMethodCallViaPackagePrivateCommon() throws Exception {
@@ -19921,6 +19921,12 @@ public class FirPsiBlackBoxCodegenTestGenerated extends AbstractFirPsiBlackBoxCo
runTest("compiler/testData/codegen/box/fir/notFoundClasses.kt");
}
@Test
@TestMetadata("primitiveDoubleJavaKotlinIntersection.kt")
public void testPrimitiveDoubleJavaKotlinIntersection() throws Exception {
runTest("compiler/testData/codegen/box/fir/primitiveDoubleJavaKotlinIntersection.kt");
}
@Test
@TestMetadata("publicMethodCallViaPackagePrivateCommon.kt")
public void testPublicMethodCallViaPackagePrivateCommon() throws Exception {
@@ -0,0 +1,28 @@
// TARGET_BACKEND: JVM_IR
// IGNORE_BACKEND_K2: JVM_IR
// IGNORE_LIGHT_ANALYSIS
// (Unresolved reference: B supertype in C declaration)
// ISSUE: KT-63242
// FILE: box.kt
private open class C : A<Double?>, B, BImpl() {
override fun foo(d: Double?): String = "Fail: C"
}
fun box(): String =
C().foo(0.0)
// FILE: A.java
interface A<T> {
String foo(T value);
}
interface B {
String foo(double value);
}
class BImpl {
public String foo(double value) {
return "OK";
}
}
@@ -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
@@ -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)
}
@@ -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]
@@ -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))
}
@@ -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)
}
@@ -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)
}
@@ -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]
@@ -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))
}
@@ -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)
}
@@ -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)
}
@@ -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]
@@ -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))
}
@@ -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)
}
@@ -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)
}
@@ -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]
@@ -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))
}
@@ -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)
}
@@ -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)
}
@@ -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]
@@ -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))
}
@@ -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)
}
@@ -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)
}
@@ -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]
@@ -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))
}
@@ -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)
}
@@ -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)
}
@@ -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]
@@ -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))
}
@@ -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)
}
@@ -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))
}
@@ -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)
}
@@ -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]
@@ -21944,6 +21944,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest {
runTest("compiler/testData/diagnostics/tests/j+k/integerNotNullable.kt");
}
@Test
@TestMetadata("intersectionWithJavaVoidNothing.kt")
public void testIntersectionWithJavaVoidNothing() throws Exception {
runTest("compiler/testData/diagnostics/tests/j+k/intersectionWithJavaVoidNothing.kt");
}
@Test
@TestMetadata("invisiblePackagePrivateInheritedMember.kt")
public void testInvisiblePackagePrivateInheritedMember() throws Exception {
@@ -22698,6 +22704,54 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest {
public void testSpecializedMap() throws Exception {
runTest("compiler/testData/diagnostics/tests/j+k/primitiveOverrides/specializedMap.kt");
}
@Test
@TestMetadata("triangleWithFlexibleType.kt")
public void testTriangleWithFlexibleType() throws Exception {
runTest("compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleType.kt");
}
@Test
@TestMetadata("triangleWithFlexibleTypeAndSubstitution.kt")
public void testTriangleWithFlexibleTypeAndSubstitution() throws Exception {
runTest("compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution.kt");
}
@Test
@TestMetadata("triangleWithFlexibleTypeAndSubstitution2.kt")
public void testTriangleWithFlexibleTypeAndSubstitution2() throws Exception {
runTest("compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution2.kt");
}
@Test
@TestMetadata("triangleWithFlexibleTypeAndSubstitution3.kt")
public void testTriangleWithFlexibleTypeAndSubstitution3() throws Exception {
runTest("compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution3.kt");
}
@Test
@TestMetadata("triangleWithFlexibleTypeAndSubstitution4.kt")
public void testTriangleWithFlexibleTypeAndSubstitution4() throws Exception {
runTest("compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution4.kt");
}
@Test
@TestMetadata("triangleWithFlexibleTypeAndSubstitution5.kt")
public void testTriangleWithFlexibleTypeAndSubstitution5() throws Exception {
runTest("compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution5.kt");
}
@Test
@TestMetadata("triangleWithNotNullType.kt")
public void testTriangleWithNotNullType() throws Exception {
runTest("compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithNotNullType.kt");
}
@Test
@TestMetadata("triangleWithNullableType.kt")
public void testTriangleWithNullableType() throws Exception {
runTest("compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithNullableType.kt");
}
}
@Nested
@@ -19921,6 +19921,12 @@ public class JvmAbiConsistencyTestBoxGenerated extends AbstractJvmAbiConsistency
runTest("compiler/testData/codegen/box/fir/notFoundClasses.kt");
}
@Test
@TestMetadata("primitiveDoubleJavaKotlinIntersection.kt")
public void testPrimitiveDoubleJavaKotlinIntersection() throws Exception {
runTest("compiler/testData/codegen/box/fir/primitiveDoubleJavaKotlinIntersection.kt");
}
@Test
@TestMetadata("publicMethodCallViaPackagePrivateCommon.kt")
public void testPublicMethodCallViaPackagePrivateCommon() throws Exception {
@@ -19921,6 +19921,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
runTest("compiler/testData/codegen/box/fir/notFoundClasses.kt");
}
@Test
@TestMetadata("primitiveDoubleJavaKotlinIntersection.kt")
public void testPrimitiveDoubleJavaKotlinIntersection() throws Exception {
runTest("compiler/testData/codegen/box/fir/primitiveDoubleJavaKotlinIntersection.kt");
}
@Test
@TestMetadata("publicMethodCallViaPackagePrivateCommon.kt")
public void testPublicMethodCallViaPackagePrivateCommon() throws Exception {
@@ -19921,6 +19921,12 @@ public class IrBlackBoxCodegenWithIrInlinerTestGenerated extends AbstractIrBlack
runTest("compiler/testData/codegen/box/fir/notFoundClasses.kt");
}
@Test
@TestMetadata("primitiveDoubleJavaKotlinIntersection.kt")
public void testPrimitiveDoubleJavaKotlinIntersection() throws Exception {
runTest("compiler/testData/codegen/box/fir/primitiveDoubleJavaKotlinIntersection.kt");
}
@Test
@TestMetadata("publicMethodCallViaPackagePrivateCommon.kt")
public void testPublicMethodCallViaPackagePrivateCommon() throws Exception {
@@ -16650,6 +16650,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
runTest("compiler/testData/codegen/box/fir/notFoundClasses.kt");
}
@TestMetadata("primitiveDoubleJavaKotlinIntersection.kt")
public void testPrimitiveDoubleJavaKotlinIntersection() throws Exception {
runTest("compiler/testData/codegen/box/fir/primitiveDoubleJavaKotlinIntersection.kt");
}
@TestMetadata("publicMethodCallViaPackagePrivateCommon.kt")
public void testPublicMethodCallViaPackagePrivateCommon() throws Exception {
runTest("compiler/testData/codegen/box/fir/publicMethodCallViaPackagePrivateCommon.kt");