diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/inference/CoroutineInferenceUtil.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/inference/CoroutineInferenceUtil.kt index 21e81e82545..bd2e8700420 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/inference/CoroutineInferenceUtil.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/inference/CoroutineInferenceUtil.kt @@ -56,11 +56,15 @@ import javax.inject.Inject class TypeTemplate( val typeVariable: TypeVariable, - val coroutineInferenceData: CoroutineInferenceData -) : FlexibleType(typeVariable.originalTypeParameter.builtIns.nothingType, typeVariable.originalTypeParameter.builtIns.nullableAnyType) { + val coroutineInferenceData: CoroutineInferenceData, + nullable: Boolean = true +) : FlexibleType( + typeVariable.originalTypeParameter.builtIns.nothingType, + typeVariable.originalTypeParameter.builtIns.anyType.makeNullableAsSpecified(nullable) +) { override fun replaceAnnotations(newAnnotations: Annotations) = this - override fun makeNullableAsSpecified(newNullability: Boolean) = this + override fun makeNullableAsSpecified(newNullability: Boolean) = TypeTemplate(typeVariable, coroutineInferenceData, newNullability) override val delegate: SimpleType get() = upperBound diff --git a/compiler/testData/diagnostics/testsWithStdLib/coroutines/inference/kt15516.kt b/compiler/testData/diagnostics/testsWithStdLib/coroutines/inference/kt15516.kt new file mode 100644 index 00000000000..56a174d7985 --- /dev/null +++ b/compiler/testData/diagnostics/testsWithStdLib/coroutines/inference/kt15516.kt @@ -0,0 +1,18 @@ +// SKIP_TXT +class StateMachine internal constructor() { + fun getInputStub(): Q = null as Q +} + +fun stateMachine(block: suspend StateMachine.() -> Unit): StateMachine { + return StateMachine() +} + +class Problem(){ + fun getInputStub(): F = null as F + + fun createStateMachine(): StateMachine = stateMachine { + val letter = getInputStub() + if (letter is Any) + println("yes") + } +} diff --git a/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestWithStdLibGenerated.java b/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestWithStdLibGenerated.java index 8acc0238ee4..dfc9ceeb785 100644 --- a/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestWithStdLibGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/checkers/DiagnosticsTestWithStdLibGenerated.java @@ -853,6 +853,12 @@ public class DiagnosticsTestWithStdLibGenerated extends AbstractDiagnosticsTestW doTest(fileName); } + @TestMetadata("kt15516.kt") + public void testKt15516() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/testsWithStdLib/coroutines/inference/kt15516.kt"); + doTest(fileName); + } + @TestMetadata("recursiveGenerators.kt") public void testRecursiveGenerators() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/testsWithStdLib/coroutines/inference/recursiveGenerators.kt");