K2: Fix inference from assignment in PCLA
Before this, the order of the constraints being added was incorrect ^KT-64222 Fixed
This commit is contained in:
committed by
Space Team
parent
97d17012e5
commit
8f9c09482b
Vendored
+6
-6
@@ -46,23 +46,23 @@ fun main(arg: Any, condition: Boolean) {
|
||||
|
||||
val value2 = myBuilder {
|
||||
accept("")
|
||||
a = <!ASSIGNMENT_TYPE_MISMATCH!>45<!>
|
||||
a = 45
|
||||
when (condition) {
|
||||
true -> a = <!ASSIGNMENT_TYPE_MISMATCH!>87<!>
|
||||
false -> a = <!ASSIGNMENT_TYPE_MISMATCH!>65<!>
|
||||
true -> a = 87
|
||||
false -> a = 65
|
||||
}
|
||||
change {
|
||||
a = <!ASSIGNMENT_TYPE_MISMATCH!>99<!>
|
||||
a = 99
|
||||
}
|
||||
if (a is Int) {
|
||||
a = <!ASSIGNMENT_TYPE_MISMATCH!>67<!>
|
||||
a = 67
|
||||
}
|
||||
}
|
||||
|
||||
// See KT-54664
|
||||
val value3 = myBuilder {
|
||||
accept("")
|
||||
a = <!ASSIGNMENT_TYPE_MISMATCH!>45<!>
|
||||
a = 45
|
||||
bar(::<!INAPPLICABLE_CANDIDATE!>a<!>)
|
||||
}
|
||||
|
||||
|
||||
Vendored
+10
-10
@@ -67,33 +67,33 @@ FILE: unsafeAssignmentExtra.fir.kt
|
||||
)
|
||||
}
|
||||
)
|
||||
lval value2: R|Foo<kotlin/String>| = R|/myBuilder|<R|kotlin/String|>(<L> = myBuilder@fun R|Foo<kotlin/String>|.<anonymous>(): R|kotlin/Unit| <inline=NoInline> {
|
||||
lval value2: R|Foo<it(kotlin/Comparable<*> & java/io/Serializable)>| = R|/myBuilder|<R|it(kotlin/Comparable<*> & java/io/Serializable)|>(<L> = myBuilder@fun R|Foo<it(kotlin/Comparable<*> & java/io/Serializable)>|.<anonymous>(): R|kotlin/Unit| <inline=NoInline> {
|
||||
this@R|special/anonymous|.R|SubstitutionOverride</Foo.accept: R|kotlin/Unit|>|(String())
|
||||
this@R|special/anonymous|.R|SubstitutionOverride</Foo.a: R|kotlin/String|>| = Int(45)
|
||||
this@R|special/anonymous|.R|SubstitutionOverride</Foo.a: R|it(kotlin/Comparable<*> & java/io/Serializable)|>| = Int(45)
|
||||
when (R|<local>/condition|) {
|
||||
==($subj$, Boolean(true)) -> {
|
||||
this@R|special/anonymous|.R|SubstitutionOverride</Foo.a: R|kotlin/String|>| = Int(87)
|
||||
this@R|special/anonymous|.R|SubstitutionOverride</Foo.a: R|it(kotlin/Comparable<*> & java/io/Serializable)|>| = Int(87)
|
||||
}
|
||||
==($subj$, Boolean(false)) -> {
|
||||
this@R|special/anonymous|.R|SubstitutionOverride</Foo.a: R|kotlin/String|>| = Int(65)
|
||||
this@R|special/anonymous|.R|SubstitutionOverride</Foo.a: R|it(kotlin/Comparable<*> & java/io/Serializable)|>| = Int(65)
|
||||
}
|
||||
}
|
||||
|
||||
this@R|special/anonymous|.R|/change|<R|kotlin/String|>(<L> = change@fun R|Foo<kotlin/String>|.<anonymous>(): R|kotlin/Unit| <inline=NoInline> {
|
||||
this@R|special/anonymous|.R|SubstitutionOverride</Foo.a: R|kotlin/String|>| = Int(99)
|
||||
this@R|special/anonymous|.R|/change|<R|it(kotlin/Comparable<*> & java/io/Serializable)|>(<L> = change@fun R|Foo<it(kotlin/Comparable<*> & java/io/Serializable)>|.<anonymous>(): R|kotlin/Unit| <inline=NoInline> {
|
||||
this@R|special/anonymous|.R|SubstitutionOverride</Foo.a: R|it(kotlin/Comparable<*> & java/io/Serializable)|>| = Int(99)
|
||||
}
|
||||
)
|
||||
when () {
|
||||
(this@R|special/anonymous|.R|SubstitutionOverride</Foo.a: R|kotlin/String|>| is R|kotlin/Int|) -> {
|
||||
this@R|special/anonymous|.R|SubstitutionOverride</Foo.a: R|kotlin/String|>| = Int(67)
|
||||
(this@R|special/anonymous|.R|SubstitutionOverride</Foo.a: R|it(kotlin/Comparable<*> & java/io/Serializable)|>| is R|kotlin/Int|) -> {
|
||||
this@R|special/anonymous|.R|SubstitutionOverride</Foo.a: R|it(kotlin/Comparable<*> & java/io/Serializable)|>| = Int(67)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
)
|
||||
lval value3: R|Foo<kotlin/String>| = R|/myBuilder|<R|kotlin/String|>(<L> = myBuilder@fun R|Foo<kotlin/String>|.<anonymous>(): R|kotlin/Unit| <inline=NoInline> {
|
||||
lval value3: R|Foo<it(kotlin/Comparable<*> & java/io/Serializable)>| = R|/myBuilder|<R|it(kotlin/Comparable<*> & java/io/Serializable)|>(<L> = myBuilder@fun R|Foo<it(kotlin/Comparable<*> & java/io/Serializable)>|.<anonymous>(): R|kotlin/Unit| <inline=NoInline> {
|
||||
this@R|special/anonymous|.R|SubstitutionOverride</Foo.accept: R|kotlin/Unit|>|(String())
|
||||
this@R|special/anonymous|.R|SubstitutionOverride</Foo.a: R|kotlin/String|>| = Int(45)
|
||||
this@R|special/anonymous|.R|SubstitutionOverride</Foo.a: R|it(kotlin/Comparable<*> & java/io/Serializable)|>| = Int(45)
|
||||
R|/bar<Inapplicable(INAPPLICABLE): /bar>#|(::<Inapplicable(INAPPLICABLE): /Foo.a>#)
|
||||
}
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user