Files
kotlin-fork/compiler/testData/diagnostics/tests/controlStructures/nestedLoopsWithMultipleLabels.kt
T
Tianyu Geng fadde98a86 FIR: fix label stealling and crash with multiple labels
Consider the code below

```
fun test() {
  a@ b@ {
    {}
  }
}
```

Currently when the code is converted to FIR, label `b` is bound to the
outer lambda and `a` gets bound to the inner lambda because it's not
consumed. This is wrong and also leads transfromation to fail with
exceptions because of the unexpected consumption of `a`.

This change fixes the above issue by designating a specific node in the
AST as the allowed user of a label when the label is added.
2021-10-01 17:21:40 +03:00

10 lines
154 B
Kotlin
Vendored

// FIR_IDENTICAL
fun test() {
a@ b@ while(true) {
val f = {
<!NOT_A_FUNCTION_LABEL!>return@a<!>
}
break@b
}
}