[FIR] Expand type before adding equality constraint

This commit is contained in:
Mikhail Glukhikh
2020-10-22 12:53:42 +03:00
parent 7815529eed
commit ad12cc296b
4 changed files with 8 additions and 7 deletions
@@ -26,8 +26,8 @@ FILE: upperBoundViolated.kt
lval b5: R|B<A>| = R|/B.B|<<ERROR TYPE REF: Symbol not found, for `UnexistingType`>>()
R|/fest|<R|kotlin/Boolean|>()
R|/fest|<R|C|>()
R|/fest|<R|HHH|>()
R|/fest|<R|JJJ|>()
R|/fest|<R|C|>()
R|/fest|<R|B<C>|>()
}
public open class S<F, G : R|F|> : R|kotlin/Any| {
public constructor<F, G : R|F|>(): R|S<F, G>| {
@@ -5,11 +5,11 @@ FILE: concurrentMapOfAliases.kt
super<R|kotlin/Any|>()
}
private final val foo: R|java/util/concurrent/ConcurrentHashMap<ft<kotlin/String, kotlin/String?>!, ft<MyAlias, MyAlias?>!>| = Q|java/util/concurrent|.R|java/util/concurrent/ConcurrentHashMap.ConcurrentHashMap|<R|ft<kotlin/String, kotlin/String?>!|, R|ft<MyAlias, MyAlias?>!|>()
private get(): R|java/util/concurrent/ConcurrentHashMap<ft<kotlin/String, kotlin/String?>!, ft<MyAlias, MyAlias?>!>|
private final val foo: R|java/util/concurrent/ConcurrentHashMap<ft<kotlin/String, kotlin/String?>!, ft<kotlin/CharSequence, kotlin/CharSequence?>!>| = Q|java/util/concurrent|.R|java/util/concurrent/ConcurrentHashMap.ConcurrentHashMap|<R|ft<kotlin/String, kotlin/String?>!|, R|ft<kotlin/CharSequence, kotlin/CharSequence?>!|>()
private get(): R|java/util/concurrent/ConcurrentHashMap<ft<kotlin/String, kotlin/String?>!, ft<kotlin/CharSequence, kotlin/CharSequence?>!>|
private final fun bar(): R|kotlin/Unit| {
this@R|/A|.R|/A.foo|.R|FakeOverride<java/util/concurrent/ConcurrentHashMap.get: R|MyAlias?|>|(String(dd))?.{ (this@R|/A|, $subj$).R|/A.baz|() }
this@R|/A|.R|/A.foo|.R|FakeOverride<java/util/concurrent/ConcurrentHashMap.get: R|kotlin/CharSequence?|>|(String(dd))?.{ (this@R|/A|, $subj$).R|/A.baz|() }
}
private final fun R|MyAlias|.baz(): R|kotlin/Unit| {
@@ -9,6 +9,7 @@ import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef
import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRefsOwner
import org.jetbrains.kotlin.fir.renderWithType
import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
import org.jetbrains.kotlin.fir.resolve.inference.TypeParameterBasedTypeVariable
import org.jetbrains.kotlin.fir.resolve.inference.inferenceComponents
import org.jetbrains.kotlin.fir.resolve.inference.model.ConeDeclaredUpperBoundConstraintPosition
@@ -68,7 +69,7 @@ internal object CreateFreshTypeVariableSubstitutorStage : ResolutionStage() {
typeArgument.typeRef.coneType,
typeParameter,
context.session.inferenceComponents.ctx
),
).fullyExpandedType(context.session),
SimpleConstraintSystemConstraintPosition // TODO
)
is FirStarProjection -> csBuilder.addEqualityConstraint(
+1 -1
View File
@@ -48,7 +48,7 @@ fun <T> bar(a: Any): T = a as T
fun <T> foo() {
foo<<!UNRESOLVED_REFERENCE!>Color.RED<!>>()
foo<<!UPPER_BOUND_VIOLATED!>RedAlias<!>>()
foo<RedAlias>()
<!INAPPLICABLE_CANDIDATE!>bar<!><<!UNRESOLVED_REFERENCE!>Color.RED<!>>(Color.RED)
}