diff --git a/compiler/fir/resolve/testData/resolve/problems/definetelyNotNullForTypeParameter.kt b/compiler/fir/resolve/testData/resolve/problems/definetelyNotNullForTypeParameter.kt new file mode 100644 index 00000000000..518989b5ca6 --- /dev/null +++ b/compiler/fir/resolve/testData/resolve/problems/definetelyNotNullForTypeParameter.kt @@ -0,0 +1,12 @@ +interface Out + +fun id(x: Out): Out = TODO() + +fun foo(computable: Out) + +fun bar(computable: Out) { + // Should be resolved but fails during inference + // Failed incorporated constraint: T? <: Any (from T? <: X!! and X!! <: F and F <: Any) + // Hypothesis: DefinetelyNotNull(T?) = should just remove "?" while it actually gets created + foo(id(computable)) +} diff --git a/compiler/fir/resolve/testData/resolve/problems/definetelyNotNullForTypeParameter.txt b/compiler/fir/resolve/testData/resolve/problems/definetelyNotNullForTypeParameter.txt new file mode 100644 index 00000000000..7414e4607cc --- /dev/null +++ b/compiler/fir/resolve/testData/resolve/problems/definetelyNotNullForTypeParameter.txt @@ -0,0 +1,10 @@ +FILE: definetelyNotNullForTypeParameter.kt + public abstract interface Out : R|kotlin/Any| { + } + public final fun id(x: R|Out|): R|Out| { + ^id R|kotlin/TODO|() + } + public final fun foo(computable: R|Out|): R|kotlin/Unit| + public final fun bar(computable: R|Out|): R|kotlin/Unit| { + #(R|/id|(R|/computable|)) + } diff --git a/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/FirDiagnosticsTestGenerated.java b/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/FirDiagnosticsTestGenerated.java index 4103a7db1f1..8b867066c2b 100644 --- a/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/FirDiagnosticsTestGenerated.java +++ b/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/FirDiagnosticsTestGenerated.java @@ -1091,6 +1091,11 @@ public class FirDiagnosticsTestGenerated extends AbstractFirDiagnosticsTest { runTest("compiler/fir/resolve/testData/resolve/problems/defaultJavaImportHiding.kt"); } + @TestMetadata("definetelyNotNullForTypeParameter.kt") + public void testDefinetelyNotNullForTypeParameter() throws Exception { + runTest("compiler/fir/resolve/testData/resolve/problems/definetelyNotNullForTypeParameter.kt"); + } + @TestMetadata("definitelyNotNullAmbiguity.kt") public void testDefinitelyNotNullAmbiguity() throws Exception { runTest("compiler/fir/resolve/testData/resolve/problems/definitelyNotNullAmbiguity.kt"); diff --git a/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/FirDiagnosticsWithLightTreeTestGenerated.java b/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/FirDiagnosticsWithLightTreeTestGenerated.java index 257389e7725..399cb78f634 100644 --- a/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/FirDiagnosticsWithLightTreeTestGenerated.java +++ b/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/FirDiagnosticsWithLightTreeTestGenerated.java @@ -1091,6 +1091,11 @@ public class FirDiagnosticsWithLightTreeTestGenerated extends AbstractFirDiagnos runTest("compiler/fir/resolve/testData/resolve/problems/defaultJavaImportHiding.kt"); } + @TestMetadata("definetelyNotNullForTypeParameter.kt") + public void testDefinetelyNotNullForTypeParameter() throws Exception { + runTest("compiler/fir/resolve/testData/resolve/problems/definetelyNotNullForTypeParameter.kt"); + } + @TestMetadata("definitelyNotNullAmbiguity.kt") public void testDefinitelyNotNullAmbiguity() throws Exception { runTest("compiler/fir/resolve/testData/resolve/problems/definitelyNotNullAmbiguity.kt");