diff --git a/compiler/testData/codegen/box/annotations/selfReferentialAnnotation.fir.ir.txt b/compiler/testData/codegen/box/annotations/selfReferentialAnnotation.fir.ir.txt index 9017d07e7fc..383d6f1976a 100644 --- a/compiler/testData/codegen/box/annotations/selfReferentialAnnotation.fir.ir.txt +++ b/compiler/testData/codegen/box/annotations/selfReferentialAnnotation.fir.ir.txt @@ -143,5 +143,22 @@ FILE fqName: fileName:/selfReferentialAnnotation.kt $this: VALUE_PARAMETER name: 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 (separator: kotlin.CharSequence, prefix: kotlin.CharSequence, postfix: kotlin.CharSequence, limit: kotlin.Int, truncated: kotlin.CharSequence, transform: kotlin.Function1?): kotlin.String declared in kotlin.collections' type=kotlin.String origin=null + : .MyRequiresOptIn.MyLevel + $receiver: CALL 'public final fun values (): kotlin.Array<.MyRequiresOptIn.MyLevel> declared in .MyRequiresOptIn.MyLevel' type=kotlin.Array<.MyRequiresOptIn.MyLevel> origin=null RETURN type=kotlin.Nothing from='public final fun box (): kotlin.String declared in ' - 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 .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 .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 .box' type=kotlin.String origin=null diff --git a/compiler/testData/codegen/box/annotations/selfReferentialAnnotation.fir.txt b/compiler/testData/codegen/box/annotations/selfReferentialAnnotation.fir.txt index 42217e20fbf..6c8d04ce777 100644 --- a/compiler/testData/codegen/box/annotations/selfReferentialAnnotation.fir.txt +++ b/compiler/testData/codegen/box/annotations/selfReferentialAnnotation.fir.txt @@ -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|() + ^box when (R|/result|) { + ==($subj$, String(WARNING, ERROR)) -> { + String(OK) + } + else -> { + (String(Fail: ), R|/result|) + } + } + } diff --git a/compiler/testData/codegen/box/annotations/selfReferentialAnnotation.ir.txt b/compiler/testData/codegen/box/annotations/selfReferentialAnnotation.ir.txt index 7ef873eec23..238879d394f 100644 --- a/compiler/testData/codegen/box/annotations/selfReferentialAnnotation.ir.txt +++ b/compiler/testData/codegen/box/annotations/selfReferentialAnnotation.ir.txt @@ -143,5 +143,22 @@ FILE fqName: fileName:/selfReferentialAnnotation.kt $this: VALUE_PARAMETER name: 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 (separator: kotlin.CharSequence, prefix: kotlin.CharSequence, postfix: kotlin.CharSequence, limit: kotlin.Int, truncated: kotlin.CharSequence, transform: kotlin.Function1?): kotlin.String declared in kotlin.collections' type=kotlin.String origin=null + : .MyRequiresOptIn.MyLevel + $receiver: CALL 'public final fun values (): kotlin.Array<.MyRequiresOptIn.MyLevel> declared in .MyRequiresOptIn.MyLevel' type=kotlin.Array<.MyRequiresOptIn.MyLevel> origin=null RETURN type=kotlin.Nothing from='public final fun box (): kotlin.String declared in ' - 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 .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 .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 .box' type=kotlin.String origin=null diff --git a/compiler/testData/codegen/box/annotations/selfReferentialAnnotation.kt b/compiler/testData/codegen/box/annotations/selfReferentialAnnotation.kt index 4b8adc554f0..79c6324c908 100644 --- a/compiler/testData/codegen/box/annotations/selfReferentialAnnotation.kt +++ b/compiler/testData/codegen/box/annotations/selfReferentialAnnotation.kt @@ -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" \ No newline at end of file +fun box(): String { + val result = MyRequiresOptIn.MyLevel.values().joinToString() + return when (result) { + "WARNING, ERROR" -> "OK" + else -> "Fail: $result" + } +}