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 44e495a031d..ea3153f2d5b 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 @@ -13332,6 +13332,18 @@ public class DiagnosticCompilerTestFE10TestdataTestGenerated extends AbstractDia runTest("compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/disabledFeature.kt"); } + @Test + @TestMetadata("dnnTypeProjectionInParameter.kt") + public void testDnnTypeProjectionInParameter() { + runTest("compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/dnnTypeProjectionInParameter.kt"); + } + + @Test + @TestMetadata("dnnTypeProjectionInReceiver.kt") + public void testDnnTypeProjectionInReceiver() { + runTest("compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/dnnTypeProjectionInReceiver.kt"); + } + @Test @TestMetadata("inference.kt") public void testInference() { 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 217cf8882a1..5e30359131d 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 @@ -13332,6 +13332,18 @@ public class LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated runTest("compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/disabledFeature.kt"); } + @Test + @TestMetadata("dnnTypeProjectionInParameter.kt") + public void testDnnTypeProjectionInParameter() { + runTest("compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/dnnTypeProjectionInParameter.kt"); + } + + @Test + @TestMetadata("dnnTypeProjectionInReceiver.kt") + public void testDnnTypeProjectionInReceiver() { + runTest("compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/dnnTypeProjectionInReceiver.kt"); + } + @Test @TestMetadata("inference.kt") public void testInference() { 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 ef6d6390df6..d78c633a28e 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 @@ -13326,6 +13326,18 @@ public class FirLightTreeOldFrontendDiagnosticsTestGenerated extends AbstractFir runTest("compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/disabledFeature.kt"); } + @Test + @TestMetadata("dnnTypeProjectionInParameter.kt") + public void testDnnTypeProjectionInParameter() { + runTest("compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/dnnTypeProjectionInParameter.kt"); + } + + @Test + @TestMetadata("dnnTypeProjectionInReceiver.kt") + public void testDnnTypeProjectionInReceiver() { + runTest("compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/dnnTypeProjectionInReceiver.kt"); + } + @Test @TestMetadata("inference.kt") public void testInference() { 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 af866d68d4a..09fa3b9287d 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 @@ -13332,6 +13332,18 @@ public class FirPsiOldFrontendDiagnosticsTestGenerated extends AbstractFirPsiDia runTest("compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/disabledFeature.kt"); } + @Test + @TestMetadata("dnnTypeProjectionInParameter.kt") + public void testDnnTypeProjectionInParameter() { + runTest("compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/dnnTypeProjectionInParameter.kt"); + } + + @Test + @TestMetadata("dnnTypeProjectionInReceiver.kt") + public void testDnnTypeProjectionInReceiver() { + runTest("compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/dnnTypeProjectionInReceiver.kt"); + } + @Test @TestMetadata("inference.kt") public void testInference() { diff --git a/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/dnnTypeProjectionInParameter.fir.kt b/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/dnnTypeProjectionInParameter.fir.kt new file mode 100644 index 00000000000..d89ffc50897 --- /dev/null +++ b/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/dnnTypeProjectionInParameter.fir.kt @@ -0,0 +1,30 @@ +// ISSUE: KT-53792, KT-66369 + +class MyBoxInv(val value: T) + +fun getSizeInv(box: MyBoxInv) = box.value.length + +class MyBoxOut(val value: T) + +fun getSizeOut(box: MyBoxOut) = box.value.length + +class MyBoxIn { + fun foo(arg: T) { + arg.toString() + } +} + +fun foo(box: MyBoxIn, arg: T) { + box.foo(arg) +} + +fun main() { + val emptyBoxInv = MyBoxInv(null) + getSizeInv(emptyBoxInv) + + val emptyBoxOut = MyBoxOut(null) + getSizeOut(emptyBoxOut) + + val emptyBoxIn = MyBoxIn() + foo(emptyBoxIn, null) +} diff --git a/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/dnnTypeProjectionInParameter.kt b/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/dnnTypeProjectionInParameter.kt new file mode 100644 index 00000000000..dde70fc1e28 --- /dev/null +++ b/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/dnnTypeProjectionInParameter.kt @@ -0,0 +1,30 @@ +// ISSUE: KT-53792, KT-66369 + +class MyBoxInv(val value: T) + +fun getSizeInv(box: MyBoxInv) = box.value.length + +class MyBoxOut(val value: T) + +fun getSizeOut(box: MyBoxOut) = box.value.length + +class MyBoxIn { + fun foo(arg: T) { + arg.toString() + } +} + +fun foo(box: MyBoxIn, arg: T) { + box.foo(arg) +} + +fun main() { + val emptyBoxInv = MyBoxInv(null) + getSizeInv(emptyBoxInv) + + val emptyBoxOut = MyBoxOut(null) + getSizeOut(emptyBoxOut) + + val emptyBoxIn = MyBoxIn() + foo(emptyBoxIn, null) +} diff --git a/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/dnnTypeProjectionInReceiver.fir.kt b/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/dnnTypeProjectionInReceiver.fir.kt new file mode 100644 index 00000000000..3a4c5cf2517 --- /dev/null +++ b/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/dnnTypeProjectionInReceiver.fir.kt @@ -0,0 +1,30 @@ +// ISSUE: KT-53792, KT-66369 + +class MyBoxInv(val value: T) + +fun MyBoxInv.getSizeInv() = value.length + +class MyBoxOut(val value: T) + +fun MyBoxOut.getSizeOut() = value.length + +class MyBoxIn { + fun foo(arg: T) { + arg.toString() + } +} + +fun MyBoxIn.fooExt(arg: T) { + foo(arg) +} + +fun main() { + val emptyBoxInv = MyBoxInv(null) + emptyBoxInv.getSizeInv() + + val emptyBoxOut = MyBoxOut(null) + emptyBoxOut.getSizeOut() + + val emptyBoxIn = MyBoxIn() + emptyBoxIn.fooExt(null) +} diff --git a/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/dnnTypeProjectionInReceiver.kt b/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/dnnTypeProjectionInReceiver.kt new file mode 100644 index 00000000000..f71c1238ed1 --- /dev/null +++ b/compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/dnnTypeProjectionInReceiver.kt @@ -0,0 +1,30 @@ +// ISSUE: KT-53792, KT-66369 + +class MyBoxInv(val value: T) + +fun MyBoxInv.getSizeInv() = value.length + +class MyBoxOut(val value: T) + +fun MyBoxOut.getSizeOut() = value.length + +class MyBoxIn { + fun foo(arg: T) { + arg.toString() + } +} + +fun MyBoxIn.fooExt(arg: T) { + foo(arg) +} + +fun main() { + val emptyBoxInv = MyBoxInv(null) + emptyBoxInv.getSizeInv() + + val emptyBoxOut = MyBoxOut(null) + emptyBoxOut.getSizeOut() + + val emptyBoxIn = MyBoxIn() + emptyBoxIn.fooExt(null) +} 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 25855f4c5ae..6efef897a53 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 @@ -13332,6 +13332,18 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest { runTest("compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/disabledFeature.kt"); } + @Test + @TestMetadata("dnnTypeProjectionInParameter.kt") + public void testDnnTypeProjectionInParameter() { + runTest("compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/dnnTypeProjectionInParameter.kt"); + } + + @Test + @TestMetadata("dnnTypeProjectionInReceiver.kt") + public void testDnnTypeProjectionInReceiver() { + runTest("compiler/testData/diagnostics/tests/explicitDefinitelyNotNullableViaIntersection/dnnTypeProjectionInReceiver.kt"); + } + @Test @TestMetadata("inference.kt") public void testInference() {