From 54d978ba86c8e52e2b7cca126b91aacb7667a015 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Wed, 22 Nov 2023 19:02:48 +0100 Subject: [PATCH] K2: add various tests describing current KT-62554 / KT-63242 behavior --- ...CompilerTestFE10TestdataTestGenerated.java | 54 +++++++++++++++++++ ...LFirBlackBoxCodegenBasedTestGenerated.java | 6 +++ ...sticCompilerFE10TestDataTestGenerated.java | 54 +++++++++++++++++++ ...rsedBlackBoxCodegenBasedTestGenerated.java | 6 +++ ...eeOldFrontendDiagnosticsTestGenerated.java | 54 +++++++++++++++++++ ...siOldFrontendDiagnosticsTestGenerated.java | 54 +++++++++++++++++++ ...LightTreeBlackBoxCodegenTestGenerated.java | 6 +++ ...hIrFakeOverrideGeneratorTestGenerated.java | 6 +++ .../FirPsiBlackBoxCodegenTestGenerated.java | 6 +++ .../primitiveDoubleJavaKotlinIntersection.kt | 28 ++++++++++ .../j+k/intersectionWithJavaVoidNothing.kt | 17 ++++++ .../triangleWithFlexibleType.fir.kt | 20 +++++++ ...triangleWithFlexibleType.fir.overrides.txt | 4 ++ .../triangleWithFlexibleType.fir.txt | 15 ++++++ .../triangleWithFlexibleType.kt | 20 +++++++ ...ngleWithFlexibleTypeAndSubstitution.fir.kt | 24 +++++++++ ...xibleTypeAndSubstitution.fir.overrides.txt | 6 +++ ...gleWithFlexibleTypeAndSubstitution.fir.txt | 22 ++++++++ ...triangleWithFlexibleTypeAndSubstitution.kt | 24 +++++++++ ...gleWithFlexibleTypeAndSubstitution2.fir.kt | 26 +++++++++ ...ibleTypeAndSubstitution2.fir.overrides.txt | 6 +++ ...leWithFlexibleTypeAndSubstitution2.fir.txt | 16 ++++++ ...riangleWithFlexibleTypeAndSubstitution2.kt | 26 +++++++++ ...gleWithFlexibleTypeAndSubstitution3.fir.kt | 24 +++++++++ ...ibleTypeAndSubstitution3.fir.overrides.txt | 6 +++ ...leWithFlexibleTypeAndSubstitution3.fir.txt | 22 ++++++++ ...riangleWithFlexibleTypeAndSubstitution3.kt | 24 +++++++++ ...gleWithFlexibleTypeAndSubstitution4.fir.kt | 26 +++++++++ ...ibleTypeAndSubstitution4.fir.overrides.txt | 8 +++ ...leWithFlexibleTypeAndSubstitution4.fir.txt | 24 +++++++++ ...riangleWithFlexibleTypeAndSubstitution4.kt | 26 +++++++++ ...gleWithFlexibleTypeAndSubstitution5.fir.kt | 24 +++++++++ ...ibleTypeAndSubstitution5.fir.overrides.txt | 6 +++ ...leWithFlexibleTypeAndSubstitution5.fir.txt | 18 +++++++ ...riangleWithFlexibleTypeAndSubstitution5.kt | 24 +++++++++ .../triangleWithNotNullType.fir.kt | 22 ++++++++ .../triangleWithNotNullType.fir.overrides.txt | 4 ++ .../triangleWithNotNullType.fir.txt | 15 ++++++ .../triangleWithNotNullType.kt | 22 ++++++++ .../triangleWithNullableType.fir.txt | 15 ++++++ .../triangleWithNullableType.kt | 23 ++++++++ .../triangleWithNullableType.overrides.txt | 6 +++ .../test/runners/DiagnosticTestGenerated.java | 54 +++++++++++++++++++ .../JvmAbiConsistencyTestBoxGenerated.java | 6 +++ .../IrBlackBoxCodegenTestGenerated.java | 6 +++ ...kBoxCodegenWithIrInlinerTestGenerated.java | 6 +++ .../LightAnalysisModeTestGenerated.java | 5 ++ 47 files changed, 916 insertions(+) create mode 100644 compiler/testData/codegen/box/fir/primitiveDoubleJavaKotlinIntersection.kt create mode 100644 compiler/testData/diagnostics/tests/j+k/intersectionWithJavaVoidNothing.kt create mode 100644 compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleType.fir.kt create mode 100644 compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleType.fir.overrides.txt create mode 100644 compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleType.fir.txt create mode 100644 compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleType.kt create mode 100644 compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution.fir.kt create mode 100644 compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution.fir.overrides.txt create mode 100644 compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution.fir.txt create mode 100644 compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution.kt create mode 100644 compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution2.fir.kt create mode 100644 compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution2.fir.overrides.txt create mode 100644 compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution2.fir.txt create mode 100644 compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution2.kt create mode 100644 compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution3.fir.kt create mode 100644 compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution3.fir.overrides.txt create mode 100644 compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution3.fir.txt create mode 100644 compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution3.kt create mode 100644 compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution4.fir.kt create mode 100644 compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution4.fir.overrides.txt create mode 100644 compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution4.fir.txt create mode 100644 compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution4.kt create mode 100644 compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution5.fir.kt create mode 100644 compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution5.fir.overrides.txt create mode 100644 compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution5.fir.txt create mode 100644 compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution5.kt create mode 100644 compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithNotNullType.fir.kt create mode 100644 compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithNotNullType.fir.overrides.txt create mode 100644 compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithNotNullType.fir.txt create mode 100644 compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithNotNullType.kt create mode 100644 compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithNullableType.fir.txt create mode 100644 compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithNullableType.kt create mode 100644 compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithNullableType.overrides.txt diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java index 042fed4b060..d97c102c7a4 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java @@ -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 diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirBlackBoxCodegenBasedTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirBlackBoxCodegenBasedTestGenerated.java index 7a893568fd3..db1a23bcda8 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirBlackBoxCodegenBasedTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirBlackBoxCodegenBasedTestGenerated.java @@ -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 { diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java index 420f52ea5a6..43290396fe8 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java @@ -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 diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirReversedBlackBoxCodegenBasedTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirReversedBlackBoxCodegenBasedTestGenerated.java index e348e51958e..10d28a02b8c 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirReversedBlackBoxCodegenBasedTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirReversedBlackBoxCodegenBasedTestGenerated.java @@ -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 { diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java index a4a6d101f0c..aec880e2d3c 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java @@ -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 diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java index 0c1de20d07f..361ebd6751d 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java @@ -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 diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenTestGenerated.java index d22d1e3e98d..484960f97e1 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenTestGenerated.java @@ -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 { diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenWithIrFakeOverrideGeneratorTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenWithIrFakeOverrideGeneratorTestGenerated.java index 1152e82ceef..e4b8bb7f98b 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenWithIrFakeOverrideGeneratorTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenWithIrFakeOverrideGeneratorTestGenerated.java @@ -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 { diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxCodegenTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxCodegenTestGenerated.java index 84f6bae5049..5db5d0409bd 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxCodegenTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxCodegenTestGenerated.java @@ -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 { diff --git a/compiler/testData/codegen/box/fir/primitiveDoubleJavaKotlinIntersection.kt b/compiler/testData/codegen/box/fir/primitiveDoubleJavaKotlinIntersection.kt new file mode 100644 index 00000000000..61fd54c2679 --- /dev/null +++ b/compiler/testData/codegen/box/fir/primitiveDoubleJavaKotlinIntersection.kt @@ -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, B, BImpl() { + override fun foo(d: Double?): String = "Fail: C" +} + +fun box(): String = + C().foo(0.0) + +// FILE: A.java +interface A { + String foo(T value); +} + +interface B { + String foo(double value); +} + +class BImpl { + public String foo(double value) { + return "OK"; + } +} diff --git a/compiler/testData/diagnostics/tests/j+k/intersectionWithJavaVoidNothing.kt b/compiler/testData/diagnostics/tests/j+k/intersectionWithJavaVoidNothing.kt new file mode 100644 index 00000000000..f493da78ad5 --- /dev/null +++ b/compiler/testData/diagnostics/tests/j+k/intersectionWithJavaVoidNothing.kt @@ -0,0 +1,17 @@ +// FIR_IDENTICAL +// WITH_STDLIB +// FILE: BaseOwnerJava.java + +import java.util.Collection; + +public interface BaseOwnerJava { + void setSomething(Collection arg); +} + +// FILE: test.kt + +abstract class Impl : BaseOwnerJava { + override fun setSomething(arg: Collection) = throw IllegalStateException() +} + +class Final : Impl(), BaseOwnerJava diff --git a/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleType.fir.kt b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleType.fir.kt new file mode 100644 index 00000000000..21294c9a4ed --- /dev/null +++ b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleType.fir.kt @@ -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) +} diff --git a/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleType.fir.overrides.txt b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleType.fir.overrides.txt new file mode 100644 index 00000000000..dc1e11d9954 --- /dev/null +++ b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleType.fir.overrides.txt @@ -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] diff --git a/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleType.fir.txt b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleType.fir.txt new file mode 100644 index 00000000000..a2dba251a7b --- /dev/null +++ b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleType.fir.txt @@ -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() + } + + } + public final fun main(): R|kotlin/Unit| { + R|/C.C|().R|/A.foo|(Int(42)) + } diff --git a/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleType.kt b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleType.kt new file mode 100644 index 00000000000..c4252edc76b --- /dev/null +++ b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleType.kt @@ -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) +} diff --git a/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution.fir.kt b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution.fir.kt new file mode 100644 index 00000000000..9c60f71b716 --- /dev/null +++ b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution.fir.kt @@ -0,0 +1,24 @@ +// ISSUE: KT-62554 +// FIR_DUMP +// SCOPE_DUMP: D:foo +// FILE: A.java + +public class A { + public T foo(Integer x) { + return "A"; + } +} + +// FILE: main.kt + +interface B { + fun foo(x: Int) = "B" +} + +open class C : A() + +class D : C(), B + +fun main() { + D().foo(42) +} diff --git a/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution.fir.overrides.txt b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution.fir.overrides.txt new file mode 100644 index 00000000000..9dc45a0d090 --- /dev/null +++ b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution.fir.overrides.txt @@ -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| 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] diff --git a/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution.fir.txt b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution.fir.txt new file mode 100644 index 00000000000..19697c7ae27 --- /dev/null +++ b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution.fir.txt @@ -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| { + public constructor(): R|C| { + super|>() + } + + } + public final class D : R|C|, R|B| { + public constructor(): R|D| { + super() + } + + } + public final fun main(): R|kotlin/Unit| { + R|/D.D|().R|/B.foo|(Int(42)) + } diff --git a/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution.kt b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution.kt new file mode 100644 index 00000000000..d29d88a44a6 --- /dev/null +++ b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution.kt @@ -0,0 +1,24 @@ +// ISSUE: KT-62554 +// FIR_DUMP +// SCOPE_DUMP: D:foo +// FILE: A.java + +public class A { + public T foo(Integer x) { + return "A"; + } +} + +// FILE: main.kt + +interface B { + fun foo(x: Int) = "B" +} + +open class C : A() + +class D : C(), B + +fun main() { + D().foo(42) +} diff --git a/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution2.fir.kt b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution2.fir.kt new file mode 100644 index 00000000000..8616b3bf4d9 --- /dev/null +++ b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution2.fir.kt @@ -0,0 +1,26 @@ +// ISSUE: KT-62554 +// FIR_DUMP +// SCOPE_DUMP: D:foo +// FILE: A.java + +public class A { + public String foo(T x) { + return "A"; + } +} + +// FILE: C.java + +public class C extends A {} + +// FILE: main.kt + +interface B { + fun foo(x: Int) = "B" +} + +class D : C(), B + +fun main() { + D().foo(42) +} diff --git a/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution2.fir.overrides.txt b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution2.fir.overrides.txt new file mode 100644 index 00000000000..03ac63a8ec5 --- /dev/null +++ b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution2.fir.overrides.txt @@ -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|): 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] diff --git a/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution2.fir.txt b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution2.fir.txt new file mode 100644 index 00000000000..b12d689d708 --- /dev/null +++ b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution2.fir.txt @@ -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() + } + + } + public final fun main(): R|kotlin/Unit| { + R|/D.D|().R|/B.foo|(Int(42)) + } diff --git a/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution2.kt b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution2.kt new file mode 100644 index 00000000000..4c4afbe5811 --- /dev/null +++ b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution2.kt @@ -0,0 +1,26 @@ +// ISSUE: KT-62554 +// FIR_DUMP +// SCOPE_DUMP: D:foo +// FILE: A.java + +public class A { + public String foo(T x) { + return "A"; + } +} + +// FILE: C.java + +public class C extends A {} + +// FILE: main.kt + +interface B { + fun foo(x: Int) = "B" +} + +class D : C(), B + +fun main() { + D().foo(42) +} diff --git a/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution3.fir.kt b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution3.fir.kt new file mode 100644 index 00000000000..65565a2e7ef --- /dev/null +++ b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution3.fir.kt @@ -0,0 +1,24 @@ +// ISSUE: KT-62554 +// FIR_DUMP +// SCOPE_DUMP: D:foo +// FILE: A.java + +public class A { + public String foo(T x) { + return "A"; + } +} + +// FILE: main.kt + +interface B { + fun foo(x: Int) = "B" +} + +open class C : A() + +class D : C(), B + +fun main() { + D().foo(42) +} diff --git a/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution3.fir.overrides.txt b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution3.fir.overrides.txt new file mode 100644 index 00000000000..8362c8e0a83 --- /dev/null +++ b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution3.fir.overrides.txt @@ -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|): 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] diff --git a/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution3.fir.txt b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution3.fir.txt new file mode 100644 index 00000000000..bfb3ca05189 --- /dev/null +++ b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution3.fir.txt @@ -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| { + public constructor(): R|C| { + super|>() + } + + } + public final class D : R|C|, R|B| { + public constructor(): R|D| { + super() + } + + } + public final fun main(): R|kotlin/Unit| { + R|/D.D|().R|/B.foo|(Int(42)) + } diff --git a/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution3.kt b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution3.kt new file mode 100644 index 00000000000..a67932ec7dd --- /dev/null +++ b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution3.kt @@ -0,0 +1,24 @@ +// ISSUE: KT-62554 +// FIR_DUMP +// SCOPE_DUMP: D:foo +// FILE: A.java + +public class A { + public String foo(T x) { + return "A"; + } +} + +// FILE: main.kt + +interface B { + fun foo(x: Int) = "B" +} + +open class C : A() + +class D : C(), B + +fun main() { + D().foo(42) +} diff --git a/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution4.fir.kt b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution4.fir.kt new file mode 100644 index 00000000000..6f7d5573d1f --- /dev/null +++ b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution4.fir.kt @@ -0,0 +1,26 @@ +// ISSUE: KT-62554 +// FIR_DUMP +// SCOPE_DUMP: E:foo +// FILE: A.java + +public class A { + public String foo(T x) { + return "A"; + } +} + +// FILE: main.kt + +interface B { + fun foo(x: T) = "B" +} + +open class C : A() + +interface D : B + +class E : C(), D + +fun main() { + E().foo(42) +} diff --git a/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution4.fir.overrides.txt b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution4.fir.overrides.txt new file mode 100644 index 00000000000..88ebc2863f7 --- /dev/null +++ b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution4.fir.overrides.txt @@ -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|): 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] diff --git a/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution4.fir.txt b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution4.fir.txt new file mode 100644 index 00000000000..6b017be42cb --- /dev/null +++ b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution4.fir.txt @@ -0,0 +1,24 @@ +FILE: main.kt + public abstract interface B : R|kotlin/Any| { + public open fun foo(x: R|T|): R|kotlin/String| { + ^foo String(B) + } + + } + public open class C : R|A| { + public constructor(): R|C| { + super|>() + } + + } + public abstract interface D : R|B| { + } + public final class E : R|C|, R|D| { + public constructor(): R|E| { + super() + } + + } + public final fun main(): R|kotlin/Unit| { + R|/E.E|().R|/D.foo|(Int(42)) + } diff --git a/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution4.kt b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution4.kt new file mode 100644 index 00000000000..4620973f07e --- /dev/null +++ b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution4.kt @@ -0,0 +1,26 @@ +// ISSUE: KT-62554 +// FIR_DUMP +// SCOPE_DUMP: E:foo +// FILE: A.java + +public class A { + public String foo(T x) { + return "A"; + } +} + +// FILE: main.kt + +interface B { + fun foo(x: T) = "B" +} + +open class C : A() + +interface D : B + +class E : C(), D + +fun main() { + E().foo(42) +} diff --git a/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution5.fir.kt b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution5.fir.kt new file mode 100644 index 00000000000..c0b28d50bc3 --- /dev/null +++ b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution5.fir.kt @@ -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 { + fun foo(x: T) = "B" +} + +interface D : B + +class E : A(), D + +fun main() { + E().foo(42) +} diff --git a/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution5.fir.overrides.txt b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution5.fir.overrides.txt new file mode 100644 index 00000000000..dd4ae94000a --- /dev/null +++ b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution5.fir.overrides.txt @@ -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] diff --git a/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution5.fir.txt b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution5.fir.txt new file mode 100644 index 00000000000..fbb64aa8ccb --- /dev/null +++ b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution5.fir.txt @@ -0,0 +1,18 @@ +FILE: main.kt + public abstract interface B : R|kotlin/Any| { + public open fun foo(x: R|T|): R|kotlin/String| { + ^foo String(B) + } + + } + public abstract interface D : R|B| { + } + public final class E : R|A|, R|D| { + public constructor(): R|E| { + super() + } + + } + public final fun main(): R|kotlin/Unit| { + R|/E.E|().R|/D.foo|(Int(42)) + } diff --git a/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution5.kt b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution5.kt new file mode 100644 index 00000000000..4372f47134b --- /dev/null +++ b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithFlexibleTypeAndSubstitution5.kt @@ -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 { + fun foo(x: T) = "B" +} + +interface D : B + +class E : A(), D + +fun main() { + E().foo(42) +} diff --git a/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithNotNullType.fir.kt b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithNotNullType.fir.kt new file mode 100644 index 00000000000..50f5339d979 --- /dev/null +++ b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithNotNullType.fir.kt @@ -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().foo(42) +} diff --git a/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithNotNullType.fir.overrides.txt b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithNotNullType.fir.overrides.txt new file mode 100644 index 00000000000..159d788638d --- /dev/null +++ b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithNotNullType.fir.overrides.txt @@ -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] diff --git a/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithNotNullType.fir.txt b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithNotNullType.fir.txt new file mode 100644 index 00000000000..a2dba251a7b --- /dev/null +++ b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithNotNullType.fir.txt @@ -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() + } + + } + public final fun main(): R|kotlin/Unit| { + R|/C.C|().R|/A.foo|(Int(42)) + } diff --git a/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithNotNullType.kt b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithNotNullType.kt new file mode 100644 index 00000000000..d7ee3ce6983 --- /dev/null +++ b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithNotNullType.kt @@ -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().foo(42) +} diff --git a/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithNullableType.fir.txt b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithNullableType.fir.txt new file mode 100644 index 00000000000..a948d0f17c3 --- /dev/null +++ b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithNullableType.fir.txt @@ -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() + } + + } + public final fun main(): R|kotlin/Unit| { + R|/C.C|().R|/B.foo|(Int(42)) + } diff --git a/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithNullableType.kt b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithNullableType.kt new file mode 100644 index 00000000000..0bf190fe64f --- /dev/null +++ b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithNullableType.kt @@ -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) +} diff --git a/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithNullableType.overrides.txt b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithNullableType.overrides.txt new file mode 100644 index 00000000000..01d5c453e22 --- /dev/null +++ b/compiler/testData/diagnostics/tests/j+k/primitiveOverrides/triangleWithNullableType.overrides.txt @@ -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] + diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java index 99b09aa0300..e9617ea1ea2 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java @@ -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 diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/JvmAbiConsistencyTestBoxGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/JvmAbiConsistencyTestBoxGenerated.java index 1360cbfb439..89ebbef0ebf 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/JvmAbiConsistencyTestBoxGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/JvmAbiConsistencyTestBoxGenerated.java @@ -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 { diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java index 5dc342a2710..f1d37689e05 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java @@ -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 { diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenWithIrInlinerTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenWithIrInlinerTestGenerated.java index bf1010780ef..635c1e2bb50 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenWithIrInlinerTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenWithIrInlinerTestGenerated.java @@ -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 { diff --git a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java index 83bec214f28..62be3837ebc 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java @@ -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");