From d5fe86559d61099c699d94c7901a42e8878cae78 Mon Sep 17 00:00:00 2001 From: "marat.akhin" Date: Mon, 30 Oct 2023 15:18:49 +0100 Subject: [PATCH] [Tests] Add test for KT-59493 This is to record the red->green change in behavior between K1 and K2, when K2 correctly handles resolution/inference of an extension function with definitely non-nullable type. --- ...CompilerTestFE10TestdataTestGenerated.java | 6 +++ ...sticCompilerFE10TestDataTestGenerated.java | 6 +++ ...eeOldFrontendDiagnosticsTestGenerated.java | 6 +++ ...siOldFrontendDiagnosticsTestGenerated.java | 6 +++ .../kt59493.fir.kt | 37 +++++++++++++++++++ .../kt59493.kt | 37 +++++++++++++++++++ .../test/runners/DiagnosticTestGenerated.java | 6 +++ 7 files changed, 104 insertions(+) create mode 100644 compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/kt59493.fir.kt create mode 100644 compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/kt59493.kt 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 6bdafa1fa56..1878bb12767 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 @@ -12358,6 +12358,12 @@ public class DiagnosticCompilerTestFE10TestdataTestGenerated extends AbstractDia runTest("compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/isAsOperatorsEnabled.kt"); } + @Test + @TestMetadata("kt59493.kt") + public void testKt59493() throws Exception { + runTest("compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/kt59493.kt"); + } + @Test @TestMetadata("notApplicable.kt") public void testNotApplicable() 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 e53e5ece25f..acdf8ead553 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 @@ -12358,6 +12358,12 @@ public class LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated runTest("compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/isAsOperatorsEnabled.kt"); } + @Test + @TestMetadata("kt59493.kt") + public void testKt59493() throws Exception { + runTest("compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/kt59493.kt"); + } + @Test @TestMetadata("notApplicable.kt") public void testNotApplicable() 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 c8690b3db56..94f2e9b9460 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 @@ -12352,6 +12352,12 @@ public class FirLightTreeOldFrontendDiagnosticsTestGenerated extends AbstractFir runTest("compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/isAsOperatorsEnabled.kt"); } + @Test + @TestMetadata("kt59493.kt") + public void testKt59493() throws Exception { + runTest("compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/kt59493.kt"); + } + @Test @TestMetadata("notApplicable.kt") public void testNotApplicable() throws Exception { 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 c6fa9d3443c..71204895ec6 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 @@ -12358,6 +12358,12 @@ public class FirPsiOldFrontendDiagnosticsTestGenerated extends AbstractFirPsiDia runTest("compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/isAsOperatorsEnabled.kt"); } + @Test + @TestMetadata("kt59493.kt") + public void testKt59493() throws Exception { + runTest("compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/kt59493.kt"); + } + @Test @TestMetadata("notApplicable.kt") public void testNotApplicable() throws Exception { diff --git a/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/kt59493.fir.kt b/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/kt59493.fir.kt new file mode 100644 index 00000000000..c148c528508 --- /dev/null +++ b/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/kt59493.fir.kt @@ -0,0 +1,37 @@ +// !LANGUAGE: +DefinitelyNonNullableTypes + +import kotlin.reflect.KProperty1 + +class Mem +class Ext + +class Foo { + fun foo(prop: KProperty1): Mem = Mem() +} +fun Foo.bar(prop: KProperty1): Ext = Ext() + +class Bar { + fun bar(prop: KProperty1): Mem = Mem() +} +fun Bar.bar(prop: KProperty1): Ext = Ext() + +class Baz { + fun baz(prop: KProperty1): Mem = Mem() +} +fun Baz.baz(prop: KProperty1): Ext = Ext() + +fun id(t: T): T = t + +fun main() { + val r01: Mem = Foo().foo(String::length) + val r02: Mem = Foo().foo(id(String::length)) + + val r03: Ext = Foo().bar(String::length) + val r04: Ext = Foo().bar(id(String::length)) + + val r05: Mem = Bar().bar(String::length) + val r06: Mem = Bar().bar(id(String::length)) + + val r07 = Baz().baz(String::length) + val r08: Ext = Baz().baz(id(String::length)) +} diff --git a/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/kt59493.kt b/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/kt59493.kt new file mode 100644 index 00000000000..41998306c7c --- /dev/null +++ b/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/kt59493.kt @@ -0,0 +1,37 @@ +// !LANGUAGE: +DefinitelyNonNullableTypes + +import kotlin.reflect.KProperty1 + +class Mem +class Ext + +class Foo { + fun foo(prop: KProperty1): Mem = Mem() +} +fun Foo.bar(prop: KProperty1): Ext = Ext() + +class Bar { + fun bar(prop: KProperty1): Mem = Mem() +} +fun Bar.bar(prop: KProperty1): Ext = Ext() + +class Baz { + fun baz(prop: KProperty1): Mem = Mem() +} +fun Baz.baz(prop: KProperty1): Ext = Ext() + +fun id(t: T): T = t + +fun main() { + val r01: Mem = Foo().foo(String::length) + val r02: Mem = Foo().foo(id(String::length)) + + val r03: Ext = Foo().bar(String::length) + val r04: Ext = Foo().bar(id(String::length)) + + val r05: Mem = Bar().bar(String::length) + val r06: Mem = Bar().bar(id(String::length)) + + val r07 = Baz().baz(String::length) + val r08: Ext = Baz().baz(id(String::length)) +} 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 00048eab6dc..7713cd85c56 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 @@ -12358,6 +12358,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest { runTest("compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/isAsOperatorsEnabled.kt"); } + @Test + @TestMetadata("kt59493.kt") + public void testKt59493() throws Exception { + runTest("compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/kt59493.kt"); + } + @Test @TestMetadata("notApplicable.kt") public void testNotApplicable() throws Exception {