FIR2IR converter: handle receivers and parents more correctly

This commit is contained in:
Mikhail Glukhikh
2019-05-14 15:58:50 +03:00
parent 90009f002c
commit 26974788e9
59 changed files with 400 additions and 174 deletions
@@ -6,11 +6,14 @@ FILE fqName:<root> fileName:/forWithBreakContinue.kt
GET_VAR 'ss: kotlin.collections.List<kotlin.String> declared in <root>.testForBreak1' type=kotlin.collections.List<kotlin.String> origin=null
VAR name:<iterator> type:kotlin.collections.Iterator<kotlin.String> [val]
CALL 'public abstract fun iterator (): kotlin.collections.Iterator<kotlin.String> declared in kotlin.collections.List' type=kotlin.collections.Iterator<kotlin.String> origin=null
$this: GET_VAR 'val <range>: kotlin.collections.List<kotlin.String> [val] declared in <root>.testForBreak1' type=kotlin.collections.List<kotlin.String> origin=null
WHILE label=null origin=FOR_LOOP_INNER_WHILE
condition: CALL 'public abstract fun hasNext (): kotlin.Boolean declared in kotlin.collections.Iterator' type=kotlin.Boolean origin=null
$this: GET_VAR 'val <iterator>: kotlin.collections.Iterator<kotlin.String> [val] declared in <root>.testForBreak1' type=kotlin.collections.Iterator<kotlin.String> origin=null
body: BLOCK type=kotlin.Nothing origin=null
VAR name:s type:kotlin.String [val]
CALL 'public abstract fun next (): kotlin.String declared in kotlin.collections.Iterator' type=kotlin.String origin=null
$this: GET_VAR 'val <iterator>: kotlin.collections.Iterator<kotlin.String> [val] declared in <root>.testForBreak1' type=kotlin.collections.Iterator<kotlin.String> origin=null
BREAK label=null loop.label=null
FUN name:testForBreak2 visibility:public modality:FINAL <> (ss:kotlin.collections.List<kotlin.String>) returnType:kotlin.Unit
VALUE_PARAMETER name:ss index:0 type:kotlin.collections.List<kotlin.String>
@@ -19,20 +22,26 @@ FILE fqName:<root> fileName:/forWithBreakContinue.kt
GET_VAR 'ss: kotlin.collections.List<kotlin.String> declared in <root>.testForBreak2' type=kotlin.collections.List<kotlin.String> origin=null
VAR name:<iterator> type:kotlin.collections.Iterator<kotlin.String> [val]
CALL 'public abstract fun iterator (): kotlin.collections.Iterator<kotlin.String> declared in kotlin.collections.List' type=kotlin.collections.Iterator<kotlin.String> origin=null
$this: GET_VAR 'val <range>: kotlin.collections.List<kotlin.String> [val] declared in <root>.testForBreak2' type=kotlin.collections.List<kotlin.String> origin=null
WHILE label=OUTER origin=FOR_LOOP_INNER_WHILE
condition: CALL 'public abstract fun hasNext (): kotlin.Boolean declared in kotlin.collections.Iterator' type=kotlin.Boolean origin=null
$this: GET_VAR 'val <iterator>: kotlin.collections.Iterator<kotlin.String> [val] declared in <root>.testForBreak2' type=kotlin.collections.Iterator<kotlin.String> origin=null
body: BLOCK type=kotlin.Nothing origin=null
VAR name:s1 type:kotlin.String [val]
CALL 'public abstract fun next (): kotlin.String declared in kotlin.collections.Iterator' type=kotlin.String origin=null
VAR name:<range> type:kotlin.collections.List<kotlin.String> [val]
$this: GET_VAR 'val <iterator>: kotlin.collections.Iterator<kotlin.String> [val] declared in <root>.testForBreak2' type=kotlin.collections.Iterator<kotlin.String> origin=null
VAR name:<range> type:kotlin.collections.List<kotlin.String> [val]
GET_VAR 'ss: kotlin.collections.List<kotlin.String> declared in <root>.testForBreak2' type=kotlin.collections.List<kotlin.String> origin=null
VAR name:<iterator> type:kotlin.collections.Iterator<kotlin.String> [val]
CALL 'public abstract fun iterator (): kotlin.collections.Iterator<kotlin.String> declared in kotlin.collections.List' type=kotlin.collections.Iterator<kotlin.String> origin=null
$this: GET_VAR 'val <range>: kotlin.collections.List<kotlin.String> [val] declared in <root>.testForBreak2' type=kotlin.collections.List<kotlin.String> origin=null
WHILE label=INNER origin=FOR_LOOP_INNER_WHILE
condition: CALL 'public abstract fun hasNext (): kotlin.Boolean declared in kotlin.collections.Iterator' type=kotlin.Boolean origin=null
$this: GET_VAR 'val <iterator>: kotlin.collections.Iterator<kotlin.String> [val] declared in <root>.testForBreak2' type=kotlin.collections.Iterator<kotlin.String> origin=null
body: BLOCK type=kotlin.Nothing origin=null
VAR name:s2 type:kotlin.String [val]
CALL 'public abstract fun next (): kotlin.String declared in kotlin.collections.Iterator' type=kotlin.String origin=null
$this: GET_VAR 'val <iterator>: kotlin.collections.Iterator<kotlin.String> [val] declared in <root>.testForBreak2' type=kotlin.collections.Iterator<kotlin.String> origin=null
BREAK label=OUTER loop.label=OUTER
BREAK label=INNER loop.label=INNER
BREAK label=null loop.label=INNER
@@ -44,11 +53,14 @@ FILE fqName:<root> fileName:/forWithBreakContinue.kt
GET_VAR 'ss: kotlin.collections.List<kotlin.String> declared in <root>.testForContinue1' type=kotlin.collections.List<kotlin.String> origin=null
VAR name:<iterator> type:kotlin.collections.Iterator<kotlin.String> [val]
CALL 'public abstract fun iterator (): kotlin.collections.Iterator<kotlin.String> declared in kotlin.collections.List' type=kotlin.collections.Iterator<kotlin.String> origin=null
$this: GET_VAR 'val <range>: kotlin.collections.List<kotlin.String> [val] declared in <root>.testForContinue1' type=kotlin.collections.List<kotlin.String> origin=null
WHILE label=null origin=FOR_LOOP_INNER_WHILE
condition: CALL 'public abstract fun hasNext (): kotlin.Boolean declared in kotlin.collections.Iterator' type=kotlin.Boolean origin=null
$this: GET_VAR 'val <iterator>: kotlin.collections.Iterator<kotlin.String> [val] declared in <root>.testForContinue1' type=kotlin.collections.Iterator<kotlin.String> origin=null
body: BLOCK type=kotlin.Nothing origin=null
VAR name:s type:kotlin.String [val]
CALL 'public abstract fun next (): kotlin.String declared in kotlin.collections.Iterator' type=kotlin.String origin=null
$this: GET_VAR 'val <iterator>: kotlin.collections.Iterator<kotlin.String> [val] declared in <root>.testForContinue1' type=kotlin.collections.Iterator<kotlin.String> origin=null
CONTINUE label=null loop.label=null
FUN name:testForContinue2 visibility:public modality:FINAL <> (ss:kotlin.collections.List<kotlin.String>) returnType:kotlin.Unit
VALUE_PARAMETER name:ss index:0 type:kotlin.collections.List<kotlin.String>
@@ -57,20 +69,26 @@ FILE fqName:<root> fileName:/forWithBreakContinue.kt
GET_VAR 'ss: kotlin.collections.List<kotlin.String> declared in <root>.testForContinue2' type=kotlin.collections.List<kotlin.String> origin=null
VAR name:<iterator> type:kotlin.collections.Iterator<kotlin.String> [val]
CALL 'public abstract fun iterator (): kotlin.collections.Iterator<kotlin.String> declared in kotlin.collections.List' type=kotlin.collections.Iterator<kotlin.String> origin=null
$this: GET_VAR 'val <range>: kotlin.collections.List<kotlin.String> [val] declared in <root>.testForContinue2' type=kotlin.collections.List<kotlin.String> origin=null
WHILE label=OUTER origin=FOR_LOOP_INNER_WHILE
condition: CALL 'public abstract fun hasNext (): kotlin.Boolean declared in kotlin.collections.Iterator' type=kotlin.Boolean origin=null
$this: GET_VAR 'val <iterator>: kotlin.collections.Iterator<kotlin.String> [val] declared in <root>.testForContinue2' type=kotlin.collections.Iterator<kotlin.String> origin=null
body: BLOCK type=kotlin.Nothing origin=null
VAR name:s1 type:kotlin.String [val]
CALL 'public abstract fun next (): kotlin.String declared in kotlin.collections.Iterator' type=kotlin.String origin=null
VAR name:<range> type:kotlin.collections.List<kotlin.String> [val]
$this: GET_VAR 'val <iterator>: kotlin.collections.Iterator<kotlin.String> [val] declared in <root>.testForContinue2' type=kotlin.collections.Iterator<kotlin.String> origin=null
VAR name:<range> type:kotlin.collections.List<kotlin.String> [val]
GET_VAR 'ss: kotlin.collections.List<kotlin.String> declared in <root>.testForContinue2' type=kotlin.collections.List<kotlin.String> origin=null
VAR name:<iterator> type:kotlin.collections.Iterator<kotlin.String> [val]
CALL 'public abstract fun iterator (): kotlin.collections.Iterator<kotlin.String> declared in kotlin.collections.List' type=kotlin.collections.Iterator<kotlin.String> origin=null
$this: GET_VAR 'val <range>: kotlin.collections.List<kotlin.String> [val] declared in <root>.testForContinue2' type=kotlin.collections.List<kotlin.String> origin=null
WHILE label=INNER origin=FOR_LOOP_INNER_WHILE
condition: CALL 'public abstract fun hasNext (): kotlin.Boolean declared in kotlin.collections.Iterator' type=kotlin.Boolean origin=null
$this: GET_VAR 'val <iterator>: kotlin.collections.Iterator<kotlin.String> [val] declared in <root>.testForContinue2' type=kotlin.collections.Iterator<kotlin.String> origin=null
body: BLOCK type=kotlin.Nothing origin=null
VAR name:s2 type:kotlin.String [val]
CALL 'public abstract fun next (): kotlin.String declared in kotlin.collections.Iterator' type=kotlin.String origin=null
$this: GET_VAR 'val <iterator>: kotlin.collections.Iterator<kotlin.String> [val] declared in <root>.testForContinue2' type=kotlin.collections.Iterator<kotlin.String> origin=null
CONTINUE label=OUTER loop.label=OUTER
CONTINUE label=INNER loop.label=INNER
CONTINUE label=null loop.label=INNER