diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaSymbolProvider.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaSymbolProvider.kt index 0c0ed1bd07a..3382290b384 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaSymbolProvider.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaSymbolProvider.kt @@ -92,7 +92,7 @@ class JavaSymbolProvider( stack: JavaTypeParameterStack, ) { for (upperBound in javaTypeParameter.upperBounds) { - bounds += upperBound.toFirResolvedTypeRef(this@JavaSymbolProvider.session, stack, nullability = ConeNullability.NULLABLE) + bounds += upperBound.toFirResolvedTypeRef(this@JavaSymbolProvider.session, stack, nullability = ConeNullability.UNKNOWN) } addDefaultBoundIfNecessary() } diff --git a/compiler/fir/resolve/testData/resolve/inference/capturedTypeForJavaTypeParameter.kt b/compiler/fir/resolve/testData/resolve/inference/capturedTypeForJavaTypeParameter.kt new file mode 100644 index 00000000000..bf93ca605fa --- /dev/null +++ b/compiler/fir/resolve/testData/resolve/inference/capturedTypeForJavaTypeParameter.kt @@ -0,0 +1,11 @@ +// FILE: B.java +public class B {} + +// FILE: main.kt +interface A {} + +fun foo(b: B) {} + +fun main(b: B<*>) { + foo(b) +} diff --git a/compiler/fir/resolve/testData/resolve/inference/capturedTypeForJavaTypeParameter.txt b/compiler/fir/resolve/testData/resolve/inference/capturedTypeForJavaTypeParameter.txt new file mode 100644 index 00000000000..e5f96a4db19 --- /dev/null +++ b/compiler/fir/resolve/testData/resolve/inference/capturedTypeForJavaTypeParameter.txt @@ -0,0 +1,8 @@ +FILE: main.kt + public abstract interface A : R|kotlin/Any| { + } + public final fun foo(b: R|B|): R|kotlin/Unit| { + } + public final fun main(b: R|B<*>|): R|kotlin/Unit| { + R|/foo|(R|/b|) + } 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 7bc3991ead6..73a2efb15df 100644 --- a/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/FirDiagnosticsTestGenerated.java +++ b/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/FirDiagnosticsTestGenerated.java @@ -924,6 +924,11 @@ public class FirDiagnosticsTestGenerated extends AbstractFirDiagnosticsTest { runTest("compiler/fir/resolve/testData/resolve/inference/callableReferenceOnInstance.kt"); } + @TestMetadata("capturedTypeForJavaTypeParameter.kt") + public void testCapturedTypeForJavaTypeParameter() throws Exception { + runTest("compiler/fir/resolve/testData/resolve/inference/capturedTypeForJavaTypeParameter.kt"); + } + @TestMetadata("nestedLambdas.kt") public void testNestedLambdas() throws Exception { runTest("compiler/fir/resolve/testData/resolve/inference/nestedLambdas.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 2211ec351ee..ff89f666770 100644 --- a/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/FirDiagnosticsWithLightTreeTestGenerated.java +++ b/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/FirDiagnosticsWithLightTreeTestGenerated.java @@ -924,6 +924,11 @@ public class FirDiagnosticsWithLightTreeTestGenerated extends AbstractFirDiagnos runTest("compiler/fir/resolve/testData/resolve/inference/callableReferenceOnInstance.kt"); } + @TestMetadata("capturedTypeForJavaTypeParameter.kt") + public void testCapturedTypeForJavaTypeParameter() throws Exception { + runTest("compiler/fir/resolve/testData/resolve/inference/capturedTypeForJavaTypeParameter.kt"); + } + @TestMetadata("nestedLambdas.kt") public void testNestedLambdas() throws Exception { runTest("compiler/fir/resolve/testData/resolve/inference/nestedLambdas.kt");