[Test] Reproduce KT-65937

This commit is contained in:
Dmitriy Novozhilov
2024-02-21 10:44:52 +02:00
committed by Space Team
parent cc2dcf0078
commit 3bf0a11ced
4 changed files with 55 additions and 4 deletions
@@ -143,5 +143,22 @@ FILE fqName:<root> fileName:/selfReferentialAnnotation.kt
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN name:box visibility:public modality:FINAL <> () returnType:kotlin.String
BLOCK_BODY
VAR name:result type:kotlin.String [val]
CALL 'public final fun joinToString <T> (separator: kotlin.CharSequence, prefix: kotlin.CharSequence, postfix: kotlin.CharSequence, limit: kotlin.Int, truncated: kotlin.CharSequence, transform: kotlin.Function1<T of kotlin.collections.joinToString, kotlin.CharSequence>?): kotlin.String declared in kotlin.collections' type=kotlin.String origin=null
<T>: <root>.MyRequiresOptIn.MyLevel
$receiver: CALL 'public final fun values (): kotlin.Array<<root>.MyRequiresOptIn.MyLevel> declared in <root>.MyRequiresOptIn.MyLevel' type=kotlin.Array<<root>.MyRequiresOptIn.MyLevel> origin=null
RETURN type=kotlin.Nothing from='public final fun box (): kotlin.String declared in <root>'
CONST String type=kotlin.String value="OK"
BLOCK type=kotlin.String origin=WHEN
VAR IR_TEMPORARY_VARIABLE name:tmp_0 type:kotlin.String [val]
GET_VAR 'val result: kotlin.String declared in <root>.box' type=kotlin.String origin=null
WHEN type=kotlin.String origin=WHEN
BRANCH
if: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EQEQ
arg0: GET_VAR 'val tmp_0: kotlin.String declared in <root>.box' type=kotlin.String origin=null
arg1: CONST String type=kotlin.String value="WARNING, ERROR"
then: CONST String type=kotlin.String value="OK"
BRANCH
if: CONST Boolean type=kotlin.Boolean value=true
then: STRING_CONCATENATION type=kotlin.String
CONST String type=kotlin.String value="Fail: "
GET_VAR 'val result: kotlin.String declared in <root>.box' type=kotlin.String origin=null
@@ -39,5 +39,14 @@ FILE: selfReferentialAnnotation.kt
}
public final fun box(): R|kotlin/String| {
^box String(OK)
lval result: R|kotlin/String| = Q|MyRequiresOptIn.MyLevel|.R|/MyRequiresOptIn.MyLevel.values*s|().R|kotlin/collections/joinToString|<R|MyRequiresOptIn.MyLevel|>()
^box when (R|<local>/result|) {
==($subj$, String(WARNING, ERROR)) -> {
String(OK)
}
else -> {
<strcat>(String(Fail: ), R|<local>/result|)
}
}
}
@@ -143,5 +143,22 @@ FILE fqName:<root> fileName:/selfReferentialAnnotation.kt
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN name:box visibility:public modality:FINAL <> () returnType:kotlin.String
BLOCK_BODY
VAR name:result type:kotlin.String [val]
CALL 'public final fun joinToString <T> (separator: kotlin.CharSequence, prefix: kotlin.CharSequence, postfix: kotlin.CharSequence, limit: kotlin.Int, truncated: kotlin.CharSequence, transform: kotlin.Function1<T of kotlin.collections.joinToString, kotlin.CharSequence>?): kotlin.String declared in kotlin.collections' type=kotlin.String origin=null
<T>: <root>.MyRequiresOptIn.MyLevel
$receiver: CALL 'public final fun values (): kotlin.Array<<root>.MyRequiresOptIn.MyLevel> declared in <root>.MyRequiresOptIn.MyLevel' type=kotlin.Array<<root>.MyRequiresOptIn.MyLevel> origin=null
RETURN type=kotlin.Nothing from='public final fun box (): kotlin.String declared in <root>'
CONST String type=kotlin.String value="OK"
BLOCK type=kotlin.String origin=WHEN
VAR IR_TEMPORARY_VARIABLE name:tmp_0 type:kotlin.String [val]
GET_VAR 'val result: kotlin.String declared in <root>.box' type=kotlin.String origin=null
WHEN type=kotlin.String origin=WHEN
BRANCH
if: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EQEQ
arg0: GET_VAR 'val tmp_0: kotlin.String declared in <root>.box' type=kotlin.String origin=null
arg1: CONST String type=kotlin.String value="WARNING, ERROR"
then: CONST String type=kotlin.String value="OK"
BRANCH
if: CONST Boolean type=kotlin.Boolean value=true
then: STRING_CONCATENATION type=kotlin.String
CONST String type=kotlin.String value="Fail: "
GET_VAR 'val result: kotlin.String declared in <root>.box' type=kotlin.String origin=null
@@ -1,5 +1,7 @@
// FIR_DUMP
// DUMP_IR
// WITH_STDLIB
// IGNORE_BACKEND_K2: ANY
annotation class Ann(@Ann(1) val e: Int)
@@ -14,4 +16,10 @@ public annotation class MyRequiresOptIn(
}
}
fun box() = "OK"
fun box(): String {
val result = MyRequiresOptIn.MyLevel.values().joinToString()
return when (result) {
"WARNING, ERROR" -> "OK"
else -> "Fail: $result"
}
}