FirCallResolve: disable property resolve optimization in builder inference

#KT-57889 Fixed
This commit is contained in:
Mikhail Glukhikh
2023-04-17 19:38:02 +02:00
committed by Space Team
parent f9a7a7fda2
commit 9374202ebc
7 changed files with 58 additions and 23 deletions
@@ -0,0 +1,36 @@
FILE: unsafeAssignment_noReport.fir.kt
public final class Foo<T : R|kotlin/Any|> : R|kotlin/Any| {
public constructor<T : R|kotlin/Any|>(): R|Foo<T>| {
super<R|kotlin/Any|>()
}
public final fun doSmthng(arg: R|T|): R|kotlin/Unit| {
}
public final var a: R|T?| = Null(null)
public get(): R|T?|
public set(value: R|T?|): R|kotlin/Unit|
}
public final fun <T : R|kotlin/Any|> myBuilder(block: R|Foo<T>.() -> kotlin/Unit|): R|Foo<T>| {
^myBuilder R|/Foo.Foo|<R|T|>().R|kotlin/apply|<R|Foo<T>|>(R|<local>/block|)
}
public final fun main(arg: R|kotlin/Any|): R|kotlin/Unit| {
lval x: R|kotlin/Int| = Int(57)
lval value: R|Foo<kotlin/Any>| = R|/myBuilder|<R|kotlin/Any|>(<L> = myBuilder@fun R|Foo<kotlin/Any>|.<anonymous>(): R|kotlin/Unit| <inline=NoInline> {
this@R|special/anonymous|.R|SubstitutionOverride</Foo.doSmthng: R|kotlin/Unit|>|(String(one ))
this@R|special/anonymous|.R|SubstitutionOverride</Foo.a: R|Stub (chain inference): TypeVariable(T)?|>| = Int(57)
this@R|special/anonymous|.R|SubstitutionOverride</Foo.a: R|Stub (chain inference): TypeVariable(T)?|>| = R|<local>/x|
when () {
(R|<local>/arg| is R|kotlin/String|) -> {
this@R|special/anonymous|.R|SubstitutionOverride</Foo.a: R|Stub (chain inference): TypeVariable(T)?|>| = R|<local>/arg|
}
}
}
)
<Ambiguity: println, [kotlin/io/println, kotlin/io/println, kotlin/io/println, kotlin/io/println, kotlin/io/println, kotlin/io/println, kotlin/io/println, kotlin/io/println, kotlin/io/println, kotlin/io/println]>#(R|<local>/value|.R|SubstitutionOverride</Foo.a: R|kotlin/Any?|>|?.{ $subj$.<Unresolved name: count>#(<L> = count@fun <anonymous>(): R|kotlin/Boolean| <inline=Unknown> {
^ Char(l).R|kotlin/Char.rangeTo|(Char(q)).R|kotlin/ranges/CharRange.contains|(<Unresolved name: it>#)
}
) })
}