Fix type constraints of empty lambda (KT-28654 fix)
This commit is contained in:
+3
-1
@@ -98,7 +98,9 @@ class PostponedArgumentsAnalyzer(
|
|||||||
|
|
||||||
if (returnArguments.isEmpty()) {
|
if (returnArguments.isEmpty()) {
|
||||||
val unitType = lambda.returnType.builtIns.unitType
|
val unitType = lambda.returnType.builtIns.unitType
|
||||||
c.getBuilder().addSubtypeConstraint(lambda.returnType.let(::substitute), unitType, LambdaArgumentConstraintPosition(lambda))
|
val lambdaReturnType = lambda.returnType.let(::substitute)
|
||||||
|
c.getBuilder().addSubtypeConstraint(lambdaReturnType, unitType, LambdaArgumentConstraintPosition(lambda))
|
||||||
|
c.getBuilder().addSubtypeConstraint(unitType, lambdaReturnType, LambdaArgumentConstraintPosition(lambda))
|
||||||
}
|
}
|
||||||
|
|
||||||
lambda.setAnalyzedResults(returnArguments, subResolvedKtPrimitives)
|
lambda.setAnalyzedResults(returnArguments, subResolvedKtPrimitives)
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
// !DIAGNOSTICS: -UNUSED_VARIABLE
|
// !DIAGNOSTICS: -UNUSED_VARIABLE
|
||||||
// Related issue: KT-28654
|
// Related issue: KT-28654
|
||||||
|
|
||||||
fun <K> select(): K = <!OI;TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH!>run { <!OI;TYPE_MISMATCH!><!>}<!>
|
fun <K> select(): K = <!NI;TYPE_MISMATCH, OI;TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH!>run { <!OI;TYPE_MISMATCH!><!>}<!>
|
||||||
|
|
||||||
fun test() {
|
fun test() {
|
||||||
val x: Int = select()
|
val x: Int = select()
|
||||||
|
|||||||
Reference in New Issue
Block a user