FIR: implement resolve of unqualified enum references in when

See KT-16768
This commit is contained in:
Mikhail Glukhikh
2022-02-17 14:13:14 +03:00
committed by teamcity
parent f35b4b7515
commit 981f8b1871
28 changed files with 820 additions and 34 deletions
@@ -0,0 +1,71 @@
FILE: nested.kt
public final enum class Outer : R|kotlin/Enum<Outer>| {
private constructor(): R|Outer| {
super<R|kotlin/Enum<Outer>|>()
}
public final static enum entry FIRST: R|Outer|
public final static enum entry SECOND: R|Outer|
public final static fun values(): R|kotlin/Array<Outer>| {
}
public final static fun valueOf(value: R|kotlin/String|): R|Outer| {
}
}
public final enum class Inner : R|kotlin/Enum<Inner>| {
private constructor(): R|Inner| {
super<R|kotlin/Enum<Inner>|>()
}
public final static enum entry SECOND: R|Inner|
public final static enum entry THIRD: R|Inner|
public final static fun values(): R|kotlin/Array<Inner>| {
}
public final static fun valueOf(value: R|kotlin/String|): R|Inner| {
}
}
public final fun foo(o: R|Outer|, i: R|Inner|): R|kotlin/Int| {
^foo when (R|<local>/o|) {
==($subj$, R|/Outer.FIRST|) -> {
Int(1)
}
==($subj$, R|/Outer.SECOND|) -> {
when (R|<local>/i|) {
==($subj$, R|/Inner.SECOND|) -> {
Int(2)
}
==($subj$, R|/Inner.THIRD|) -> {
Int(3)
}
}
}
}
}
public final fun bar(o: R|Outer|, i: R|Inner|): R|kotlin/Int| {
^bar when (R|<local>/o|) {
==($subj$, R|/Outer.FIRST|) -> {
Int(1)
}
==($subj$, R|/Outer.SECOND|) -> {
local final fun baz(): R|kotlin/Int| {
^baz when (R|<local>/i|) {
==($subj$, R|/Inner.SECOND|) -> {
Int(2)
}
==($subj$, R|/Inner.THIRD|) -> {
Int(3)
}
}
}
R|<local>/baz|()
}
}
}