Fix coercion to Unit when variable already have other constraints

Don't add `Unit` if variable has an upper constraint T <: A.

 It's impossible to coerce variable T to Unit as constraint system will
 be always contradictory: T := Unit => Unit should be subtype of A

 #KT-39900 Fixed
This commit is contained in:
Mikhail Zarechenskiy
2020-07-02 18:15:18 +03:00
parent 026f54f3d8
commit 0ee7306d9c
10 changed files with 76 additions and 13 deletions
@@ -10664,6 +10664,11 @@ public class FirOldFrontendDiagnosticsTestGenerated extends AbstractFirOldFronte
runTest("compiler/testData/diagnostics/tests/inference/coercionToUnit/coercionWithoutExpectedType.kt");
}
@TestMetadata("coerctionToUnitForATypeWithUpperBound.kt")
public void testCoerctionToUnitForATypeWithUpperBound() throws Exception {
runTest("compiler/testData/diagnostics/tests/inference/coercionToUnit/coerctionToUnitForATypeWithUpperBound.kt");
}
@TestMetadata("coersionWithAnonymousFunctionsAndUnresolved.kt")
public void testCoersionWithAnonymousFunctionsAndUnresolved() throws Exception {
runTest("compiler/testData/diagnostics/tests/inference/coercionToUnit/coersionWithAnonymousFunctionsAndUnresolved.kt");