diff --git a/compiler/fir/analysis-tests/tests/org/jetbrains/kotlin/fir/FirOldFrontendDiagnosticsTestWithStdlibGenerated.java b/compiler/fir/analysis-tests/tests/org/jetbrains/kotlin/fir/FirOldFrontendDiagnosticsTestWithStdlibGenerated.java index 6a879fca6f4..4fad49229c9 100644 --- a/compiler/fir/analysis-tests/tests/org/jetbrains/kotlin/fir/FirOldFrontendDiagnosticsTestWithStdlibGenerated.java +++ b/compiler/fir/analysis-tests/tests/org/jetbrains/kotlin/fir/FirOldFrontendDiagnosticsTestWithStdlibGenerated.java @@ -1737,6 +1737,11 @@ public class FirOldFrontendDiagnosticsTestWithStdlibGenerated extends AbstractFi runTest("compiler/testData/diagnostics/testsWithStdLib/coroutines/kt38179.kt"); } + @TestMetadata("kt41430.kt") + public void testKt41430() throws Exception { + runTest("compiler/testData/diagnostics/testsWithStdLib/coroutines/kt41430.kt"); + } + @TestMetadata("lambdaExpectedType.kt") public void testLambdaExpectedType() throws Exception { runTest("compiler/testData/diagnostics/testsWithStdLib/coroutines/lambdaExpectedType.kt"); diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/inference/CoroutineInferenceSession.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/inference/CoroutineInferenceSession.kt index c8411eed59b..21ae072392f 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/inference/CoroutineInferenceSession.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/inference/CoroutineInferenceSession.kt @@ -90,15 +90,9 @@ class CoroutineInferenceSession( val dispatchReceiver = resolvedCall.dispatchReceiverArgument return when { extensionReceiver == null && dispatchReceiver == null -> false - extensionReceiver == null -> true - extensionReceiver.receiver.stableType.containsStubType() -> resolvedCall.candidateDescriptor.hasBuilderInferenceAnnotation() - else -> true - } - } - - private fun KotlinType.containsNotFixedTypeVariable(storage: ConstraintStorage): Boolean { - return this.contains { - it.constructor in storage.notFixedTypeVariables + dispatchReceiver?.receiver?.stableType?.containsStubType() == true -> true + extensionReceiver?.receiver?.stableType?.containsStubType() == true -> resolvedCall.candidateDescriptor.hasBuilderInferenceAnnotation() + else -> false } } diff --git a/compiler/testData/diagnostics/testsWithStdLib/coroutines/kt41430.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/coroutines/kt41430.fir.kt new file mode 100644 index 00000000000..b69ad21f0c9 --- /dev/null +++ b/compiler/testData/diagnostics/testsWithStdLib/coroutines/kt41430.fir.kt @@ -0,0 +1,27 @@ +// ISSUE: KT-41430 + +class A + +fun test_1(list: List>) { + list.flatMapTo(mutableSetOf()) { it } +} + +fun test_2(list: List>) { + sequence { + list.flatMapTo(mutableSetOf()) { it } + } +} + +fun test_3(list: List>) { + sequence { + list.flatMapTo(mutableSetOf()) { it } + yield(A()) + } +} + +fun test_4(list: List>) { + sequence { + yield(A()) + list.flatMapTo(mutableSetOf()) { it } + } +} diff --git a/compiler/testData/diagnostics/testsWithStdLib/coroutines/kt41430.kt b/compiler/testData/diagnostics/testsWithStdLib/coroutines/kt41430.kt new file mode 100644 index 00000000000..668d9990625 --- /dev/null +++ b/compiler/testData/diagnostics/testsWithStdLib/coroutines/kt41430.kt @@ -0,0 +1,27 @@ +// ISSUE: KT-41430 + +class A + +fun test_1(list: List>) { + ")!>list.flatMapTo(mutableSetOf()) { it } +} + +fun test_2(list: List>) { + sequence { + ")!>list.flatMapTo(mutableSetOf()) { it } + } +} + +fun test_3(list: List>) { + sequence { + ")!>list.flatMapTo(mutableSetOf()) { it } + yield(A()) + } +} + +fun test_4(list: List>) { + sequence { + yield(A()) + ")!>list.flatMapTo(mutableSetOf()) { it } + } +} diff --git a/compiler/testData/diagnostics/testsWithStdLib/coroutines/kt41430.txt b/compiler/testData/diagnostics/testsWithStdLib/coroutines/kt41430.txt new file mode 100644 index 00000000000..c4578897128 --- /dev/null +++ b/compiler/testData/diagnostics/testsWithStdLib/coroutines/kt41430.txt @@ -0,0 +1,13 @@ +package + +public fun test_1(/*0*/ list: kotlin.collections.List>): kotlin.Unit +public fun test_2(/*0*/ list: kotlin.collections.List>): kotlin.Unit +public fun test_3(/*0*/ list: kotlin.collections.List>): kotlin.Unit +public fun test_4(/*0*/ list: kotlin.collections.List>): kotlin.Unit + +public final class A { + public constructor A() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} diff --git a/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestWithStdLibGenerated.java b/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestWithStdLibGenerated.java index 30c88093144..e4530487dae 100644 --- a/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestWithStdLibGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestWithStdLibGenerated.java @@ -1737,6 +1737,11 @@ public class DiagnosticsTestWithStdLibGenerated extends AbstractDiagnosticsTestW runTest("compiler/testData/diagnostics/testsWithStdLib/coroutines/kt38179.kt"); } + @TestMetadata("kt41430.kt") + public void testKt41430() throws Exception { + runTest("compiler/testData/diagnostics/testsWithStdLib/coroutines/kt41430.kt"); + } + @TestMetadata("lambdaExpectedType.kt") public void testLambdaExpectedType() throws Exception { runTest("compiler/testData/diagnostics/testsWithStdLib/coroutines/lambdaExpectedType.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/checkers/javac/DiagnosticsTestWithStdLibUsingJavacGenerated.java b/compiler/tests/org/jetbrains/kotlin/checkers/javac/DiagnosticsTestWithStdLibUsingJavacGenerated.java index 8e73d997313..1abe51c80ad 100644 --- a/compiler/tests/org/jetbrains/kotlin/checkers/javac/DiagnosticsTestWithStdLibUsingJavacGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/checkers/javac/DiagnosticsTestWithStdLibUsingJavacGenerated.java @@ -1737,6 +1737,11 @@ public class DiagnosticsTestWithStdLibUsingJavacGenerated extends AbstractDiagno runTest("compiler/testData/diagnostics/testsWithStdLib/coroutines/kt38179.kt"); } + @TestMetadata("kt41430.kt") + public void testKt41430() throws Exception { + runTest("compiler/testData/diagnostics/testsWithStdLib/coroutines/kt41430.kt"); + } + @TestMetadata("lambdaExpectedType.kt") public void testLambdaExpectedType() throws Exception { runTest("compiler/testData/diagnostics/testsWithStdLib/coroutines/lambdaExpectedType.kt");