FIR: fix type index computation during enhancement

1. in/out type parameters count;
2. star projections take up 1 space in the tree.
This commit is contained in:
pyos
2021-08-02 11:53:11 +02:00
committed by teamcityserver
parent 5fec9f34b1
commit 8e122397b0
30 changed files with 194 additions and 263 deletions
@@ -116,9 +116,9 @@ FILE fqName:<root> fileName:/ImplicitReceiverStack.kt
public open fun forEach (p0: @[FlexibleNullability] java.util.function.Consumer<in @[FlexibleNullability] T of kotlin.collections.Iterable?>?): kotlin.Unit declared in kotlin.collections.Iterable
$this: VALUE_PARAMETER name:<this> type:kotlin.collections.Iterable<T of kotlin.collections.Iterable>
VALUE_PARAMETER name:p0 index:0 type:@[FlexibleNullability] java.util.function.Consumer<in @[FlexibleNullability] <root>.ImplicitReceiverValue<*>?>?
FUN FAKE_OVERRIDE name:spliterator visibility:public modality:OPEN <> ($this:kotlin.collections.Iterable<T of kotlin.collections.Iterable>) returnType:@[EnhancedNullability] java.util.Spliterator<@[FlexibleNullability] <root>.ImplicitReceiverValue<*>?> [fake_override]
FUN FAKE_OVERRIDE name:spliterator visibility:public modality:OPEN <> ($this:kotlin.collections.Iterable<T of kotlin.collections.Iterable>) returnType:@[EnhancedNullability] java.util.Spliterator<<root>.ImplicitReceiverValue<*>> [fake_override]
overridden:
public open fun spliterator (): @[EnhancedNullability] java.util.Spliterator<@[FlexibleNullability] T of kotlin.collections.Iterable?> declared in kotlin.collections.Iterable
public open fun spliterator (): @[EnhancedNullability] java.util.Spliterator<T of kotlin.collections.Iterable> declared in kotlin.collections.Iterable
$this: VALUE_PARAMETER name:<this> type:kotlin.collections.Iterable<T of kotlin.collections.Iterable>
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden:
@@ -176,9 +176,9 @@ FILE fqName:<root> fileName:/ImplicitReceiverStack.kt
public open fun forEach (p0: @[FlexibleNullability] java.util.function.Consumer<in @[FlexibleNullability] <root>.ImplicitReceiverValue<*>?>?): kotlin.Unit [fake_override] declared in <root>.ImplicitReceiverStack
$this: VALUE_PARAMETER name:<this> type:kotlin.collections.Iterable<T of kotlin.collections.Iterable>
VALUE_PARAMETER name:p0 index:0 type:@[FlexibleNullability] java.util.function.Consumer<in @[FlexibleNullability] <root>.ImplicitReceiverValue<*>?>?
FUN FAKE_OVERRIDE name:spliterator visibility:public modality:OPEN <> ($this:kotlin.collections.Iterable<T of kotlin.collections.Iterable>) returnType:@[EnhancedNullability] java.util.Spliterator<@[FlexibleNullability] <root>.ImplicitReceiverValue<*>?> [fake_override]
FUN FAKE_OVERRIDE name:spliterator visibility:public modality:OPEN <> ($this:kotlin.collections.Iterable<T of kotlin.collections.Iterable>) returnType:@[EnhancedNullability] java.util.Spliterator<<root>.ImplicitReceiverValue<*>> [fake_override]
overridden:
public open fun spliterator (): @[EnhancedNullability] java.util.Spliterator<@[FlexibleNullability] <root>.ImplicitReceiverValue<*>?> [fake_override] declared in <root>.ImplicitReceiverStack
public open fun spliterator (): @[EnhancedNullability] java.util.Spliterator<<root>.ImplicitReceiverValue<*>> [fake_override] declared in <root>.ImplicitReceiverStack
$this: VALUE_PARAMETER name:<this> type:kotlin.collections.Iterable<T of kotlin.collections.Iterable>
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden:
+12 -12
View File
@@ -162,13 +162,13 @@ FILE fqName:<root> fileName:/MultiList.kt
overridden:
public open fun spliterator (): @[EnhancedNullability] java.util.Spliterator<@[FlexibleNullability] E of kotlin.collections.List?> [fake_override] declared in kotlin.collections.List
$this: VALUE_PARAMETER name:<this> type:kotlin.collections.Collection<E of kotlin.collections.Collection>
FUN FAKE_OVERRIDE name:parallelStream visibility:public modality:OPEN <> ($this:kotlin.collections.Collection<E of kotlin.collections.Collection>) returnType:@[EnhancedNullability] java.util.stream.Stream<@[FlexibleNullability] <root>.Some<T of <root>.MyList>?> [fake_override]
FUN FAKE_OVERRIDE name:parallelStream visibility:public modality:OPEN <> ($this:kotlin.collections.Collection<E of kotlin.collections.Collection>) returnType:@[EnhancedNullability] java.util.stream.Stream<<root>.Some<T of <root>.MyList>> [fake_override]
overridden:
public open fun parallelStream (): @[EnhancedNullability] java.util.stream.Stream<@[FlexibleNullability] E of kotlin.collections.List?> [fake_override] declared in kotlin.collections.List
public open fun parallelStream (): @[EnhancedNullability] java.util.stream.Stream<E of kotlin.collections.List> [fake_override] declared in kotlin.collections.List
$this: VALUE_PARAMETER name:<this> type:kotlin.collections.Collection<E of kotlin.collections.Collection>
FUN FAKE_OVERRIDE name:stream visibility:public modality:OPEN <> ($this:kotlin.collections.Collection<E of kotlin.collections.Collection>) returnType:@[EnhancedNullability] java.util.stream.Stream<@[FlexibleNullability] <root>.Some<T of <root>.MyList>?> [fake_override]
FUN FAKE_OVERRIDE name:stream visibility:public modality:OPEN <> ($this:kotlin.collections.Collection<E of kotlin.collections.Collection>) returnType:@[EnhancedNullability] java.util.stream.Stream<<root>.Some<T of <root>.MyList>> [fake_override]
overridden:
public open fun stream (): @[EnhancedNullability] java.util.stream.Stream<@[FlexibleNullability] E of kotlin.collections.List?> [fake_override] declared in kotlin.collections.List
public open fun stream (): @[EnhancedNullability] java.util.stream.Stream<E of kotlin.collections.List> [fake_override] declared in kotlin.collections.List
$this: VALUE_PARAMETER name:<this> type:kotlin.collections.Collection<E of kotlin.collections.Collection>
FUN FAKE_OVERRIDE name:forEach visibility:public modality:OPEN <> ($this:kotlin.collections.Iterable<T of kotlin.collections.Iterable>, p0:@[FlexibleNullability] java.util.function.Consumer<in @[FlexibleNullability] <root>.Some<T of <root>.MyList>?>?) returnType:kotlin.Unit [fake_override]
overridden:
@@ -257,13 +257,13 @@ FILE fqName:<root> fileName:/MultiList.kt
overridden:
public open fun spliterator (): @[EnhancedNullability] java.util.Spliterator<@[FlexibleNullability] E of java.util.ArrayList?> declared in java.util.ArrayList
$this: VALUE_PARAMETER name:<this> type:java.util.ArrayList<E of java.util.ArrayList>
FUN FAKE_OVERRIDE name:parallelStream visibility:public modality:OPEN <> ($this:kotlin.collections.Collection<E of kotlin.collections.Collection>) returnType:@[EnhancedNullability] java.util.stream.Stream<@[FlexibleNullability] <root>.Some<T of <root>.SomeList>?> [fake_override]
FUN FAKE_OVERRIDE name:parallelStream visibility:public modality:OPEN <> ($this:kotlin.collections.Collection<E of kotlin.collections.Collection>) returnType:@[EnhancedNullability] java.util.stream.Stream<<root>.Some<T of <root>.SomeList>> [fake_override]
overridden:
public open fun parallelStream (): @[EnhancedNullability] java.util.stream.Stream<@[FlexibleNullability] <root>.Some<T of <root>.MyList>?> [fake_override] declared in <root>.MyList
public open fun parallelStream (): @[EnhancedNullability] java.util.stream.Stream<<root>.Some<T of <root>.MyList>> [fake_override] declared in <root>.MyList
$this: VALUE_PARAMETER name:<this> type:kotlin.collections.Collection<E of kotlin.collections.Collection>
FUN FAKE_OVERRIDE name:stream visibility:public modality:OPEN <> ($this:kotlin.collections.Collection<E of kotlin.collections.Collection>) returnType:@[EnhancedNullability] java.util.stream.Stream<@[FlexibleNullability] <root>.Some<T of <root>.SomeList>?> [fake_override]
FUN FAKE_OVERRIDE name:stream visibility:public modality:OPEN <> ($this:kotlin.collections.Collection<E of kotlin.collections.Collection>) returnType:@[EnhancedNullability] java.util.stream.Stream<<root>.Some<T of <root>.SomeList>> [fake_override]
overridden:
public open fun stream (): @[EnhancedNullability] java.util.stream.Stream<@[FlexibleNullability] <root>.Some<T of <root>.MyList>?> [fake_override] declared in <root>.MyList
public open fun stream (): @[EnhancedNullability] java.util.stream.Stream<<root>.Some<T of <root>.MyList>> [fake_override] declared in <root>.MyList
$this: VALUE_PARAMETER name:<this> type:kotlin.collections.Collection<E of kotlin.collections.Collection>
FUN FAKE_OVERRIDE name:forEach visibility:public modality:OPEN <> ($this:java.util.ArrayList<E of java.util.ArrayList>, p0:@[FlexibleNullability] java.util.function.Consumer<in @[FlexibleNullability] <root>.Some<T of <root>.SomeList>?>?) returnType:kotlin.Unit [fake_override]
overridden:
@@ -451,13 +451,13 @@ FILE fqName:<root> fileName:/MultiList.kt
overridden:
public open fun spliterator (): @[EnhancedNullability] java.util.Spliterator<@[FlexibleNullability] <root>.Some<T of <root>.SomeList>?> [fake_override] declared in <root>.SomeList
$this: VALUE_PARAMETER name:<this> type:java.util.ArrayList<E of java.util.ArrayList>
FUN FAKE_OVERRIDE name:parallelStream visibility:public modality:OPEN <> ($this:kotlin.collections.Collection<E of kotlin.collections.Collection>) returnType:@[EnhancedNullability] java.util.stream.Stream<@[FlexibleNullability] <root>.Some<kotlin.String>?> [fake_override]
FUN FAKE_OVERRIDE name:parallelStream visibility:public modality:OPEN <> ($this:kotlin.collections.Collection<E of kotlin.collections.Collection>) returnType:@[EnhancedNullability] java.util.stream.Stream<<root>.Some<kotlin.String>> [fake_override]
overridden:
public open fun parallelStream (): @[EnhancedNullability] java.util.stream.Stream<@[FlexibleNullability] <root>.Some<T of <root>.SomeList>?> [fake_override] declared in <root>.SomeList
public open fun parallelStream (): @[EnhancedNullability] java.util.stream.Stream<<root>.Some<T of <root>.SomeList>> [fake_override] declared in <root>.SomeList
$this: VALUE_PARAMETER name:<this> type:kotlin.collections.Collection<E of kotlin.collections.Collection>
FUN FAKE_OVERRIDE name:stream visibility:public modality:OPEN <> ($this:kotlin.collections.Collection<E of kotlin.collections.Collection>) returnType:@[EnhancedNullability] java.util.stream.Stream<@[FlexibleNullability] <root>.Some<kotlin.String>?> [fake_override]
FUN FAKE_OVERRIDE name:stream visibility:public modality:OPEN <> ($this:kotlin.collections.Collection<E of kotlin.collections.Collection>) returnType:@[EnhancedNullability] java.util.stream.Stream<<root>.Some<kotlin.String>> [fake_override]
overridden:
public open fun stream (): @[EnhancedNullability] java.util.stream.Stream<@[FlexibleNullability] <root>.Some<T of <root>.SomeList>?> [fake_override] declared in <root>.SomeList
public open fun stream (): @[EnhancedNullability] java.util.stream.Stream<<root>.Some<T of <root>.SomeList>> [fake_override] declared in <root>.SomeList
$this: VALUE_PARAMETER name:<this> type:kotlin.collections.Collection<E of kotlin.collections.Collection>
FUN FAKE_OVERRIDE name:forEach visibility:public modality:OPEN <> ($this:java.util.ArrayList<E of java.util.ArrayList>, p0:@[FlexibleNullability] java.util.function.Consumer<in @[FlexibleNullability] <root>.Some<kotlin.String>?>?) returnType:kotlin.Unit [fake_override]
overridden:
@@ -59,30 +59,30 @@ fun test1() {
}
fun test2() {
val <destruct>: @FlexibleNullability Q<@EnhancedNullability String, @FlexibleNullability String?>? = notNullComponents()
val <destruct>: @FlexibleNullability Q<@EnhancedNullability String, @EnhancedNullability String>? = notNullComponents()
val x: String = <destruct>.component1() /*!! String */
val y: @FlexibleNullability String? = <destruct>.component2()
use(x = x, y = y /*!! @FlexibleNullability String */)
val y: String = <destruct>.component2() /*!! String */
use(x = x, y = y)
}
fun test2Desugared() {
val tmp: @FlexibleNullability Q<@EnhancedNullability String, @FlexibleNullability String?>? = notNullComponents()
val tmp: @FlexibleNullability Q<@EnhancedNullability String, @EnhancedNullability String>? = notNullComponents()
val x: String = tmp.component1() /*!! String */
val y: @FlexibleNullability String? = tmp.component2()
use(x = x, y = y /*!! @FlexibleNullability String */)
val y: String = tmp.component2() /*!! String */
use(x = x, y = y)
}
fun test3() {
val <destruct>: Q<@EnhancedNullability String, @FlexibleNullability String?> = notNullQAndComponents() /*!! Q<@EnhancedNullability String, @FlexibleNullability String?> */
val <destruct>: Q<@EnhancedNullability String, @EnhancedNullability String> = notNullQAndComponents() /*!! Q<@EnhancedNullability String, @EnhancedNullability String> */
val x: String = <destruct>.component1() /*!! String */
val y: @FlexibleNullability String? = <destruct>.component2()
use(x = x, y = y /*!! @FlexibleNullability String */)
val y: String = <destruct>.component2() /*!! String */
use(x = x, y = y)
}
fun test4() {
val <destruct>: IndexedValue<@FlexibleNullability P?> = listOfNotNull() /*!! @FlexibleNullability List<@FlexibleNullability P?> */.withIndex<@FlexibleNullability P?>().first<IndexedValue<@FlexibleNullability P?>>()
val <destruct>: IndexedValue<@EnhancedNullability P> = listOfNotNull() /*!! @FlexibleNullability List<@EnhancedNullability P> */.withIndex<@EnhancedNullability P>().first<IndexedValue<@EnhancedNullability P>>()
val x: Int = <destruct>.component1()
val y: @FlexibleNullability P? = <destruct>.component2()
use(x = x, y = y /*!! @FlexibleNullability P */)
val y: P = <destruct>.component2() /*!! P */
use(x = x, y = y)
}
@@ -131,66 +131,66 @@ FILE fqName:<root> fileName:/enhancedNullabilityInDestructuringAssignment.kt
y: GET_VAR 'val y: kotlin.Int [val] declared in <root>.test1' type=kotlin.Int origin=null
FUN name:test2 visibility:public modality:FINAL <> () returnType:kotlin.Unit
BLOCK_BODY
VAR IR_TEMPORARY_VARIABLE name:tmp_1 type:@[FlexibleNullability] <root>.Q<@[EnhancedNullability] kotlin.String, @[FlexibleNullability] kotlin.String?>? [val]
CALL 'public open fun notNullComponents (): @[FlexibleNullability] <root>.Q<@[EnhancedNullability] kotlin.String, @[FlexibleNullability] kotlin.String?>? declared in <root>.J' type=@[FlexibleNullability] <root>.Q<@[EnhancedNullability] kotlin.String, @[FlexibleNullability] kotlin.String?>? origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_1 type:@[FlexibleNullability] <root>.Q<@[EnhancedNullability] kotlin.String, @[EnhancedNullability] kotlin.String>? [val]
CALL 'public open fun notNullComponents (): @[FlexibleNullability] <root>.Q<@[EnhancedNullability] kotlin.String, @[EnhancedNullability] kotlin.String>? declared in <root>.J' type=@[FlexibleNullability] <root>.Q<@[EnhancedNullability] kotlin.String, @[EnhancedNullability] kotlin.String>? origin=null
VAR name:x type:kotlin.String [val]
TYPE_OP type=kotlin.String origin=IMPLICIT_NOTNULL typeOperand=kotlin.String
CALL 'public final fun component1 (): T1 of <root>.Q [operator] declared in <root>.Q' type=@[EnhancedNullability] kotlin.String origin=null
$this: GET_VAR 'val tmp_1: @[FlexibleNullability] <root>.Q<@[EnhancedNullability] kotlin.String, @[FlexibleNullability] kotlin.String?>? [val] declared in <root>.test2' type=@[FlexibleNullability] <root>.Q<@[EnhancedNullability] kotlin.String, @[FlexibleNullability] kotlin.String?>? origin=null
VAR name:y type:@[FlexibleNullability] kotlin.String? [val]
CALL 'public final fun component2 (): T2 of <root>.Q [operator] declared in <root>.Q' type=@[FlexibleNullability] kotlin.String? origin=null
$this: GET_VAR 'val tmp_1: @[FlexibleNullability] <root>.Q<@[EnhancedNullability] kotlin.String, @[FlexibleNullability] kotlin.String?>? [val] declared in <root>.test2' type=@[FlexibleNullability] <root>.Q<@[EnhancedNullability] kotlin.String, @[FlexibleNullability] kotlin.String?>? origin=null
$this: GET_VAR 'val tmp_1: @[FlexibleNullability] <root>.Q<@[EnhancedNullability] kotlin.String, @[EnhancedNullability] kotlin.String>? [val] declared in <root>.test2' type=@[FlexibleNullability] <root>.Q<@[EnhancedNullability] kotlin.String, @[EnhancedNullability] kotlin.String>? origin=null
VAR name:y type:kotlin.String [val]
TYPE_OP type=kotlin.String origin=IMPLICIT_NOTNULL typeOperand=kotlin.String
CALL 'public final fun component2 (): T2 of <root>.Q [operator] declared in <root>.Q' type=@[EnhancedNullability] kotlin.String origin=null
$this: GET_VAR 'val tmp_1: @[FlexibleNullability] <root>.Q<@[EnhancedNullability] kotlin.String, @[EnhancedNullability] kotlin.String>? [val] declared in <root>.test2' type=@[FlexibleNullability] <root>.Q<@[EnhancedNullability] kotlin.String, @[EnhancedNullability] kotlin.String>? origin=null
CALL 'public final fun use (x: kotlin.Any, y: kotlin.Any): kotlin.Unit declared in <root>' type=kotlin.Unit origin=null
x: GET_VAR 'val x: kotlin.String [val] declared in <root>.test2' type=kotlin.String origin=null
y: TYPE_OP type=@[FlexibleNullability] kotlin.String origin=IMPLICIT_NOTNULL typeOperand=@[FlexibleNullability] kotlin.String
GET_VAR 'val y: @[FlexibleNullability] kotlin.String? [val] declared in <root>.test2' type=@[FlexibleNullability] kotlin.String? origin=null
y: GET_VAR 'val y: kotlin.String [val] declared in <root>.test2' type=kotlin.String origin=null
FUN name:test2Desugared visibility:public modality:FINAL <> () returnType:kotlin.Unit
BLOCK_BODY
VAR name:tmp type:@[FlexibleNullability] <root>.Q<@[EnhancedNullability] kotlin.String, @[FlexibleNullability] kotlin.String?>? [val]
CALL 'public open fun notNullComponents (): @[FlexibleNullability] <root>.Q<@[EnhancedNullability] kotlin.String, @[FlexibleNullability] kotlin.String?>? declared in <root>.J' type=@[FlexibleNullability] <root>.Q<@[EnhancedNullability] kotlin.String, @[FlexibleNullability] kotlin.String?>? origin=null
VAR name:tmp type:@[FlexibleNullability] <root>.Q<@[EnhancedNullability] kotlin.String, @[EnhancedNullability] kotlin.String>? [val]
CALL 'public open fun notNullComponents (): @[FlexibleNullability] <root>.Q<@[EnhancedNullability] kotlin.String, @[EnhancedNullability] kotlin.String>? declared in <root>.J' type=@[FlexibleNullability] <root>.Q<@[EnhancedNullability] kotlin.String, @[EnhancedNullability] kotlin.String>? origin=null
VAR name:x type:kotlin.String [val]
TYPE_OP type=kotlin.String origin=IMPLICIT_NOTNULL typeOperand=kotlin.String
CALL 'public final fun component1 (): T1 of <root>.Q [operator] declared in <root>.Q' type=@[EnhancedNullability] kotlin.String origin=null
$this: GET_VAR 'val tmp: @[FlexibleNullability] <root>.Q<@[EnhancedNullability] kotlin.String, @[FlexibleNullability] kotlin.String?>? [val] declared in <root>.test2Desugared' type=@[FlexibleNullability] <root>.Q<@[EnhancedNullability] kotlin.String, @[FlexibleNullability] kotlin.String?>? origin=null
VAR name:y type:@[FlexibleNullability] kotlin.String? [val]
CALL 'public final fun component2 (): T2 of <root>.Q [operator] declared in <root>.Q' type=@[FlexibleNullability] kotlin.String? origin=null
$this: GET_VAR 'val tmp: @[FlexibleNullability] <root>.Q<@[EnhancedNullability] kotlin.String, @[FlexibleNullability] kotlin.String?>? [val] declared in <root>.test2Desugared' type=@[FlexibleNullability] <root>.Q<@[EnhancedNullability] kotlin.String, @[FlexibleNullability] kotlin.String?>? origin=null
$this: GET_VAR 'val tmp: @[FlexibleNullability] <root>.Q<@[EnhancedNullability] kotlin.String, @[EnhancedNullability] kotlin.String>? [val] declared in <root>.test2Desugared' type=@[FlexibleNullability] <root>.Q<@[EnhancedNullability] kotlin.String, @[EnhancedNullability] kotlin.String>? origin=null
VAR name:y type:kotlin.String [val]
TYPE_OP type=kotlin.String origin=IMPLICIT_NOTNULL typeOperand=kotlin.String
CALL 'public final fun component2 (): T2 of <root>.Q [operator] declared in <root>.Q' type=@[EnhancedNullability] kotlin.String origin=null
$this: GET_VAR 'val tmp: @[FlexibleNullability] <root>.Q<@[EnhancedNullability] kotlin.String, @[EnhancedNullability] kotlin.String>? [val] declared in <root>.test2Desugared' type=@[FlexibleNullability] <root>.Q<@[EnhancedNullability] kotlin.String, @[EnhancedNullability] kotlin.String>? origin=null
CALL 'public final fun use (x: kotlin.Any, y: kotlin.Any): kotlin.Unit declared in <root>' type=kotlin.Unit origin=null
x: GET_VAR 'val x: kotlin.String [val] declared in <root>.test2Desugared' type=kotlin.String origin=null
y: TYPE_OP type=@[FlexibleNullability] kotlin.String origin=IMPLICIT_NOTNULL typeOperand=@[FlexibleNullability] kotlin.String
GET_VAR 'val y: @[FlexibleNullability] kotlin.String? [val] declared in <root>.test2Desugared' type=@[FlexibleNullability] kotlin.String? origin=null
y: GET_VAR 'val y: kotlin.String [val] declared in <root>.test2Desugared' type=kotlin.String origin=null
FUN name:test3 visibility:public modality:FINAL <> () returnType:kotlin.Unit
BLOCK_BODY
VAR IR_TEMPORARY_VARIABLE name:tmp_2 type:<root>.Q<@[EnhancedNullability] kotlin.String, @[FlexibleNullability] kotlin.String?> [val]
TYPE_OP type=<root>.Q<@[EnhancedNullability] kotlin.String, @[FlexibleNullability] kotlin.String?> origin=IMPLICIT_NOTNULL typeOperand=<root>.Q<@[EnhancedNullability] kotlin.String, @[FlexibleNullability] kotlin.String?>
CALL 'public open fun notNullQAndComponents (): @[EnhancedNullability] <root>.Q<@[EnhancedNullability] kotlin.String, @[FlexibleNullability] kotlin.String?> declared in <root>.J' type=@[EnhancedNullability] <root>.Q<@[EnhancedNullability] kotlin.String, @[FlexibleNullability] kotlin.String?> origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_2 type:<root>.Q<@[EnhancedNullability] kotlin.String, @[EnhancedNullability] kotlin.String> [val]
TYPE_OP type=<root>.Q<@[EnhancedNullability] kotlin.String, @[EnhancedNullability] kotlin.String> origin=IMPLICIT_NOTNULL typeOperand=<root>.Q<@[EnhancedNullability] kotlin.String, @[EnhancedNullability] kotlin.String>
CALL 'public open fun notNullQAndComponents (): @[EnhancedNullability] <root>.Q<@[EnhancedNullability] kotlin.String, @[EnhancedNullability] kotlin.String> declared in <root>.J' type=@[EnhancedNullability] <root>.Q<@[EnhancedNullability] kotlin.String, @[EnhancedNullability] kotlin.String> origin=null
VAR name:x type:kotlin.String [val]
TYPE_OP type=kotlin.String origin=IMPLICIT_NOTNULL typeOperand=kotlin.String
CALL 'public final fun component1 (): T1 of <root>.Q [operator] declared in <root>.Q' type=@[EnhancedNullability] kotlin.String origin=null
$this: GET_VAR 'val tmp_2: <root>.Q<@[EnhancedNullability] kotlin.String, @[FlexibleNullability] kotlin.String?> [val] declared in <root>.test3' type=<root>.Q<@[EnhancedNullability] kotlin.String, @[FlexibleNullability] kotlin.String?> origin=null
VAR name:y type:@[FlexibleNullability] kotlin.String? [val]
CALL 'public final fun component2 (): T2 of <root>.Q [operator] declared in <root>.Q' type=@[FlexibleNullability] kotlin.String? origin=null
$this: GET_VAR 'val tmp_2: <root>.Q<@[EnhancedNullability] kotlin.String, @[FlexibleNullability] kotlin.String?> [val] declared in <root>.test3' type=<root>.Q<@[EnhancedNullability] kotlin.String, @[FlexibleNullability] kotlin.String?> origin=null
$this: GET_VAR 'val tmp_2: <root>.Q<@[EnhancedNullability] kotlin.String, @[EnhancedNullability] kotlin.String> [val] declared in <root>.test3' type=<root>.Q<@[EnhancedNullability] kotlin.String, @[EnhancedNullability] kotlin.String> origin=null
VAR name:y type:kotlin.String [val]
TYPE_OP type=kotlin.String origin=IMPLICIT_NOTNULL typeOperand=kotlin.String
CALL 'public final fun component2 (): T2 of <root>.Q [operator] declared in <root>.Q' type=@[EnhancedNullability] kotlin.String origin=null
$this: GET_VAR 'val tmp_2: <root>.Q<@[EnhancedNullability] kotlin.String, @[EnhancedNullability] kotlin.String> [val] declared in <root>.test3' type=<root>.Q<@[EnhancedNullability] kotlin.String, @[EnhancedNullability] kotlin.String> origin=null
CALL 'public final fun use (x: kotlin.Any, y: kotlin.Any): kotlin.Unit declared in <root>' type=kotlin.Unit origin=null
x: GET_VAR 'val x: kotlin.String [val] declared in <root>.test3' type=kotlin.String origin=null
y: TYPE_OP type=@[FlexibleNullability] kotlin.String origin=IMPLICIT_NOTNULL typeOperand=@[FlexibleNullability] kotlin.String
GET_VAR 'val y: @[FlexibleNullability] kotlin.String? [val] declared in <root>.test3' type=@[FlexibleNullability] kotlin.String? origin=null
y: GET_VAR 'val y: kotlin.String [val] declared in <root>.test3' type=kotlin.String origin=null
FUN name:test4 visibility:public modality:FINAL <> () returnType:kotlin.Unit
BLOCK_BODY
VAR IR_TEMPORARY_VARIABLE name:tmp_3 type:kotlin.collections.IndexedValue<@[FlexibleNullability] <root>.P?> [val]
CALL 'public final fun first <T> (): T of kotlin.collections.CollectionsKt.first declared in kotlin.collections.CollectionsKt' type=kotlin.collections.IndexedValue<@[FlexibleNullability] <root>.P?> origin=null
<T>: kotlin.collections.IndexedValue<@[FlexibleNullability] <root>.P?>
$receiver: CALL 'public final fun withIndex <T> (): kotlin.collections.Iterable<kotlin.collections.IndexedValue<T of kotlin.collections.CollectionsKt.withIndex>> declared in kotlin.collections.CollectionsKt' type=kotlin.collections.Iterable<kotlin.collections.IndexedValue<@[FlexibleNullability] <root>.P?>> origin=null
<T>: @[FlexibleNullability] <root>.P?
$receiver: TYPE_OP type=@[FlexibleNullability] kotlin.collections.List<@[FlexibleNullability] <root>.P?> origin=IMPLICIT_NOTNULL typeOperand=@[FlexibleNullability] kotlin.collections.List<@[FlexibleNullability] <root>.P?>
CALL 'public open fun listOfNotNull (): @[FlexibleNullability] kotlin.collections.List<@[FlexibleNullability] <root>.P?>? declared in <root>.J' type=@[FlexibleNullability] kotlin.collections.List<@[FlexibleNullability] <root>.P?>? origin=null
VAR IR_TEMPORARY_VARIABLE name:tmp_3 type:kotlin.collections.IndexedValue<@[EnhancedNullability] <root>.P> [val]
CALL 'public final fun first <T> (): T of kotlin.collections.CollectionsKt.first declared in kotlin.collections.CollectionsKt' type=kotlin.collections.IndexedValue<@[EnhancedNullability] <root>.P> origin=null
<T>: kotlin.collections.IndexedValue<@[EnhancedNullability] <root>.P>
$receiver: CALL 'public final fun withIndex <T> (): kotlin.collections.Iterable<kotlin.collections.IndexedValue<T of kotlin.collections.CollectionsKt.withIndex>> declared in kotlin.collections.CollectionsKt' type=kotlin.collections.Iterable<kotlin.collections.IndexedValue<@[EnhancedNullability] <root>.P>> origin=null
<T>: @[EnhancedNullability] <root>.P
$receiver: TYPE_OP type=@[FlexibleNullability] kotlin.collections.List<@[EnhancedNullability] <root>.P> origin=IMPLICIT_NOTNULL typeOperand=@[FlexibleNullability] kotlin.collections.List<@[EnhancedNullability] <root>.P>
CALL 'public open fun listOfNotNull (): @[FlexibleNullability] kotlin.collections.List<@[EnhancedNullability] <root>.P>? declared in <root>.J' type=@[FlexibleNullability] kotlin.collections.List<@[EnhancedNullability] <root>.P>? origin=null
VAR name:x type:kotlin.Int [val]
CALL 'public final fun component1 (): kotlin.Int [operator] declared in kotlin.collections.IndexedValue' type=kotlin.Int origin=null
$this: GET_VAR 'val tmp_3: kotlin.collections.IndexedValue<@[FlexibleNullability] <root>.P?> [val] declared in <root>.test4' type=kotlin.collections.IndexedValue<@[FlexibleNullability] <root>.P?> origin=null
VAR name:y type:@[FlexibleNullability] <root>.P? [val]
CALL 'public final fun component2 (): T of kotlin.collections.IndexedValue [operator] declared in kotlin.collections.IndexedValue' type=@[FlexibleNullability] <root>.P? origin=null
$this: GET_VAR 'val tmp_3: kotlin.collections.IndexedValue<@[FlexibleNullability] <root>.P?> [val] declared in <root>.test4' type=kotlin.collections.IndexedValue<@[FlexibleNullability] <root>.P?> origin=null
$this: GET_VAR 'val tmp_3: kotlin.collections.IndexedValue<@[EnhancedNullability] <root>.P> [val] declared in <root>.test4' type=kotlin.collections.IndexedValue<@[EnhancedNullability] <root>.P> origin=null
VAR name:y type:<root>.P [val]
TYPE_OP type=<root>.P origin=IMPLICIT_NOTNULL typeOperand=<root>.P
CALL 'public final fun component2 (): T of kotlin.collections.IndexedValue [operator] declared in kotlin.collections.IndexedValue' type=@[EnhancedNullability] <root>.P origin=null
$this: GET_VAR 'val tmp_3: kotlin.collections.IndexedValue<@[EnhancedNullability] <root>.P> [val] declared in <root>.test4' type=kotlin.collections.IndexedValue<@[EnhancedNullability] <root>.P> origin=null
CALL 'public final fun use (x: kotlin.Any, y: kotlin.Any): kotlin.Unit declared in <root>' type=kotlin.Unit origin=null
x: GET_VAR 'val x: kotlin.Int [val] declared in <root>.test4' type=kotlin.Int origin=null
y: TYPE_OP type=@[FlexibleNullability] <root>.P origin=IMPLICIT_NOTNULL typeOperand=@[FlexibleNullability] <root>.P
GET_VAR 'val y: @[FlexibleNullability] <root>.P? [val] declared in <root>.test4' type=@[FlexibleNullability] <root>.P? origin=null
y: GET_VAR 'val y: <root>.P [val] declared in <root>.test4' type=<root>.P origin=null
@@ -3,18 +3,18 @@ fun use(s: P) {
fun testForInListUnused() {
{ // BLOCK
val <iterator>: MutableIterator<@FlexibleNullability P?> = listOfNotNull().iterator()
val <iterator>: MutableIterator<@EnhancedNullability P> = listOfNotNull().iterator()
while (<iterator>.hasNext()) { // BLOCK
val x: @FlexibleNullability P? = <iterator>.next()
val x: P = <iterator>.next() /*!! P */
}
}
}
fun testForInListDestructured() {
{ // BLOCK
val <iterator>: MutableIterator<@FlexibleNullability P?> = listOfNotNull().iterator()
val <iterator>: MutableIterator<@EnhancedNullability P> = listOfNotNull().iterator()
while (<iterator>.hasNext()) { // BLOCK
val <destruct>: @FlexibleNullability P? = <iterator>.next()
val <destruct>: P = <iterator>.next() /*!! P */
{ // BLOCK
val x: Int = <destruct>.component1()
val y: Int = <destruct>.component2()
@@ -24,9 +24,9 @@ fun testForInListDestructured() {
}
fun testDesugaredForInList() {
val iterator: MutableIterator<@FlexibleNullability P?> = listOfNotNull().iterator()
val iterator: MutableIterator<@EnhancedNullability P> = listOfNotNull().iterator()
while (iterator.hasNext()) { // BLOCK
val x: @FlexibleNullability P? = iterator.next()
val x: P = iterator.next() /*!! P */
}
}
@@ -41,11 +41,11 @@ fun testForInArrayUnused(j: J) {
fun testForInListUse() {
{ // BLOCK
val <iterator>: MutableIterator<@FlexibleNullability P?> = listOfNotNull().iterator()
val <iterator>: MutableIterator<@EnhancedNullability P> = listOfNotNull().iterator()
while (<iterator>.hasNext()) { // BLOCK
val x: @FlexibleNullability P? = <iterator>.next()
val x: P = <iterator>.next() /*!! P */
{ // BLOCK
use(s = x /*!! @FlexibleNullability P */)
use(s = x)
use(s = x)
}
}
@@ -66,7 +66,7 @@ fun testForInArrayUse(j: J) {
}
interface K {
abstract fun arrayOfNotNull(): Array<P>
abstract fun arrayOfNotNull(): Array<P>
}
@@ -5,48 +5,51 @@ FILE fqName:<root> fileName:/enhancedNullabilityInForLoop.kt
FUN name:testForInListUnused visibility:public modality:FINAL <> () returnType:kotlin.Unit
BLOCK_BODY
BLOCK type=kotlin.Unit origin=FOR_LOOP
VAR FOR_LOOP_ITERATOR name:tmp_0 type:kotlin.collections.MutableIterator<@[FlexibleNullability] <root>.P?> [val]
CALL 'public abstract fun iterator (): kotlin.collections.MutableIterator<E of kotlin.collections.MutableList> [fake_override,operator] declared in kotlin.collections.MutableList' type=kotlin.collections.MutableIterator<@[FlexibleNullability] <root>.P?> origin=FOR_LOOP_ITERATOR
$this: CALL 'public open fun listOfNotNull (): @[FlexibleNullability] kotlin.collections.List<@[FlexibleNullability] <root>.P?>? declared in <root>.J' type=@[FlexibleNullability] kotlin.collections.List<@[FlexibleNullability] <root>.P?>? origin=null
VAR FOR_LOOP_ITERATOR name:tmp_0 type:kotlin.collections.MutableIterator<@[EnhancedNullability] <root>.P> [val]
CALL 'public abstract fun iterator (): kotlin.collections.MutableIterator<E of kotlin.collections.MutableList> [fake_override,operator] declared in kotlin.collections.MutableList' type=kotlin.collections.MutableIterator<@[EnhancedNullability] <root>.P> origin=FOR_LOOP_ITERATOR
$this: CALL 'public open fun listOfNotNull (): @[FlexibleNullability] kotlin.collections.List<@[EnhancedNullability] <root>.P>? declared in <root>.J' type=@[FlexibleNullability] kotlin.collections.List<@[EnhancedNullability] <root>.P>? origin=null
WHILE label=null origin=FOR_LOOP_INNER_WHILE
condition: CALL 'public abstract fun hasNext (): kotlin.Boolean [operator] declared in kotlin.collections.Iterator' type=kotlin.Boolean origin=FOR_LOOP_HAS_NEXT
$this: GET_VAR 'val tmp_0: kotlin.collections.MutableIterator<@[FlexibleNullability] <root>.P?> [val] declared in <root>.testForInListUnused' type=kotlin.collections.MutableIterator<@[FlexibleNullability] <root>.P?> origin=null
$this: GET_VAR 'val tmp_0: kotlin.collections.MutableIterator<@[EnhancedNullability] <root>.P> [val] declared in <root>.testForInListUnused' type=kotlin.collections.MutableIterator<@[EnhancedNullability] <root>.P> origin=null
body: BLOCK type=kotlin.Unit origin=FOR_LOOP_INNER_WHILE
VAR FOR_LOOP_VARIABLE name:x type:@[FlexibleNullability] <root>.P? [val]
CALL 'public abstract fun next (): T of kotlin.collections.MutableIterator [fake_override,operator] declared in kotlin.collections.MutableIterator' type=@[FlexibleNullability] <root>.P? origin=FOR_LOOP_NEXT
$this: GET_VAR 'val tmp_0: kotlin.collections.MutableIterator<@[FlexibleNullability] <root>.P?> [val] declared in <root>.testForInListUnused' type=kotlin.collections.MutableIterator<@[FlexibleNullability] <root>.P?> origin=null
VAR FOR_LOOP_VARIABLE name:x type:<root>.P [val]
TYPE_OP type=<root>.P origin=IMPLICIT_NOTNULL typeOperand=<root>.P
CALL 'public abstract fun next (): T of kotlin.collections.MutableIterator [fake_override,operator] declared in kotlin.collections.MutableIterator' type=@[EnhancedNullability] <root>.P origin=FOR_LOOP_NEXT
$this: GET_VAR 'val tmp_0: kotlin.collections.MutableIterator<@[EnhancedNullability] <root>.P> [val] declared in <root>.testForInListUnused' type=kotlin.collections.MutableIterator<@[EnhancedNullability] <root>.P> origin=null
FUN name:testForInListDestructured visibility:public modality:FINAL <> () returnType:kotlin.Unit
BLOCK_BODY
BLOCK type=kotlin.Unit origin=FOR_LOOP
VAR FOR_LOOP_ITERATOR name:tmp_1 type:kotlin.collections.MutableIterator<@[FlexibleNullability] <root>.P?> [val]
CALL 'public abstract fun iterator (): kotlin.collections.MutableIterator<E of kotlin.collections.MutableList> [fake_override,operator] declared in kotlin.collections.MutableList' type=kotlin.collections.MutableIterator<@[FlexibleNullability] <root>.P?> origin=FOR_LOOP_ITERATOR
$this: CALL 'public open fun listOfNotNull (): @[FlexibleNullability] kotlin.collections.List<@[FlexibleNullability] <root>.P?>? declared in <root>.J' type=@[FlexibleNullability] kotlin.collections.List<@[FlexibleNullability] <root>.P?>? origin=null
VAR FOR_LOOP_ITERATOR name:tmp_1 type:kotlin.collections.MutableIterator<@[EnhancedNullability] <root>.P> [val]
CALL 'public abstract fun iterator (): kotlin.collections.MutableIterator<E of kotlin.collections.MutableList> [fake_override,operator] declared in kotlin.collections.MutableList' type=kotlin.collections.MutableIterator<@[EnhancedNullability] <root>.P> origin=FOR_LOOP_ITERATOR
$this: CALL 'public open fun listOfNotNull (): @[FlexibleNullability] kotlin.collections.List<@[EnhancedNullability] <root>.P>? declared in <root>.J' type=@[FlexibleNullability] kotlin.collections.List<@[EnhancedNullability] <root>.P>? origin=null
WHILE label=null origin=FOR_LOOP_INNER_WHILE
condition: CALL 'public abstract fun hasNext (): kotlin.Boolean [operator] declared in kotlin.collections.Iterator' type=kotlin.Boolean origin=FOR_LOOP_HAS_NEXT
$this: GET_VAR 'val tmp_1: kotlin.collections.MutableIterator<@[FlexibleNullability] <root>.P?> [val] declared in <root>.testForInListDestructured' type=kotlin.collections.MutableIterator<@[FlexibleNullability] <root>.P?> origin=null
$this: GET_VAR 'val tmp_1: kotlin.collections.MutableIterator<@[EnhancedNullability] <root>.P> [val] declared in <root>.testForInListDestructured' type=kotlin.collections.MutableIterator<@[EnhancedNullability] <root>.P> origin=null
body: BLOCK type=kotlin.Unit origin=FOR_LOOP_INNER_WHILE
VAR FOR_LOOP_VARIABLE name:<destruct> type:@[FlexibleNullability] <root>.P? [val]
CALL 'public abstract fun next (): T of kotlin.collections.MutableIterator [fake_override,operator] declared in kotlin.collections.MutableIterator' type=@[FlexibleNullability] <root>.P? origin=FOR_LOOP_NEXT
$this: GET_VAR 'val tmp_1: kotlin.collections.MutableIterator<@[FlexibleNullability] <root>.P?> [val] declared in <root>.testForInListDestructured' type=kotlin.collections.MutableIterator<@[FlexibleNullability] <root>.P?> origin=null
VAR FOR_LOOP_VARIABLE name:<destruct> type:<root>.P [val]
TYPE_OP type=<root>.P origin=IMPLICIT_NOTNULL typeOperand=<root>.P
CALL 'public abstract fun next (): T of kotlin.collections.MutableIterator [fake_override,operator] declared in kotlin.collections.MutableIterator' type=@[EnhancedNullability] <root>.P origin=FOR_LOOP_NEXT
$this: GET_VAR 'val tmp_1: kotlin.collections.MutableIterator<@[EnhancedNullability] <root>.P> [val] declared in <root>.testForInListDestructured' type=kotlin.collections.MutableIterator<@[EnhancedNullability] <root>.P> origin=null
BLOCK type=kotlin.Unit origin=null
VAR name:x type:kotlin.Int [val]
CALL 'public final fun component1 (): kotlin.Int [operator] declared in <root>.P' type=kotlin.Int origin=null
$this: GET_VAR 'val <destruct>: @[FlexibleNullability] <root>.P? [val] declared in <root>.testForInListDestructured' type=@[FlexibleNullability] <root>.P? origin=null
$this: GET_VAR 'val <destruct>: <root>.P [val] declared in <root>.testForInListDestructured' type=<root>.P origin=null
VAR name:y type:kotlin.Int [val]
CALL 'public final fun component2 (): kotlin.Int [operator] declared in <root>.P' type=kotlin.Int origin=null
$this: GET_VAR 'val <destruct>: @[FlexibleNullability] <root>.P? [val] declared in <root>.testForInListDestructured' type=@[FlexibleNullability] <root>.P? origin=null
$this: GET_VAR 'val <destruct>: <root>.P [val] declared in <root>.testForInListDestructured' type=<root>.P origin=null
FUN name:testDesugaredForInList visibility:public modality:FINAL <> () returnType:kotlin.Unit
BLOCK_BODY
VAR name:iterator type:kotlin.collections.MutableIterator<@[FlexibleNullability] <root>.P?> [val]
CALL 'public abstract fun iterator (): kotlin.collections.MutableIterator<E of kotlin.collections.MutableList> [fake_override,operator] declared in kotlin.collections.MutableList' type=kotlin.collections.MutableIterator<@[FlexibleNullability] <root>.P?> origin=null
$this: CALL 'public open fun listOfNotNull (): @[FlexibleNullability] kotlin.collections.List<@[FlexibleNullability] <root>.P?>? declared in <root>.J' type=@[FlexibleNullability] kotlin.collections.List<@[FlexibleNullability] <root>.P?>? origin=null
VAR name:iterator type:kotlin.collections.MutableIterator<@[EnhancedNullability] <root>.P> [val]
CALL 'public abstract fun iterator (): kotlin.collections.MutableIterator<E of kotlin.collections.MutableList> [fake_override,operator] declared in kotlin.collections.MutableList' type=kotlin.collections.MutableIterator<@[EnhancedNullability] <root>.P> origin=null
$this: CALL 'public open fun listOfNotNull (): @[FlexibleNullability] kotlin.collections.List<@[EnhancedNullability] <root>.P>? declared in <root>.J' type=@[FlexibleNullability] kotlin.collections.List<@[EnhancedNullability] <root>.P>? origin=null
WHILE label=null origin=WHILE_LOOP
condition: CALL 'public abstract fun hasNext (): kotlin.Boolean [operator] declared in kotlin.collections.Iterator' type=kotlin.Boolean origin=null
$this: GET_VAR 'val iterator: kotlin.collections.MutableIterator<@[FlexibleNullability] <root>.P?> [val] declared in <root>.testDesugaredForInList' type=kotlin.collections.MutableIterator<@[FlexibleNullability] <root>.P?> origin=null
$this: GET_VAR 'val iterator: kotlin.collections.MutableIterator<@[EnhancedNullability] <root>.P> [val] declared in <root>.testDesugaredForInList' type=kotlin.collections.MutableIterator<@[EnhancedNullability] <root>.P> origin=null
body: BLOCK type=kotlin.Unit origin=null
VAR name:x type:@[FlexibleNullability] <root>.P? [val]
CALL 'public abstract fun next (): T of kotlin.collections.MutableIterator [fake_override,operator] declared in kotlin.collections.MutableIterator' type=@[FlexibleNullability] <root>.P? origin=null
$this: GET_VAR 'val iterator: kotlin.collections.MutableIterator<@[FlexibleNullability] <root>.P?> [val] declared in <root>.testDesugaredForInList' type=kotlin.collections.MutableIterator<@[FlexibleNullability] <root>.P?> origin=null
VAR name:x type:<root>.P [val]
TYPE_OP type=<root>.P origin=IMPLICIT_NOTNULL typeOperand=<root>.P
CALL 'public abstract fun next (): T of kotlin.collections.MutableIterator [fake_override,operator] declared in kotlin.collections.MutableIterator' type=@[EnhancedNullability] <root>.P origin=null
$this: GET_VAR 'val iterator: kotlin.collections.MutableIterator<@[EnhancedNullability] <root>.P> [val] declared in <root>.testDesugaredForInList' type=kotlin.collections.MutableIterator<@[EnhancedNullability] <root>.P> origin=null
FUN name:testForInArrayUnused visibility:public modality:FINAL <> (j:<root>.J) returnType:kotlin.Unit
VALUE_PARAMETER name:j index:0 type:<root>.J
BLOCK_BODY
@@ -65,22 +68,22 @@ FILE fqName:<root> fileName:/enhancedNullabilityInForLoop.kt
FUN name:testForInListUse visibility:public modality:FINAL <> () returnType:kotlin.Unit
BLOCK_BODY
BLOCK type=kotlin.Unit origin=FOR_LOOP
VAR FOR_LOOP_ITERATOR name:tmp_3 type:kotlin.collections.MutableIterator<@[FlexibleNullability] <root>.P?> [val]
CALL 'public abstract fun iterator (): kotlin.collections.MutableIterator<E of kotlin.collections.MutableList> [fake_override,operator] declared in kotlin.collections.MutableList' type=kotlin.collections.MutableIterator<@[FlexibleNullability] <root>.P?> origin=FOR_LOOP_ITERATOR
$this: CALL 'public open fun listOfNotNull (): @[FlexibleNullability] kotlin.collections.List<@[FlexibleNullability] <root>.P?>? declared in <root>.J' type=@[FlexibleNullability] kotlin.collections.List<@[FlexibleNullability] <root>.P?>? origin=null
VAR FOR_LOOP_ITERATOR name:tmp_3 type:kotlin.collections.MutableIterator<@[EnhancedNullability] <root>.P> [val]
CALL 'public abstract fun iterator (): kotlin.collections.MutableIterator<E of kotlin.collections.MutableList> [fake_override,operator] declared in kotlin.collections.MutableList' type=kotlin.collections.MutableIterator<@[EnhancedNullability] <root>.P> origin=FOR_LOOP_ITERATOR
$this: CALL 'public open fun listOfNotNull (): @[FlexibleNullability] kotlin.collections.List<@[EnhancedNullability] <root>.P>? declared in <root>.J' type=@[FlexibleNullability] kotlin.collections.List<@[EnhancedNullability] <root>.P>? origin=null
WHILE label=null origin=FOR_LOOP_INNER_WHILE
condition: CALL 'public abstract fun hasNext (): kotlin.Boolean [operator] declared in kotlin.collections.Iterator' type=kotlin.Boolean origin=FOR_LOOP_HAS_NEXT
$this: GET_VAR 'val tmp_3: kotlin.collections.MutableIterator<@[FlexibleNullability] <root>.P?> [val] declared in <root>.testForInListUse' type=kotlin.collections.MutableIterator<@[FlexibleNullability] <root>.P?> origin=null
$this: GET_VAR 'val tmp_3: kotlin.collections.MutableIterator<@[EnhancedNullability] <root>.P> [val] declared in <root>.testForInListUse' type=kotlin.collections.MutableIterator<@[EnhancedNullability] <root>.P> origin=null
body: BLOCK type=kotlin.Unit origin=FOR_LOOP_INNER_WHILE
VAR FOR_LOOP_VARIABLE name:x type:@[FlexibleNullability] <root>.P? [val]
CALL 'public abstract fun next (): T of kotlin.collections.MutableIterator [fake_override,operator] declared in kotlin.collections.MutableIterator' type=@[FlexibleNullability] <root>.P? origin=FOR_LOOP_NEXT
$this: GET_VAR 'val tmp_3: kotlin.collections.MutableIterator<@[FlexibleNullability] <root>.P?> [val] declared in <root>.testForInListUse' type=kotlin.collections.MutableIterator<@[FlexibleNullability] <root>.P?> origin=null
VAR FOR_LOOP_VARIABLE name:x type:<root>.P [val]
TYPE_OP type=<root>.P origin=IMPLICIT_NOTNULL typeOperand=<root>.P
CALL 'public abstract fun next (): T of kotlin.collections.MutableIterator [fake_override,operator] declared in kotlin.collections.MutableIterator' type=@[EnhancedNullability] <root>.P origin=FOR_LOOP_NEXT
$this: GET_VAR 'val tmp_3: kotlin.collections.MutableIterator<@[EnhancedNullability] <root>.P> [val] declared in <root>.testForInListUse' type=kotlin.collections.MutableIterator<@[EnhancedNullability] <root>.P> origin=null
BLOCK type=kotlin.Unit origin=null
CALL 'public final fun use (s: <root>.P): kotlin.Unit declared in <root>' type=kotlin.Unit origin=null
s: TYPE_OP type=@[FlexibleNullability] <root>.P origin=IMPLICIT_NOTNULL typeOperand=@[FlexibleNullability] <root>.P
GET_VAR 'val x: @[FlexibleNullability] <root>.P? [val] declared in <root>.testForInListUse' type=@[FlexibleNullability] <root>.P? origin=null
s: GET_VAR 'val x: <root>.P [val] declared in <root>.testForInListUse' type=<root>.P origin=null
CALL 'public open fun use (s: @[EnhancedNullability] <root>.P): kotlin.Unit declared in <root>.J' type=kotlin.Unit origin=null
s: GET_VAR 'val x: @[FlexibleNullability] <root>.P? [val] declared in <root>.testForInListUse' type=@[FlexibleNullability] <root>.P? origin=null
s: GET_VAR 'val x: <root>.P [val] declared in <root>.testForInListUse' type=<root>.P origin=null
FUN name:testForInArrayUse visibility:public modality:FINAL <> (j:<root>.J) returnType:kotlin.Unit
VALUE_PARAMETER name:j index:0 type:<root>.J
BLOCK_BODY