Files
kotlin-fork/compiler/fir/analysis-tests/testData/resolveWithStdlib/problems/valueOfOrNull.fir.txt
T
Mikhail Glukhikh 7333589663 K1/K2: add Enum.entries unconditionally and filter them out in tower
Before this commit, we added Enum.entries only in case when
LanguageFeature.EnumEntries was ON (with an exception in K1/Java case).
In this commit we add Enum.entries unconditionally, and in case
the language feature is OFF we filter them out during tower resolve.
2022-08-12 09:35:27 +00:00

66 lines
2.8 KiB
Plaintext
Vendored

FILE: valueOfOrNull.kt
public final enum class SomeEnum : R|kotlin/Enum<SomeEnum>| {
private constructor(): R|SomeEnum| {
super<R|kotlin/Enum<SomeEnum>|>()
}
public final static enum entry ENTRY: R|SomeEnum|
public final static fun values(): R|kotlin/Array<SomeEnum>| {
}
public final static fun valueOf(value: R|kotlin/String|): R|SomeEnum| {
}
public final static val entries: R|kotlin/enums/EnumEntries<SomeEnum>|
public get(): R|kotlin/enums/EnumEntries<SomeEnum>|
}
public final fun foo(s: R|kotlin/String?|): R|kotlin/Unit| {
lval result: R|SomeEnum| = R|<local>/s|?.{ $subj$.R|kotlin/let|<R|kotlin/String|, R|SomeEnum?|>(<L> = let@fun <anonymous>(it: R|kotlin/String|): R|SomeEnum?| <inline=Inline, kind=EXACTLY_ONCE> {
^ R|/valueOfOrNull|<R|SomeEnum|>(R|<local>/it|)
}
) } ?: Q|SomeEnum|.R|/SomeEnum.ENTRY|
lval result2: R|SomeEnum| = R|<local>/s|?.{ $subj$.R|kotlin/let|<R|kotlin/String|, R|SomeEnum?|>(<L> = let@fun <anonymous>(it: R|kotlin/String|): R|SomeEnum?| <inline=Inline, kind=EXACTLY_ONCE> {
^ R|/valueOfOrNull|<R|SomeEnum|>(R|<local>/it|)
}
) } ?: Q|SomeEnum|.R|/SomeEnum.ENTRY|
lval result3: R|SomeEnum?| = when () {
==(R|<local>/s|, Null(null)) -> {
Q|SomeEnum|.R|/SomeEnum.ENTRY|
}
else -> {
R|/valueOfOrNull|<R|SomeEnum|>(R|<local>/s|)
}
}
lval result4: R|SomeEnum?| = when () {
==(R|<local>/s|, Null(null)) -> {
Q|SomeEnum|.R|/SomeEnum.ENTRY|
}
else -> {
R|<local>/s|.R|kotlin/let|<R|kotlin/String|, R|SomeEnum?|>(<L> = let@fun <anonymous>(it: R|kotlin/String|): R|SomeEnum?| <inline=Inline, kind=EXACTLY_ONCE> {
^ R|/valueOfOrNull|<R|SomeEnum|>(R|<local>/it|)
}
)
}
}
}
public final inline fun <reified E : R|kotlin/Enum<E>|> valueOfOrNull(value: R|kotlin/String|): R|E?| {
{
lval <iterator>: R|kotlin/collections/Iterator<E>| = R|kotlin/enumValues|<R|E|>().R|SubstitutionOverride<kotlin/Array.iterator: R|kotlin/collections/Iterator<E>|>|()
while(R|<local>/<iterator>|.R|SubstitutionOverride<kotlin/collections/Iterator.hasNext: R|kotlin/Boolean|>|()) {
lval enumValue: R|E| = R|<local>/<iterator>|.R|SubstitutionOverride<kotlin/collections/Iterator.next: R|E|>|()
when () {
==(R|<local>/enumValue|.R|SubstitutionOverride<kotlin/Enum.name: R|kotlin/String|>|, R|<local>/value|) -> {
^valueOfOrNull R|<local>/enumValue|
}
}
}
}
^valueOfOrNull Null(null)
}