[FIR2IR] Propagate NOT_IN statement origin when converting to IR
^KT-65636 Fixed
This commit is contained in:
@@ -535,6 +535,9 @@ internal fun FirReference.statementOrigin(): IrStatementOrigin? = when (this) {
|
|||||||
source?.kind == KtFakeSourceElementKind.DesugaredForLoop && symbol.callableId.isIterator() ->
|
source?.kind == KtFakeSourceElementKind.DesugaredForLoop && symbol.callableId.isIterator() ->
|
||||||
IrStatementOrigin.FOR_LOOP_ITERATOR
|
IrStatementOrigin.FOR_LOOP_ITERATOR
|
||||||
|
|
||||||
|
source?.kind == KtFakeSourceElementKind.DesugaredInvertedContains ->
|
||||||
|
IrStatementOrigin.NOT_IN
|
||||||
|
|
||||||
source?.kind is KtFakeSourceElementKind.DesugaredIncrementOrDecrement ->
|
source?.kind is KtFakeSourceElementKind.DesugaredIncrementOrDecrement ->
|
||||||
incOrDeclSourceKindToIrStatementOrigin[source?.kind]
|
incOrDeclSourceKindToIrStatementOrigin[source?.kind]
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -12,7 +12,7 @@ FILE fqName:<root> fileName:/in.kt
|
|||||||
VALUE_PARAMETER name:x index:1 type:kotlin.collections.Collection<kotlin.Any>
|
VALUE_PARAMETER name:x index:1 type:kotlin.collections.Collection<kotlin.Any>
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
RETURN type=kotlin.Nothing from='public final fun test2 (a: kotlin.Any, x: kotlin.collections.Collection<kotlin.Any>): kotlin.Boolean declared in <root>'
|
RETURN type=kotlin.Nothing from='public final fun test2 (a: kotlin.Any, x: kotlin.collections.Collection<kotlin.Any>): kotlin.Boolean declared in <root>'
|
||||||
CALL 'public final fun not (): kotlin.Boolean declared in kotlin.Boolean' type=kotlin.Boolean origin=null
|
CALL 'public final fun not (): kotlin.Boolean declared in kotlin.Boolean' type=kotlin.Boolean origin=NOT_IN
|
||||||
$this: CALL 'public abstract fun contains (element: E of kotlin.collections.Collection): kotlin.Boolean declared in kotlin.collections.Collection' type=kotlin.Boolean origin=IN
|
$this: CALL 'public abstract fun contains (element: E of kotlin.collections.Collection): kotlin.Boolean declared in kotlin.collections.Collection' type=kotlin.Boolean origin=IN
|
||||||
$this: GET_VAR 'x: kotlin.collections.Collection<kotlin.Any> declared in <root>.test2' type=kotlin.collections.Collection<kotlin.Any> origin=null
|
$this: GET_VAR 'x: kotlin.collections.Collection<kotlin.Any> declared in <root>.test2' type=kotlin.collections.Collection<kotlin.Any> origin=null
|
||||||
element: GET_VAR 'a: kotlin.Any declared in <root>.test2' type=kotlin.Any origin=null
|
element: GET_VAR 'a: kotlin.Any declared in <root>.test2' type=kotlin.Any origin=null
|
||||||
@@ -31,7 +31,7 @@ FILE fqName:<root> fileName:/in.kt
|
|||||||
VALUE_PARAMETER name:x index:1 type:kotlin.collections.Collection<T of <root>.test4>
|
VALUE_PARAMETER name:x index:1 type:kotlin.collections.Collection<T of <root>.test4>
|
||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
RETURN type=kotlin.Nothing from='public final fun test4 <T> (a: T of <root>.test4, x: kotlin.collections.Collection<T of <root>.test4>): kotlin.Boolean declared in <root>'
|
RETURN type=kotlin.Nothing from='public final fun test4 <T> (a: T of <root>.test4, x: kotlin.collections.Collection<T of <root>.test4>): kotlin.Boolean declared in <root>'
|
||||||
CALL 'public final fun not (): kotlin.Boolean declared in kotlin.Boolean' type=kotlin.Boolean origin=null
|
CALL 'public final fun not (): kotlin.Boolean declared in kotlin.Boolean' type=kotlin.Boolean origin=NOT_IN
|
||||||
$this: CALL 'public abstract fun contains (element: E of kotlin.collections.Collection): kotlin.Boolean declared in kotlin.collections.Collection' type=kotlin.Boolean origin=IN
|
$this: CALL 'public abstract fun contains (element: E of kotlin.collections.Collection): kotlin.Boolean declared in kotlin.collections.Collection' type=kotlin.Boolean origin=IN
|
||||||
$this: GET_VAR 'x: kotlin.collections.Collection<T of <root>.test4> declared in <root>.test4' type=kotlin.collections.Collection<T of <root>.test4> origin=null
|
$this: GET_VAR 'x: kotlin.collections.Collection<T of <root>.test4> declared in <root>.test4' type=kotlin.collections.Collection<T of <root>.test4> origin=null
|
||||||
element: GET_VAR 'a: T of <root>.test4 declared in <root>.test4' type=T of <root>.test4 origin=null
|
element: GET_VAR 'a: T of <root>.test4 declared in <root>.test4' type=T of <root>.test4 origin=null
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ FILE fqName:<root> fileName:/whenWithSubjectVariable.kt
|
|||||||
GET_VAR 'val y: kotlin.Any declared in <root>.test' type=kotlin.Any origin=null
|
GET_VAR 'val y: kotlin.Any declared in <root>.test' type=kotlin.Any origin=null
|
||||||
then: CONST Int type=kotlin.Int value=3
|
then: CONST Int type=kotlin.Int value=3
|
||||||
BRANCH
|
BRANCH
|
||||||
if: CALL 'public final fun not (): kotlin.Boolean declared in kotlin.Boolean' type=kotlin.Boolean origin=null
|
if: CALL 'public final fun not (): kotlin.Boolean declared in kotlin.Boolean' type=kotlin.Boolean origin=NOT_IN
|
||||||
$this: CALL 'public open fun contains (value: kotlin.Int): kotlin.Boolean declared in kotlin.ranges.IntRange' type=kotlin.Boolean origin=IN
|
$this: CALL 'public open fun contains (value: kotlin.Int): kotlin.Boolean declared in kotlin.ranges.IntRange' type=kotlin.Boolean origin=IN
|
||||||
$this: CALL 'public final fun rangeTo (other: kotlin.Int): kotlin.ranges.IntRange declared in kotlin.Int' type=kotlin.ranges.IntRange origin=RANGE
|
$this: CALL 'public final fun rangeTo (other: kotlin.Int): kotlin.ranges.IntRange declared in kotlin.Int' type=kotlin.ranges.IntRange origin=RANGE
|
||||||
$this: CONST Int type=kotlin.Int value=10
|
$this: CONST Int type=kotlin.Int value=10
|
||||||
|
|||||||
@@ -1,6 +1,3 @@
|
|||||||
// IGNORE_BACKEND_K2: JVM_IR
|
|
||||||
// K2 disabled because of KT-65636
|
|
||||||
|
|
||||||
fun box() = expectThrowableMessage {
|
fun box() = expectThrowableMessage {
|
||||||
assert("Hello" !in listOf("Hello", "World"))
|
assert("Hello" !in listOf("Hello", "World"))
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user