diff --git a/SWIFT_EXPORT.md b/SWIFT_EXPORT.md index 30896f3e..1dbd101f 100644 --- a/SWIFT_EXPORT.md +++ b/SWIFT_EXPORT.md @@ -31,18 +31,6 @@ For now the plugin just clones your original functions and properties to prevent **Temporary workaround:** You should disable any relevant code in Swift if you would like to try Swift export. -## 🚨 `@Throws` suspend functions are unsupported - -Throwing suspend functions aren't supported yet. - -KMP-NativeCoroutines behaves as if a `@Throws(Exception::class)` annotation was added to all suspend functions. -Since throwing suspend functions aren't supported yet, any exception will currently cause a fatal crash. - -## 🚨 Cancellation isn't supported yet - -At the moment you can't cancel suspend functions. -Meaning your suspend functions will keep running until they either complete or fail. - ## ⚠️ `@ObjCName` is ignored The `@ObjCName` annotation is (currently) ignored by Swift export. diff --git a/build.gradle.kts b/build.gradle.kts index 4fef31d7..dfd243f7 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -13,7 +13,7 @@ buildscript { allprojects { group = "com.rickclephas.kmp" - version = "1.0.0" + version = "1.0.0-kotlin-2.3.20-Beta1" } apiValidation { diff --git a/kmp-nativecoroutines-compiler-embeddable/api/kmp-nativecoroutines-compiler-embeddable.api b/kmp-nativecoroutines-compiler-embeddable/api/kmp-nativecoroutines-compiler-embeddable.api index 76dad1b8..3646b143 100644 --- a/kmp-nativecoroutines-compiler-embeddable/api/kmp-nativecoroutines-compiler-embeddable.api +++ b/kmp-nativecoroutines-compiler-embeddable/api/kmp-nativecoroutines-compiler-embeddable.api @@ -106,6 +106,7 @@ public final class com/rickclephas/kmp/nativecoroutines/compiler/config/Suffixes public final class com/rickclephas/kmp/nativecoroutines/compiler/config/SwiftExport : java/lang/Enum { public static final field NO_FUNC_RETURN_TYPES Lcom/rickclephas/kmp/nativecoroutines/compiler/config/SwiftExport; public static final field NO_THROWS_SUSPEND_FUNC Lcom/rickclephas/kmp/nativecoroutines/compiler/config/SwiftExport; + public static final field SUSPEND_FUNC_SUPPORTED Lcom/rickclephas/kmp/nativecoroutines/compiler/config/SwiftExport; public static fun getEntries ()Lkotlin/enums/EnumEntries; public static fun valueOf (Ljava/lang/String;)Lcom/rickclephas/kmp/nativecoroutines/compiler/config/SwiftExport; public static fun values ()[Lcom/rickclephas/kmp/nativecoroutines/compiler/config/SwiftExport; diff --git a/kmp-nativecoroutines-compiler/api/kmp-nativecoroutines-compiler.api b/kmp-nativecoroutines-compiler/api/kmp-nativecoroutines-compiler.api index 76dad1b8..3646b143 100644 --- a/kmp-nativecoroutines-compiler/api/kmp-nativecoroutines-compiler.api +++ b/kmp-nativecoroutines-compiler/api/kmp-nativecoroutines-compiler.api @@ -106,6 +106,7 @@ public final class com/rickclephas/kmp/nativecoroutines/compiler/config/Suffixes public final class com/rickclephas/kmp/nativecoroutines/compiler/config/SwiftExport : java/lang/Enum { public static final field NO_FUNC_RETURN_TYPES Lcom/rickclephas/kmp/nativecoroutines/compiler/config/SwiftExport; public static final field NO_THROWS_SUSPEND_FUNC Lcom/rickclephas/kmp/nativecoroutines/compiler/config/SwiftExport; + public static final field SUSPEND_FUNC_SUPPORTED Lcom/rickclephas/kmp/nativecoroutines/compiler/config/SwiftExport; public static fun getEntries ()Lkotlin/enums/EnumEntries; public static fun valueOf (Ljava/lang/String;)Lcom/rickclephas/kmp/nativecoroutines/compiler/config/SwiftExport; public static fun values ()[Lcom/rickclephas/kmp/nativecoroutines/compiler/config/SwiftExport; diff --git a/kmp-nativecoroutines-compiler/src/main/kotlin/com/rickclephas/kmp/nativecoroutines/compiler/config/SwiftExport.kt b/kmp-nativecoroutines-compiler/src/main/kotlin/com/rickclephas/kmp/nativecoroutines/compiler/config/SwiftExport.kt index dafd1d3c..1dabb7b1 100644 --- a/kmp-nativecoroutines-compiler/src/main/kotlin/com/rickclephas/kmp/nativecoroutines/compiler/config/SwiftExport.kt +++ b/kmp-nativecoroutines-compiler/src/main/kotlin/com/rickclephas/kmp/nativecoroutines/compiler/config/SwiftExport.kt @@ -5,6 +5,7 @@ import org.jetbrains.kotlin.utils.filterToSetOrEmpty public enum class SwiftExport { NO_FUNC_RETURN_TYPES, NO_THROWS_SUSPEND_FUNC, + SUSPEND_FUNC_SUPPORTED, } public val SWIFT_EXPORT: ConfigOptionWithDefault> = diff --git a/kmp-nativecoroutines-compiler/src/main/kotlin/com/rickclephas/kmp/nativecoroutines/compiler/fir/codegen/NativeFunction.kt b/kmp-nativecoroutines-compiler/src/main/kotlin/com/rickclephas/kmp/nativecoroutines/compiler/fir/codegen/NativeFunction.kt index ddec5efb..06ab432e 100644 --- a/kmp-nativecoroutines-compiler/src/main/kotlin/com/rickclephas/kmp/nativecoroutines/compiler/fir/codegen/NativeFunction.kt +++ b/kmp-nativecoroutines-compiler/src/main/kotlin/com/rickclephas/kmp/nativecoroutines/compiler/fir/codegen/NativeFunction.kt @@ -42,7 +42,7 @@ internal fun FirExtension.buildNativeFunction( status = originalSymbol.getGeneratedDeclarationStatus(session) ?.copy(isInline = originalSymbol.isInline) ?: return null - if (SwiftExport.NO_FUNC_RETURN_TYPES in swiftExport) { + if (SwiftExport.NO_FUNC_RETURN_TYPES in swiftExport || SwiftExport.SUSPEND_FUNC_SUPPORTED in swiftExport) { status = status.copy(isSuspend = callableSignature.isSuspend) } isLocal = originalSymbol.isLocal @@ -85,7 +85,7 @@ internal fun FirExtension.buildNativeFunction( if (annotation.shouldRefineInSwift) { annotations.add(buildAnnotation(ClassIds.shouldRefineInSwift)) } - if (SwiftExport.NO_FUNC_RETURN_TYPES in swiftExport && + if ((SwiftExport.NO_FUNC_RETURN_TYPES in swiftExport || SwiftExport.SUSPEND_FUNC_SUPPORTED in swiftExport) && SwiftExport.NO_THROWS_SUSPEND_FUNC !in swiftExport && callableSignature.isSuspend ) { diff --git a/kmp-nativecoroutines-compiler/src/main/kotlin/com/rickclephas/kmp/nativecoroutines/compiler/fir/utils/NativeConeKotlinType.kt b/kmp-nativecoroutines-compiler/src/main/kotlin/com/rickclephas/kmp/nativecoroutines/compiler/fir/utils/NativeConeKotlinType.kt index d8ccea27..a586e9af 100644 --- a/kmp-nativecoroutines-compiler/src/main/kotlin/com/rickclephas/kmp/nativecoroutines/compiler/fir/utils/NativeConeKotlinType.kt +++ b/kmp-nativecoroutines-compiler/src/main/kotlin/com/rickclephas/kmp/nativecoroutines/compiler/fir/utils/NativeConeKotlinType.kt @@ -18,7 +18,7 @@ internal fun FirCallableSignature.getNativeType( val typeArgs = arrayOf(getRawType(type.valueType)) nativeType = ClassIds.nativeFlow.constructClassLikeType(typeArgs, type.isNullable) } - if (isSuspend) { + if (isSuspend && SwiftExport.SUSPEND_FUNC_SUPPORTED !in swiftExport) { val typeArgs = arrayOf(nativeType) nativeType = ClassIds.nativeSuspend.constructClassLikeType(typeArgs) } diff --git a/kmp-nativecoroutines-compiler/src/main/kotlin/com/rickclephas/kmp/nativecoroutines/compiler/ir/codegen/NativeFunction.kt b/kmp-nativecoroutines-compiler/src/main/kotlin/com/rickclephas/kmp/nativecoroutines/compiler/ir/codegen/NativeFunction.kt index aa854352..2eb92d1e 100644 --- a/kmp-nativecoroutines-compiler/src/main/kotlin/com/rickclephas/kmp/nativecoroutines/compiler/ir/codegen/NativeFunction.kt +++ b/kmp-nativecoroutines-compiler/src/main/kotlin/com/rickclephas/kmp/nativecoroutines/compiler/ir/codegen/NativeFunction.kt @@ -25,7 +25,7 @@ internal fun GeneratorContext.buildNativeFunctionBody( if (callableSignature.returnType is CallableSignature.Type.Flow) { expression = irCallAsNativeFlow(expression, coroutineScope) } - if (callableSignature.isSuspend) { + if (callableSignature.isSuspend && SwiftExport.SUSPEND_FUNC_SUPPORTED !in swiftExport) { expression = irCallNativeSuspend(expression, coroutineScope) } } diff --git a/kmp-nativecoroutines-compiler/src/test/generated/com/rickclephas/kmp/nativecoroutines/compiler/runners/FirLightTreeCodegenTestGenerated.java b/kmp-nativecoroutines-compiler/src/test/generated/com/rickclephas/kmp/nativecoroutines/compiler/runners/FirLightTreeCodegenTestGenerated.java index 981ac517..b731d651 100644 --- a/kmp-nativecoroutines-compiler/src/test/generated/com/rickclephas/kmp/nativecoroutines/compiler/runners/FirLightTreeCodegenTestGenerated.java +++ b/kmp-nativecoroutines-compiler/src/test/generated/com/rickclephas/kmp/nativecoroutines/compiler/runners/FirLightTreeCodegenTestGenerated.java @@ -130,4 +130,44 @@ public void testViewmodelscope() { runTest("src/testData/codegen/swift3/viewmodelscope.kt"); } } + + @Nested + @TestMetadata("src/testData/codegen/swift5") + @TestDataPath("$PROJECT_ROOT") + public class Swift5 { + @Test + public void testAllFilesPresentInSwift5() { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("src/testData/codegen/swift5"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.fir\\.kt$"), true); + } + + @Test + @TestMetadata("annotations.kt") + public void testAnnotations() { + runTest("src/testData/codegen/swift5/annotations.kt"); + } + + @Test + @TestMetadata("coroutinescope.kt") + public void testCoroutinescope() { + runTest("src/testData/codegen/swift5/coroutinescope.kt"); + } + + @Test + @TestMetadata("functions.kt") + public void testFunctions() { + runTest("src/testData/codegen/swift5/functions.kt"); + } + + @Test + @TestMetadata("properties.kt") + public void testProperties() { + runTest("src/testData/codegen/swift5/properties.kt"); + } + + @Test + @TestMetadata("viewmodelscope.kt") + public void testViewmodelscope() { + runTest("src/testData/codegen/swift5/viewmodelscope.kt"); + } + } } diff --git a/kmp-nativecoroutines-compiler/src/test/generated/com/rickclephas/kmp/nativecoroutines/compiler/runners/FirPsiCodegenTestGenerated.java b/kmp-nativecoroutines-compiler/src/test/generated/com/rickclephas/kmp/nativecoroutines/compiler/runners/FirPsiCodegenTestGenerated.java index b507b3db..f8268cac 100644 --- a/kmp-nativecoroutines-compiler/src/test/generated/com/rickclephas/kmp/nativecoroutines/compiler/runners/FirPsiCodegenTestGenerated.java +++ b/kmp-nativecoroutines-compiler/src/test/generated/com/rickclephas/kmp/nativecoroutines/compiler/runners/FirPsiCodegenTestGenerated.java @@ -130,4 +130,44 @@ public void testViewmodelscope() { runTest("src/testData/codegen/swift3/viewmodelscope.kt"); } } + + @Nested + @TestMetadata("src/testData/codegen/swift5") + @TestDataPath("$PROJECT_ROOT") + public class Swift5 { + @Test + public void testAllFilesPresentInSwift5() { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("src/testData/codegen/swift5"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.fir\\.kt$"), true); + } + + @Test + @TestMetadata("annotations.kt") + public void testAnnotations() { + runTest("src/testData/codegen/swift5/annotations.kt"); + } + + @Test + @TestMetadata("coroutinescope.kt") + public void testCoroutinescope() { + runTest("src/testData/codegen/swift5/coroutinescope.kt"); + } + + @Test + @TestMetadata("functions.kt") + public void testFunctions() { + runTest("src/testData/codegen/swift5/functions.kt"); + } + + @Test + @TestMetadata("properties.kt") + public void testProperties() { + runTest("src/testData/codegen/swift5/properties.kt"); + } + + @Test + @TestMetadata("viewmodelscope.kt") + public void testViewmodelscope() { + runTest("src/testData/codegen/swift5/viewmodelscope.kt"); + } + } } diff --git a/kmp-nativecoroutines-compiler/src/test/kotlin/com/rickclephas/kmp/nativecoroutines/compiler/runners/AbstractFirBaseCodegenTest.kt b/kmp-nativecoroutines-compiler/src/test/kotlin/com/rickclephas/kmp/nativecoroutines/compiler/runners/AbstractFirBaseCodegenTest.kt index e1752a80..16c35115 100644 --- a/kmp-nativecoroutines-compiler/src/test/kotlin/com/rickclephas/kmp/nativecoroutines/compiler/runners/AbstractFirBaseCodegenTest.kt +++ b/kmp-nativecoroutines-compiler/src/test/kotlin/com/rickclephas/kmp/nativecoroutines/compiler/runners/AbstractFirBaseCodegenTest.kt @@ -81,8 +81,9 @@ abstract class AbstractFirBaseCodegenTest( KmpNativeCoroutinesDirectives.STATE_FLOW_SUFFIX with "Flow" } listOf( - 0b01, // Kotlin 2.2.21 - 0b11, // Kotlin 2.3.0 + 0b001, // Kotlin 2.2.21 + 0b011, // Kotlin 2.3.0 + 0b101, // Kotlin 2.3.20 ).forEach { version -> forTestsMatching("swift$version/*") { defaultDirectives { diff --git a/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/annotations.box.txt b/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/annotations.box.txt new file mode 120000 index 00000000..082c17d0 --- /dev/null +++ b/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/annotations.box.txt @@ -0,0 +1 @@ +../annotations.box.txt \ No newline at end of file diff --git a/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/annotations.fir.ir.txt b/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/annotations.fir.ir.txt new file mode 100644 index 00000000..ce012bf3 --- /dev/null +++ b/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/annotations.fir.ir.txt @@ -0,0 +1,417 @@ +FILE fqName: fileName:/__GENERATED__CALLABLES__.kt + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:deprecatedProperty4Value visibility:public modality:FINAL [var] + FIELD PROPERTY_BACKING_FIELD name:deprecatedProperty4Value type:kotlin.String visibility:private [static] + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlin.String + annotations: + Deprecated(message = "This is deprecated 7", replaceWith = , level = ) + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:deprecatedProperty4Value visibility:public modality:FINAL [var] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_0 type:kotlinx.coroutines.flow.MutableStateFlow [val] + CALL 'public final fun (): kotlinx.coroutines.flow.MutableStateFlow declared in ' type=kotlinx.coroutines.flow.MutableStateFlow origin=null + RETURN type=kotlin.Nothing from='public final fun (): kotlin.String declared in ' + CALL 'public abstract fun (): T of kotlinx.coroutines.flow.StateFlow declared in kotlinx.coroutines.flow.StateFlow' type=kotlin.String origin=null + ARG : GET_VAR 'val tmp_0: kotlinx.coroutines.flow.MutableStateFlow declared in .' type=kotlinx.coroutines.flow.MutableStateFlow origin=null + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlin.Unit + VALUE_PARAMETER GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] kind:Regular name:value index:0 type:kotlin.String + annotations: + Deprecated(message = "This is deprecated 7", replaceWith = , level = ) + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:deprecatedProperty4Value visibility:public modality:FINAL [var] + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (value: kotlin.String): kotlin.Unit declared in ' + CALL 'public abstract fun (: T of kotlinx.coroutines.flow.MutableStateFlow): kotlin.Unit declared in kotlinx.coroutines.flow.MutableStateFlow' type=kotlin.Unit origin=null + ARG : CALL 'public final fun (): kotlinx.coroutines.flow.MutableStateFlow declared in ' type=kotlinx.coroutines.flow.MutableStateFlow origin=null + ARG : GET_VAR 'value: kotlin.String declared in .' type=kotlin.String origin=null + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:deprecatedFunction1Native visibility:public modality:FINAL returnType:kotlin.String [suspend] + annotations: + Deprecated(message = "This is deprecated 1", replaceWith = , level = ) + ObjCName(name = "deprecatedFunction1", swiftName = , exact = ) + Throws(exceptionClasses = [CLASS_REFERENCE 'CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:Exception modality:OPEN visibility:public superTypes:[kotlin.Throwable]' type=kotlin.reflect.KClass] type=kotlin.Array varargElementType=kotlin.Throwable) + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_1 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun deprecatedFunction1Native (): kotlin.String declared in ' + CALL 'public final fun deprecatedFunction1 (): kotlin.String declared in ' type=kotlin.String origin=null + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:deprecatedFunction2Native visibility:public modality:FINAL returnType:kotlin.String [suspend] + annotations: + Deprecated(message = "This is deprecated 2", replaceWith = , level = GET_ENUM 'ENUM_ENTRY IR_EXTERNAL_DECLARATION_STUB name:WARNING' type=kotlin.DeprecationLevel) + ObjCName(name = "deprecatedFunction2", swiftName = , exact = ) + Throws(exceptionClasses = [CLASS_REFERENCE 'CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:Exception modality:OPEN visibility:public superTypes:[kotlin.Throwable]' type=kotlin.reflect.KClass] type=kotlin.Array varargElementType=kotlin.Throwable) + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_2 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun deprecatedFunction2Native (): kotlin.String declared in ' + CALL 'public final fun deprecatedFunction2 (): kotlin.String declared in ' type=kotlin.String origin=null + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:deprecatedFunction3Native visibility:public modality:FINAL returnType:kotlin.String [suspend] + annotations: + Deprecated(message = "This is deprecated 3", replaceWith = , level = GET_ENUM 'ENUM_ENTRY IR_EXTERNAL_DECLARATION_STUB name:ERROR' type=kotlin.DeprecationLevel) + ObjCName(name = "deprecatedFunction3", swiftName = , exact = ) + Throws(exceptionClasses = [CLASS_REFERENCE 'CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:Exception modality:OPEN visibility:public superTypes:[kotlin.Throwable]' type=kotlin.reflect.KClass] type=kotlin.Array varargElementType=kotlin.Throwable) + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_3 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun deprecatedFunction3Native (): kotlin.String declared in ' + CALL 'public final fun deprecatedFunction3 (): kotlin.String declared in ' type=kotlin.String origin=null + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:objCNameFunction1Native visibility:public modality:FINAL returnType:kotlin.String [suspend] + annotations: + ObjCName(name = "objCNameFunction1ObjC", swiftName = , exact = ) + Throws(exceptionClasses = [CLASS_REFERENCE 'CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:Exception modality:OPEN visibility:public superTypes:[kotlin.Throwable]' type=kotlin.reflect.KClass] type=kotlin.Array varargElementType=kotlin.Throwable) + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_4 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun objCNameFunction1Native (): kotlin.String declared in ' + CALL 'public final fun objCNameFunction1 (): kotlin.String declared in ' type=kotlin.String origin=null + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:objCNameFunction2Native visibility:public modality:FINAL returnType:kotlin.String [suspend] + annotations: + ObjCName(name = "objCNameFunction2", swiftName = "objCNameFunction2Swift", exact = ) + Throws(exceptionClasses = [CLASS_REFERENCE 'CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:Exception modality:OPEN visibility:public superTypes:[kotlin.Throwable]' type=kotlin.reflect.KClass] type=kotlin.Array varargElementType=kotlin.Throwable) + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_5 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun objCNameFunction2Native (): kotlin.String declared in ' + CALL 'public final fun objCNameFunction2 (): kotlin.String declared in ' type=kotlin.String origin=null + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:objCNameFunction3Native visibility:public modality:FINAL returnType:kotlin.String [suspend] + annotations: + ObjCName(name = "objCNameFunction3ObjC", swiftName = "objCNameFunction3Swift", exact = ) + Throws(exceptionClasses = [CLASS_REFERENCE 'CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:Exception modality:OPEN visibility:public superTypes:[kotlin.Throwable]' type=kotlin.reflect.KClass] type=kotlin.Array varargElementType=kotlin.Throwable) + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_6 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun objCNameFunction3Native (): kotlin.String declared in ' + CALL 'public final fun objCNameFunction3 (): kotlin.String declared in ' type=kotlin.String origin=null + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:objCNameFunctionParameterNative visibility:public modality:FINAL returnType:kotlin.String [suspend] + VALUE_PARAMETER GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] kind:Regular name:value index:0 type:kotlin.String + annotations: + ObjCName(name = "valueObjC", swiftName = , exact = ) + annotations: + ObjCName(name = "objCNameFunctionParameter", swiftName = , exact = ) + Throws(exceptionClasses = [CLASS_REFERENCE 'CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:Exception modality:OPEN visibility:public superTypes:[kotlin.Throwable]' type=kotlin.reflect.KClass] type=kotlin.Array varargElementType=kotlin.Throwable) + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_7 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun objCNameFunctionParameterNative (value: kotlin.String): kotlin.String declared in ' + CALL 'public final fun objCNameFunctionParameter (value: kotlin.String): kotlin.String declared in ' type=kotlin.String origin=null + ARG value: GET_VAR 'value: kotlin.String declared in .objCNameFunctionParameterNative' type=kotlin.String origin=null + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:deprecatedProperty1Native visibility:public modality:FINAL [val] + annotations: + Deprecated(message = "This is deprecated 4", replaceWith = , level = ) + ObjCName(name = "deprecatedProperty1", swiftName = , exact = ) + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.Flow + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:deprecatedProperty1Native visibility:public modality:FINAL [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_8 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.Flow declared in ' + CALL 'public final fun (): kotlinx.coroutines.flow.Flow declared in ' type=kotlinx.coroutines.flow.Flow origin=null + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:deprecatedProperty2Native visibility:public modality:FINAL [val] + annotations: + Deprecated(message = "This is deprecated 5", replaceWith = , level = GET_ENUM 'ENUM_ENTRY IR_EXTERNAL_DECLARATION_STUB name:WARNING' type=kotlin.DeprecationLevel) + ObjCName(name = "deprecatedProperty2", swiftName = , exact = ) + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.Flow + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:deprecatedProperty2Native visibility:public modality:FINAL [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_9 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.Flow declared in ' + CALL 'public final fun (): kotlinx.coroutines.flow.Flow declared in ' type=kotlinx.coroutines.flow.Flow origin=null + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:deprecatedProperty3Native visibility:public modality:FINAL [val] + annotations: + Deprecated(message = "This is deprecated 6", replaceWith = , level = GET_ENUM 'ENUM_ENTRY IR_EXTERNAL_DECLARATION_STUB name:ERROR' type=kotlin.DeprecationLevel) + ObjCName(name = "deprecatedProperty3", swiftName = , exact = ) + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.Flow + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:deprecatedProperty3Native visibility:public modality:FINAL [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_10 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.Flow declared in ' + CALL 'public final fun (): kotlinx.coroutines.flow.Flow declared in ' type=kotlinx.coroutines.flow.Flow origin=null + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:deprecatedProperty4Native visibility:public modality:FINAL [val] + annotations: + ObjCName(name = "deprecatedProperty4", swiftName = , exact = ) + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.MutableStateFlow + annotations: + Deprecated(message = "This is deprecated 7", replaceWith = , level = ) + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:deprecatedProperty4Native visibility:public modality:FINAL [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_11 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.MutableStateFlow declared in ' + CALL 'public final fun (): kotlinx.coroutines.flow.MutableStateFlow declared in ' type=kotlinx.coroutines.flow.MutableStateFlow origin=null + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:objCNameProperty1Native visibility:public modality:FINAL [val] + annotations: + ObjCName(name = "objCNameProperty1ObjC", swiftName = , exact = ) + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.StateFlow + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:objCNameProperty1Native visibility:public modality:FINAL [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_12 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.StateFlow declared in ' + CALL 'public final fun (): kotlinx.coroutines.flow.StateFlow declared in ' type=kotlinx.coroutines.flow.StateFlow origin=null + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:objCNameProperty1Value visibility:public modality:FINAL [val] + annotations: + ObjCName(name = "objCNameProperty1ObjCValue", swiftName = , exact = ) + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlin.String + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:objCNameProperty1Value visibility:public modality:FINAL [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_13 type:kotlinx.coroutines.flow.StateFlow [val] + CALL 'public final fun (): kotlinx.coroutines.flow.StateFlow declared in ' type=kotlinx.coroutines.flow.StateFlow origin=null + RETURN type=kotlin.Nothing from='public final fun (): kotlin.String declared in ' + CALL 'public abstract fun (): T of kotlinx.coroutines.flow.StateFlow declared in kotlinx.coroutines.flow.StateFlow' type=kotlin.String origin=null + ARG : GET_VAR 'val tmp_13: kotlinx.coroutines.flow.StateFlow declared in .' type=kotlinx.coroutines.flow.StateFlow origin=null + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:objCNameProperty2Flow visibility:public modality:FINAL [val] + annotations: + ObjCName(name = "objCNameProperty2ObjCFlow", swiftName = , exact = ) + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.StateFlow + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:objCNameProperty2Flow visibility:public modality:FINAL [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_14 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.StateFlow declared in ' + CALL 'public final fun (): kotlinx.coroutines.flow.StateFlow declared in ' type=kotlinx.coroutines.flow.StateFlow origin=null + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:objCNameProperty2Value visibility:public modality:FINAL [val] + annotations: + ObjCName(name = "objCNameProperty2ObjC", swiftName = , exact = ) + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlin.String + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:objCNameProperty2Value visibility:public modality:FINAL [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_15 type:kotlinx.coroutines.flow.StateFlow [val] + CALL 'public final fun (): kotlinx.coroutines.flow.StateFlow declared in ' type=kotlinx.coroutines.flow.StateFlow origin=null + RETURN type=kotlin.Nothing from='public final fun (): kotlin.String declared in ' + CALL 'public abstract fun (): T of kotlinx.coroutines.flow.StateFlow declared in kotlinx.coroutines.flow.StateFlow' type=kotlin.String origin=null + ARG : GET_VAR 'val tmp_15: kotlinx.coroutines.flow.StateFlow declared in .' type=kotlinx.coroutines.flow.StateFlow origin=null +FILE fqName: fileName:/annotations.kt + annotations: + Suppress(names = ["OPTIONAL_DECLARATION_USAGE_IN_NON_COMMON_SOURCE"] type=kotlin.Array varargElementType=kotlin.String) + PROPERTY name:deprecatedProperty1 visibility:public modality:FINAL [val] + annotations: + NativeCoroutines + Deprecated(message = "This is deprecated 4", replaceWith = , level = ) + FIELD PROPERTY_BACKING_FIELD name:deprecatedProperty1 type:kotlinx.coroutines.flow.Flow visibility:private [final,static] + EXPRESSION_BODY + CALL 'public final fun flowOf (value: T of kotlinx.coroutines.flow.flowOf): kotlinx.coroutines.flow.Flow declared in kotlinx.coroutines.flow' type=kotlinx.coroutines.flow.Flow origin=null + TYPE_ARG T: kotlin.String + ARG value: CONST String type=kotlin.String value="OK4" + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.Flow + correspondingProperty: PROPERTY name:deprecatedProperty1 visibility:public modality:FINAL [val] + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.Flow declared in ' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:deprecatedProperty1 type:kotlinx.coroutines.flow.Flow visibility:private [final,static]' type=kotlinx.coroutines.flow.Flow origin=null + PROPERTY name:deprecatedProperty2 visibility:public modality:FINAL [val] + annotations: + NativeCoroutines + Deprecated(message = "This is deprecated 5", replaceWith = , level = GET_ENUM 'ENUM_ENTRY IR_EXTERNAL_DECLARATION_STUB name:WARNING' type=kotlin.DeprecationLevel) + FIELD PROPERTY_BACKING_FIELD name:deprecatedProperty2 type:kotlinx.coroutines.flow.Flow visibility:private [final,static] + EXPRESSION_BODY + CALL 'public final fun flowOf (value: T of kotlinx.coroutines.flow.flowOf): kotlinx.coroutines.flow.Flow declared in kotlinx.coroutines.flow' type=kotlinx.coroutines.flow.Flow origin=null + TYPE_ARG T: kotlin.String + ARG value: CONST String type=kotlin.String value="OK5" + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.Flow + correspondingProperty: PROPERTY name:deprecatedProperty2 visibility:public modality:FINAL [val] + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.Flow declared in ' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:deprecatedProperty2 type:kotlinx.coroutines.flow.Flow visibility:private [final,static]' type=kotlinx.coroutines.flow.Flow origin=null + PROPERTY name:deprecatedProperty3 visibility:public modality:FINAL [val] + annotations: + NativeCoroutines + Deprecated(message = "This is deprecated 6", replaceWith = ReplaceWith(expression = "deprecatedProperty2", imports = [] type=kotlin.Array varargElementType=kotlin.String), level = GET_ENUM 'ENUM_ENTRY IR_EXTERNAL_DECLARATION_STUB name:ERROR' type=kotlin.DeprecationLevel) + FIELD PROPERTY_BACKING_FIELD name:deprecatedProperty3 type:kotlinx.coroutines.flow.Flow visibility:private [final,static] + EXPRESSION_BODY + CALL 'public final fun flowOf (value: T of kotlinx.coroutines.flow.flowOf): kotlinx.coroutines.flow.Flow declared in kotlinx.coroutines.flow' type=kotlinx.coroutines.flow.Flow origin=null + TYPE_ARG T: kotlin.String + ARG value: CONST String type=kotlin.String value="OK6" + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.Flow + correspondingProperty: PROPERTY name:deprecatedProperty3 visibility:public modality:FINAL [val] + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.Flow declared in ' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:deprecatedProperty3 type:kotlinx.coroutines.flow.Flow visibility:private [final,static]' type=kotlinx.coroutines.flow.Flow origin=null + PROPERTY name:deprecatedProperty4 visibility:public modality:FINAL [val] + annotations: + NativeCoroutines + FIELD PROPERTY_BACKING_FIELD name:deprecatedProperty4 type:kotlinx.coroutines.flow.MutableStateFlow visibility:private [final,static] + EXPRESSION_BODY + CALL 'public final fun MutableStateFlow (value: T of kotlinx.coroutines.flow.MutableStateFlow): kotlinx.coroutines.flow.MutableStateFlow declared in kotlinx.coroutines.flow' type=kotlinx.coroutines.flow.MutableStateFlow origin=null + TYPE_ARG T: kotlin.String + ARG value: CONST String type=kotlin.String value="OK7" + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.MutableStateFlow + annotations: + Deprecated(message = "This is deprecated 7", replaceWith = , level = ) + correspondingProperty: PROPERTY name:deprecatedProperty4 visibility:public modality:FINAL [val] + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.MutableStateFlow declared in ' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:deprecatedProperty4 type:kotlinx.coroutines.flow.MutableStateFlow visibility:private [final,static]' type=kotlinx.coroutines.flow.MutableStateFlow origin=null + PROPERTY name:objCNameProperty1 visibility:public modality:FINAL [val] + annotations: + NativeCoroutines + OptIn(markerClass = [CLASS_REFERENCE 'CLASS IR_EXTERNAL_DECLARATION_STUB ANNOTATION_CLASS name:ExperimentalObjCName modality:OPEN visibility:public superTypes:[kotlin.Annotation]' type=kotlin.reflect.KClass] type=kotlin.Array> varargElementType=kotlin.reflect.KClass) + ObjCName(name = "objCNameProperty1ObjC", swiftName = , exact = ) + FIELD PROPERTY_BACKING_FIELD name:objCNameProperty1 type:kotlinx.coroutines.flow.StateFlow visibility:private [final,static] + EXPRESSION_BODY + CALL 'public final fun MutableStateFlow (value: T of kotlinx.coroutines.flow.MutableStateFlow): kotlinx.coroutines.flow.MutableStateFlow declared in kotlinx.coroutines.flow' type=kotlinx.coroutines.flow.MutableStateFlow origin=null + TYPE_ARG T: kotlin.String + ARG value: CONST String type=kotlin.String value="OK11" + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.StateFlow + correspondingProperty: PROPERTY name:objCNameProperty1 visibility:public modality:FINAL [val] + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.StateFlow declared in ' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:objCNameProperty1 type:kotlinx.coroutines.flow.StateFlow visibility:private [final,static]' type=kotlinx.coroutines.flow.StateFlow origin=null + PROPERTY name:objCNameProperty2 visibility:public modality:FINAL [val] + annotations: + NativeCoroutinesState + OptIn(markerClass = [CLASS_REFERENCE 'CLASS IR_EXTERNAL_DECLARATION_STUB ANNOTATION_CLASS name:ExperimentalObjCName modality:OPEN visibility:public superTypes:[kotlin.Annotation]' type=kotlin.reflect.KClass] type=kotlin.Array> varargElementType=kotlin.reflect.KClass) + ObjCName(name = "objCNameProperty2ObjC", swiftName = , exact = ) + FIELD PROPERTY_BACKING_FIELD name:objCNameProperty2 type:kotlinx.coroutines.flow.StateFlow visibility:private [final,static] + EXPRESSION_BODY + CALL 'public final fun MutableStateFlow (value: T of kotlinx.coroutines.flow.MutableStateFlow): kotlinx.coroutines.flow.MutableStateFlow declared in kotlinx.coroutines.flow' type=kotlinx.coroutines.flow.MutableStateFlow origin=null + TYPE_ARG T: kotlin.String + ARG value: CONST String type=kotlin.String value="OK12" + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.StateFlow + correspondingProperty: PROPERTY name:objCNameProperty2 visibility:public modality:FINAL [val] + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.StateFlow declared in ' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:objCNameProperty2 type:kotlinx.coroutines.flow.StateFlow visibility:private [final,static]' type=kotlinx.coroutines.flow.StateFlow origin=null + FUN name:box visibility:public modality:FINAL returnType:kotlin.String + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun box (): kotlin.String declared in ' + CALL 'public final fun runBoxTest (action: @[ExtensionFunctionType] kotlin.coroutines.SuspendFunction1): kotlin.String declared in com.rickclephas.kmp.nativecoroutines' type=kotlin.String origin=null + ARG action: FUN_EXPR type=@[ExtensionFunctionType] kotlin.coroutines.SuspendFunction1 origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL returnType:kotlin.Unit [suspend] + VALUE_PARAMETER kind:ExtensionReceiver name:$this$runBoxTest index:0 type:com.rickclephas.kmp.nativecoroutines.BoxTest + BLOCK_BODY + CALL 'public final fun await (result: kotlin.coroutines.SuspendFunction0): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG result: FUN_EXPR type=kotlin.coroutines.SuspendFunction0 origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL returnType:kotlin.String [suspend] + BLOCK_BODY + RETURN type=kotlin.Nothing from='local final fun (): kotlin.String declared in .box.' + CALL 'public final fun deprecatedFunction1Native (): kotlin.String declared in ' type=kotlin.String origin=null + CALL 'public final fun await (result: kotlin.coroutines.SuspendFunction0): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG result: FUN_EXPR type=kotlin.coroutines.SuspendFunction0 origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL returnType:kotlin.String [suspend] + BLOCK_BODY + RETURN type=kotlin.Nothing from='local final fun (): kotlin.String declared in .box.' + CALL 'public final fun deprecatedFunction2Native (): kotlin.String declared in ' type=kotlin.String origin=null + CALL 'public final fun collect (flow: kotlinx.coroutines.flow.Flow, maxValues: kotlin.Int?): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG flow: CALL 'public final fun (): kotlinx.coroutines.flow.Flow declared in ' type=kotlinx.coroutines.flow.Flow origin=GET_PROPERTY + CALL 'public final fun collect (flow: kotlinx.coroutines.flow.Flow, maxValues: kotlin.Int?): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG flow: CALL 'public final fun (): kotlinx.coroutines.flow.Flow declared in ' type=kotlinx.coroutines.flow.Flow origin=GET_PROPERTY + CALL 'public final fun collect (flow: kotlinx.coroutines.flow.Flow, maxValues: kotlin.Int?): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG flow: CALL 'public final fun (): kotlinx.coroutines.flow.MutableStateFlow declared in ' type=kotlinx.coroutines.flow.MutableStateFlow origin=GET_PROPERTY + ARG maxValues: CONST Int type=kotlin.Int value=1 + CALL 'public final fun value (value: T of com.rickclephas.kmp.nativecoroutines.BoxTest.value): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG value: CALL 'public final fun (): kotlin.String declared in ' type=kotlin.String origin=GET_PROPERTY + CALL 'public final fun await (result: kotlin.coroutines.SuspendFunction0): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG result: FUN_EXPR type=kotlin.coroutines.SuspendFunction0 origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL returnType:kotlin.String [suspend] + BLOCK_BODY + RETURN type=kotlin.Nothing from='local final fun (): kotlin.String declared in .box.' + CALL 'public final fun objCNameFunction1Native (): kotlin.String declared in ' type=kotlin.String origin=null + CALL 'public final fun await (result: kotlin.coroutines.SuspendFunction0): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG result: FUN_EXPR type=kotlin.coroutines.SuspendFunction0 origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL returnType:kotlin.String [suspend] + BLOCK_BODY + RETURN type=kotlin.Nothing from='local final fun (): kotlin.String declared in .box.' + CALL 'public final fun objCNameFunction2Native (): kotlin.String declared in ' type=kotlin.String origin=null + CALL 'public final fun await (result: kotlin.coroutines.SuspendFunction0): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG result: FUN_EXPR type=kotlin.coroutines.SuspendFunction0 origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL returnType:kotlin.String [suspend] + BLOCK_BODY + RETURN type=kotlin.Nothing from='local final fun (): kotlin.String declared in .box.' + CALL 'public final fun objCNameFunction3Native (): kotlin.String declared in ' type=kotlin.String origin=null + CALL 'public final fun collect (flow: kotlinx.coroutines.flow.Flow, maxValues: kotlin.Int?): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG flow: CALL 'public final fun (): kotlinx.coroutines.flow.StateFlow declared in ' type=kotlinx.coroutines.flow.StateFlow origin=GET_PROPERTY + ARG maxValues: CONST Int type=kotlin.Int value=1 + CALL 'public final fun value (value: T of com.rickclephas.kmp.nativecoroutines.BoxTest.value): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG value: CALL 'public final fun (): kotlin.String declared in ' type=kotlin.String origin=GET_PROPERTY + CALL 'public final fun collect (flow: kotlinx.coroutines.flow.Flow, maxValues: kotlin.Int?): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG flow: CALL 'public final fun (): kotlinx.coroutines.flow.StateFlow declared in ' type=kotlinx.coroutines.flow.StateFlow origin=GET_PROPERTY + ARG maxValues: CONST Int type=kotlin.Int value=1 + CALL 'public final fun value (value: T of com.rickclephas.kmp.nativecoroutines.BoxTest.value): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG value: CALL 'public final fun (): kotlin.String declared in ' type=kotlin.String origin=GET_PROPERTY + CALL 'public final fun await (result: kotlin.coroutines.SuspendFunction0): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG result: FUN_EXPR type=kotlin.coroutines.SuspendFunction0 origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL returnType:kotlin.String [suspend] + BLOCK_BODY + RETURN type=kotlin.Nothing from='local final fun (): kotlin.String declared in .box.' + CALL 'public final fun objCNameFunctionParameterNative (value: kotlin.String): kotlin.String declared in ' type=kotlin.String origin=null + ARG value: CONST String type=kotlin.String value="OK13" + FUN name:deprecatedFunction1 visibility:public modality:FINAL returnType:kotlin.String [suspend] + annotations: + NativeCoroutines + Deprecated(message = "This is deprecated 1", replaceWith = , level = ) + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun deprecatedFunction1 (): kotlin.String declared in ' + CONST String type=kotlin.String value="OK1" + FUN name:deprecatedFunction2 visibility:public modality:FINAL returnType:kotlin.String [suspend] + annotations: + NativeCoroutines + Deprecated(message = "This is deprecated 2", replaceWith = , level = GET_ENUM 'ENUM_ENTRY IR_EXTERNAL_DECLARATION_STUB name:WARNING' type=kotlin.DeprecationLevel) + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun deprecatedFunction2 (): kotlin.String declared in ' + CONST String type=kotlin.String value="OK2" + FUN name:deprecatedFunction3 visibility:public modality:FINAL returnType:kotlin.String [suspend] + annotations: + NativeCoroutines + Deprecated(message = "This is deprecated 3", replaceWith = ReplaceWith(expression = "deprecatedFunction2()", imports = [] type=kotlin.Array varargElementType=kotlin.String), level = GET_ENUM 'ENUM_ENTRY IR_EXTERNAL_DECLARATION_STUB name:ERROR' type=kotlin.DeprecationLevel) + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun deprecatedFunction3 (): kotlin.String declared in ' + CONST String type=kotlin.String value="OK3" + FUN name:objCNameFunction1 visibility:public modality:FINAL returnType:kotlin.String [suspend] + annotations: + NativeCoroutines + OptIn(markerClass = [CLASS_REFERENCE 'CLASS IR_EXTERNAL_DECLARATION_STUB ANNOTATION_CLASS name:ExperimentalObjCName modality:OPEN visibility:public superTypes:[kotlin.Annotation]' type=kotlin.reflect.KClass] type=kotlin.Array> varargElementType=kotlin.reflect.KClass) + ObjCName(name = "objCNameFunction1ObjC", swiftName = , exact = ) + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun objCNameFunction1 (): kotlin.String declared in ' + CONST String type=kotlin.String value="OK8" + FUN name:objCNameFunction2 visibility:public modality:FINAL returnType:kotlin.String [suspend] + annotations: + NativeCoroutines + OptIn(markerClass = [CLASS_REFERENCE 'CLASS IR_EXTERNAL_DECLARATION_STUB ANNOTATION_CLASS name:ExperimentalObjCName modality:OPEN visibility:public superTypes:[kotlin.Annotation]' type=kotlin.reflect.KClass] type=kotlin.Array> varargElementType=kotlin.reflect.KClass) + ObjCName(name = , swiftName = "objCNameFunction2Swift", exact = ) + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun objCNameFunction2 (): kotlin.String declared in ' + CONST String type=kotlin.String value="OK9" + FUN name:objCNameFunction3 visibility:public modality:FINAL returnType:kotlin.String [suspend] + annotations: + NativeCoroutines + OptIn(markerClass = [CLASS_REFERENCE 'CLASS IR_EXTERNAL_DECLARATION_STUB ANNOTATION_CLASS name:ExperimentalObjCName modality:OPEN visibility:public superTypes:[kotlin.Annotation]' type=kotlin.reflect.KClass] type=kotlin.Array> varargElementType=kotlin.reflect.KClass) + ObjCName(name = "objCNameFunction3ObjC", swiftName = "objCNameFunction3Swift", exact = ) + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun objCNameFunction3 (): kotlin.String declared in ' + CONST String type=kotlin.String value="OK10" + FUN name:objCNameFunctionParameter visibility:public modality:FINAL returnType:kotlin.String [suspend] + VALUE_PARAMETER kind:Regular name:value index:0 type:kotlin.String + annotations: + ObjCName(name = "valueObjC", swiftName = , exact = ) + annotations: + NativeCoroutines + OptIn(markerClass = [CLASS_REFERENCE 'CLASS IR_EXTERNAL_DECLARATION_STUB ANNOTATION_CLASS name:ExperimentalObjCName modality:OPEN visibility:public superTypes:[kotlin.Annotation]' type=kotlin.reflect.KClass] type=kotlin.Array> varargElementType=kotlin.reflect.KClass) + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun objCNameFunctionParameter (value: kotlin.String): kotlin.String declared in ' + GET_VAR 'value: kotlin.String declared in .objCNameFunctionParameter' type=kotlin.String origin=null diff --git a/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/annotations.fir.kt.txt b/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/annotations.fir.kt.txt new file mode 100644 index 00000000..270dbd65 --- /dev/null +++ b/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/annotations.fir.kt.txt @@ -0,0 +1,248 @@ +// FILE: __GENERATED__CALLABLES__.kt + +var deprecatedProperty4Value: String + @Deprecated(message = "This is deprecated 7") + get(): String { + val tmp_0: MutableStateFlow = () + return tmp_0.() + } + @Deprecated(message = "This is deprecated 7") + set(value: String) { + return ().( = value) + } + +@Deprecated(message = "This is deprecated 1") +@ObjCName(name = "deprecatedFunction1") +@Throws(exceptionClasses = [Exception::class]) +suspend fun deprecatedFunction1Native(): String { + val tmp_1: CoroutineScope? = null + return deprecatedFunction1() +} + +@Deprecated(message = "This is deprecated 2", level = DeprecationLevel.WARNING) +@ObjCName(name = "deprecatedFunction2") +@Throws(exceptionClasses = [Exception::class]) +suspend fun deprecatedFunction2Native(): String { + val tmp_2: CoroutineScope? = null + return deprecatedFunction2() +} + +@Deprecated(message = "This is deprecated 3", level = DeprecationLevel.ERROR) +@ObjCName(name = "deprecatedFunction3") +@Throws(exceptionClasses = [Exception::class]) +suspend fun deprecatedFunction3Native(): String { + val tmp_3: CoroutineScope? = null + return deprecatedFunction3() +} + +@ObjCName(name = "objCNameFunction1ObjC") +@Throws(exceptionClasses = [Exception::class]) +suspend fun objCNameFunction1Native(): String { + val tmp_4: CoroutineScope? = null + return objCNameFunction1() +} + +@ObjCName(name = "objCNameFunction2", swiftName = "objCNameFunction2Swift") +@Throws(exceptionClasses = [Exception::class]) +suspend fun objCNameFunction2Native(): String { + val tmp_5: CoroutineScope? = null + return objCNameFunction2() +} + +@ObjCName(name = "objCNameFunction3ObjC", swiftName = "objCNameFunction3Swift") +@Throws(exceptionClasses = [Exception::class]) +suspend fun objCNameFunction3Native(): String { + val tmp_6: CoroutineScope? = null + return objCNameFunction3() +} + +@ObjCName(name = "objCNameFunctionParameter") +@Throws(exceptionClasses = [Exception::class]) +suspend fun objCNameFunctionParameterNative(@ObjCName(name = "valueObjC") value: String): String { + val tmp_7: CoroutineScope? = null + return objCNameFunctionParameter(value = value) +} + +@Deprecated(message = "This is deprecated 4") +@ObjCName(name = "deprecatedProperty1") +val deprecatedProperty1Native: Flow + get(): Flow { + val tmp_8: CoroutineScope? = null + return () + } + +@Deprecated(message = "This is deprecated 5", level = DeprecationLevel.WARNING) +@ObjCName(name = "deprecatedProperty2") +val deprecatedProperty2Native: Flow + get(): Flow { + val tmp_9: CoroutineScope? = null + return () + } + +@Deprecated(message = "This is deprecated 6", level = DeprecationLevel.ERROR) +@ObjCName(name = "deprecatedProperty3") +val deprecatedProperty3Native: Flow + get(): Flow { + val tmp_10: CoroutineScope? = null + return () + } + +@ObjCName(name = "deprecatedProperty4") +val deprecatedProperty4Native: MutableStateFlow + @Deprecated(message = "This is deprecated 7") + get(): MutableStateFlow { + val tmp_11: CoroutineScope? = null + return () + } + +@ObjCName(name = "objCNameProperty1ObjC") +val objCNameProperty1Native: StateFlow + get(): StateFlow { + val tmp_12: CoroutineScope? = null + return () + } + +@ObjCName(name = "objCNameProperty1ObjCValue") +val objCNameProperty1Value: String + get(): String { + val tmp_13: StateFlow = () + return tmp_13.() + } + +@ObjCName(name = "objCNameProperty2ObjCFlow") +val objCNameProperty2Flow: StateFlow + get(): StateFlow { + val tmp_14: CoroutineScope? = null + return () + } + +@ObjCName(name = "objCNameProperty2ObjC") +val objCNameProperty2Value: String + get(): String { + val tmp_15: StateFlow = () + return tmp_15.() + } + +// FILE: annotations.kt +@file:Suppress(names = ["OPTIONAL_DECLARATION_USAGE_IN_NON_COMMON_SOURCE"]) + +@NativeCoroutines +@Deprecated(message = "This is deprecated 4") +val deprecatedProperty1: Flow + field = flowOf(value = "OK4") + get + +@NativeCoroutines +@Deprecated(message = "This is deprecated 5", level = DeprecationLevel.WARNING) +val deprecatedProperty2: Flow + field = flowOf(value = "OK5") + get + +@NativeCoroutines +@Deprecated(message = "This is deprecated 6", replaceWith = ReplaceWith(expression = "deprecatedProperty2", imports = []), level = DeprecationLevel.ERROR) +val deprecatedProperty3: Flow + field = flowOf(value = "OK6") + get + +@NativeCoroutines +val deprecatedProperty4: MutableStateFlow + field = MutableStateFlow(value = "OK7") + @Deprecated(message = "This is deprecated 7") + get + +@NativeCoroutines +@OptIn(markerClass = [ExperimentalObjCName::class]) +@ObjCName(name = "objCNameProperty1ObjC") +val objCNameProperty1: StateFlow + field = MutableStateFlow(value = "OK11") + get + +@NativeCoroutinesState +@OptIn(markerClass = [ExperimentalObjCName::class]) +@ObjCName(name = "objCNameProperty2ObjC") +val objCNameProperty2: StateFlow + field = MutableStateFlow(value = "OK12") + get + +fun box(): String { + return runBoxTest(action = local suspend fun BoxTest.() { + $this$runBoxTest.await(result = local suspend fun (): String { + return deprecatedFunction1Native() + } +) + $this$runBoxTest.await(result = local suspend fun (): String { + return deprecatedFunction2Native() + } +) + $this$runBoxTest.collect(flow = ()) + $this$runBoxTest.collect(flow = ()) + $this$runBoxTest.collect(flow = (), maxValues = 1) + $this$runBoxTest.value(value = ()) + $this$runBoxTest.await(result = local suspend fun (): String { + return objCNameFunction1Native() + } +) + $this$runBoxTest.await(result = local suspend fun (): String { + return objCNameFunction2Native() + } +) + $this$runBoxTest.await(result = local suspend fun (): String { + return objCNameFunction3Native() + } +) + $this$runBoxTest.collect(flow = (), maxValues = 1) + $this$runBoxTest.value(value = ()) + $this$runBoxTest.collect(flow = (), maxValues = 1) + $this$runBoxTest.value(value = ()) + $this$runBoxTest.await(result = local suspend fun (): String { + return objCNameFunctionParameterNative(value = "OK13") + } +) + } +) +} + +@NativeCoroutines +@Deprecated(message = "This is deprecated 1") +suspend fun deprecatedFunction1(): String { + return "OK1" +} + +@NativeCoroutines +@Deprecated(message = "This is deprecated 2", level = DeprecationLevel.WARNING) +suspend fun deprecatedFunction2(): String { + return "OK2" +} + +@NativeCoroutines +@Deprecated(message = "This is deprecated 3", replaceWith = ReplaceWith(expression = "deprecatedFunction2()", imports = []), level = DeprecationLevel.ERROR) +suspend fun deprecatedFunction3(): String { + return "OK3" +} + +@NativeCoroutines +@OptIn(markerClass = [ExperimentalObjCName::class]) +@ObjCName(name = "objCNameFunction1ObjC") +suspend fun objCNameFunction1(): String { + return "OK8" +} + +@NativeCoroutines +@OptIn(markerClass = [ExperimentalObjCName::class]) +@ObjCName(swiftName = "objCNameFunction2Swift") +suspend fun objCNameFunction2(): String { + return "OK9" +} + +@NativeCoroutines +@OptIn(markerClass = [ExperimentalObjCName::class]) +@ObjCName(name = "objCNameFunction3ObjC", swiftName = "objCNameFunction3Swift") +suspend fun objCNameFunction3(): String { + return "OK10" +} + +@NativeCoroutines +@OptIn(markerClass = [ExperimentalObjCName::class]) +suspend fun objCNameFunctionParameter(@ObjCName(name = "valueObjC") value: String): String { + return value +} diff --git a/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/annotations.fir.txt b/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/annotations.fir.txt new file mode 100644 index 00000000..1734ee42 --- /dev/null +++ b/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/annotations.fir.txt @@ -0,0 +1,147 @@ +FILE: annotations.kt + @FILE:R|kotlin/Suppress|(names = vararg(String(OPTIONAL_DECLARATION_USAGE_IN_NON_COMMON_SOURCE))) + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() @R|kotlin/Deprecated|(message = String(This is deprecated 1)) public final suspend fun deprecatedFunction1(): R|kotlin/String| { + ^deprecatedFunction1 String(OK1) + } + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() @R|kotlin/Deprecated|(message = String(This is deprecated 2), level = Q|kotlin/DeprecationLevel|.R|kotlin/DeprecationLevel.WARNING|) public final suspend fun deprecatedFunction2(): R|kotlin/String| { + ^deprecatedFunction2 String(OK2) + } + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() @R|kotlin/Deprecated|(message = String(This is deprecated 3), replaceWith = R|kotlin/ReplaceWith.ReplaceWith|(String(deprecatedFunction2())), level = Q|kotlin/DeprecationLevel|.R|kotlin/DeprecationLevel.ERROR|) public final suspend fun deprecatedFunction3(): R|kotlin/String| { + ^deprecatedFunction3 String(OK3) + } + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() @R|kotlin/Deprecated|(message = String(This is deprecated 4)) public final val deprecatedProperty1: R|kotlinx/coroutines/flow/Flow| = R|kotlinx/coroutines/flow/flowOf|(String(OK4)) + public get(): R|kotlinx/coroutines/flow/Flow| + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() @R|kotlin/Deprecated|(message = String(This is deprecated 5), level = Q|kotlin/DeprecationLevel|.R|kotlin/DeprecationLevel.WARNING|) public final val deprecatedProperty2: R|kotlinx/coroutines/flow/Flow| = R|kotlinx/coroutines/flow/flowOf|(String(OK5)) + public get(): R|kotlinx/coroutines/flow/Flow| + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() @R|kotlin/Deprecated|(message = String(This is deprecated 6), replaceWith = R|kotlin/ReplaceWith.ReplaceWith|(String(deprecatedProperty2)), level = Q|kotlin/DeprecationLevel|.R|kotlin/DeprecationLevel.ERROR|) public final val deprecatedProperty3: R|kotlinx/coroutines/flow/Flow| = R|kotlinx/coroutines/flow/flowOf|(String(OK6)) + public get(): R|kotlinx/coroutines/flow/Flow| + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final val deprecatedProperty4: R|kotlinx/coroutines/flow/MutableStateFlow| = R|kotlinx/coroutines/flow/MutableStateFlow|(String(OK7)) + @PROPERTY_GETTER:R|kotlin/Deprecated|(message = String(This is deprecated 7)) public get(): R|kotlinx/coroutines/flow/MutableStateFlow| + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() @R|kotlin/OptIn|(markerClass = vararg((Q|kotlin/experimental/ExperimentalObjCName|))) @R|kotlin/native/ObjCName|(name = String(objCNameFunction1ObjC)) public final suspend fun objCNameFunction1(): R|kotlin/String| { + ^objCNameFunction1 String(OK8) + } + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() @R|kotlin/OptIn|(markerClass = vararg((Q|kotlin/experimental/ExperimentalObjCName|))) @R|kotlin/native/ObjCName|(swiftName = String(objCNameFunction2Swift)) public final suspend fun objCNameFunction2(): R|kotlin/String| { + ^objCNameFunction2 String(OK9) + } + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() @R|kotlin/OptIn|(markerClass = vararg((Q|kotlin/experimental/ExperimentalObjCName|))) @R|kotlin/native/ObjCName|(name = String(objCNameFunction3ObjC), swiftName = String(objCNameFunction3Swift)) public final suspend fun objCNameFunction3(): R|kotlin/String| { + ^objCNameFunction3 String(OK10) + } + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() @R|kotlin/OptIn|(markerClass = vararg((Q|kotlin/experimental/ExperimentalObjCName|))) @R|kotlin/native/ObjCName|(name = String(objCNameProperty1ObjC)) public final val objCNameProperty1: R|kotlinx/coroutines/flow/StateFlow| = R|kotlinx/coroutines/flow/MutableStateFlow|(String(OK11)) + public get(): R|kotlinx/coroutines/flow/StateFlow| + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutinesState|() @R|kotlin/OptIn|(markerClass = vararg((Q|kotlin/experimental/ExperimentalObjCName|))) @R|kotlin/native/ObjCName|(name = String(objCNameProperty2ObjC)) public final val objCNameProperty2: R|kotlinx/coroutines/flow/StateFlow| = R|kotlinx/coroutines/flow/MutableStateFlow|(String(OK12)) + public get(): R|kotlinx/coroutines/flow/StateFlow| + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() @R|kotlin/OptIn|(markerClass = vararg((Q|kotlin/experimental/ExperimentalObjCName|))) public final suspend fun objCNameFunctionParameter(@R|kotlin/native/ObjCName|(name = String(valueObjC)) value: R|kotlin/String|): R|kotlin/String| { + ^objCNameFunctionParameter R|/value| + } + public final fun box(): R|kotlin/String| { + ^box R|com/rickclephas/kmp/nativecoroutines/runBoxTest|( = runBoxTest@fun R|com/rickclephas/kmp/nativecoroutines/BoxTest|.(): R|kotlin/Unit| { + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.await|( = await@fun (): R|kotlin/String| { + ^ R|/deprecatedFunction1Native|() + } + ) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.await|( = await@fun (): R|kotlin/String| { + ^ R|/deprecatedFunction2Native|() + } + ) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.collect|(R|/deprecatedProperty1Native|) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.collect|(R|/deprecatedProperty2Native|) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.collect|(R|/deprecatedProperty4Native|, Int(1)) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.value|(R|/deprecatedProperty4Value|) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.await|( = await@fun (): R|kotlin/String| { + ^ R|/objCNameFunction1Native|() + } + ) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.await|( = await@fun (): R|kotlin/String| { + ^ R|/objCNameFunction2Native|() + } + ) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.await|( = await@fun (): R|kotlin/String| { + ^ R|/objCNameFunction3Native|() + } + ) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.collect|(R|/objCNameProperty1Native|, Int(1)) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.value|(R|/objCNameProperty1Value|) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.collect|(R|/objCNameProperty2Flow|, Int(1)) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.value|(R|/objCNameProperty2Value|) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.await|( = await@fun (): R|kotlin/String| { + ^ R|/objCNameFunctionParameterNative|(String(OK13)) + } + ) + } + ) + } +FILE: /__GENERATED__CALLABLES__.kt + @R|kotlin/Deprecated|(message = String(This is deprecated 1)) @R|kotlin/native/ObjCName|(name = String(deprecatedFunction1)) @R|kotlin/Throws|(exceptionClasses = vararg((Q|kotlin/Exception|))) public final suspend fun deprecatedFunction1Native(): R|kotlin/String| { + ::R|/deprecatedFunction1| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/Deprecated|(message = String(This is deprecated 2), level = Q|kotlin/DeprecationLevel|.R|kotlin/DeprecationLevel.WARNING|) @R|kotlin/native/ObjCName|(name = String(deprecatedFunction2)) @R|kotlin/Throws|(exceptionClasses = vararg((Q|kotlin/Exception|))) public final suspend fun deprecatedFunction2Native(): R|kotlin/String| { + ::R|/deprecatedFunction2| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/Deprecated|(message = String(This is deprecated 3), level = Q|kotlin/DeprecationLevel|.R|kotlin/DeprecationLevel.ERROR|) @R|kotlin/native/ObjCName|(name = String(deprecatedFunction3)) @R|kotlin/Throws|(exceptionClasses = vararg((Q|kotlin/Exception|))) public final suspend fun deprecatedFunction3Native(): R|kotlin/String| { + ::R|/deprecatedFunction3| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/Deprecated|(message = String(This is deprecated 4)) @R|kotlin/native/ObjCName|(name = String(deprecatedProperty1)) public final val deprecatedProperty1Native: R|kotlinx/coroutines/flow/Flow| + public get(): R|kotlinx/coroutines/flow/Flow| { + ::R|/deprecatedProperty1| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/Deprecated|(message = String(This is deprecated 5), level = Q|kotlin/DeprecationLevel|.R|kotlin/DeprecationLevel.WARNING|) @R|kotlin/native/ObjCName|(name = String(deprecatedProperty2)) public final val deprecatedProperty2Native: R|kotlinx/coroutines/flow/Flow| + public get(): R|kotlinx/coroutines/flow/Flow| { + ::R|/deprecatedProperty2| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/Deprecated|(message = String(This is deprecated 6), level = Q|kotlin/DeprecationLevel|.R|kotlin/DeprecationLevel.ERROR|) @R|kotlin/native/ObjCName|(name = String(deprecatedProperty3)) public final val deprecatedProperty3Native: R|kotlinx/coroutines/flow/Flow| + public get(): R|kotlinx/coroutines/flow/Flow| { + ::R|/deprecatedProperty3| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/native/ObjCName|(name = String(deprecatedProperty4)) public final val deprecatedProperty4Native: R|kotlinx/coroutines/flow/MutableStateFlow| + @R|kotlin/Deprecated|(message = String(This is deprecated 7)) public get(): R|kotlinx/coroutines/flow/MutableStateFlow| { + ::R|/deprecatedProperty4| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + public final var deprecatedProperty4Value: R|kotlin/String| + @R|kotlin/Deprecated|(message = String(This is deprecated 7)) public get(): R|kotlin/String| { + ::R|/deprecatedProperty4| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/Deprecated|(message = String(This is deprecated 7)) public set(value: R|kotlin/String|): R|kotlin/Unit| + @R|kotlin/native/ObjCName|(name = String(objCNameFunction1ObjC)) @R|kotlin/Throws|(exceptionClasses = vararg((Q|kotlin/Exception|))) public final suspend fun objCNameFunction1Native(): R|kotlin/String| { + ::R|/objCNameFunction1| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/native/ObjCName|(name = String(objCNameFunction2), swiftName = String(objCNameFunction2Swift)) @R|kotlin/Throws|(exceptionClasses = vararg((Q|kotlin/Exception|))) public final suspend fun objCNameFunction2Native(): R|kotlin/String| { + ::R|/objCNameFunction2| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/native/ObjCName|(name = String(objCNameFunction3ObjC), swiftName = String(objCNameFunction3Swift)) @R|kotlin/Throws|(exceptionClasses = vararg((Q|kotlin/Exception|))) public final suspend fun objCNameFunction3Native(): R|kotlin/String| { + ::R|/objCNameFunction3| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/native/ObjCName|(name = String(objCNameProperty1ObjC)) public final val objCNameProperty1Native: R|kotlinx/coroutines/flow/StateFlow| + public get(): R|kotlinx/coroutines/flow/StateFlow| { + ::R|/objCNameProperty1| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/native/ObjCName|(name = String(objCNameProperty1ObjCValue)) public final val objCNameProperty1Value: R|kotlin/String| + public get(): R|kotlin/String| { + ::R|/objCNameProperty1| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/native/ObjCName|(name = String(objCNameFunctionParameter)) @R|kotlin/Throws|(exceptionClasses = vararg((Q|kotlin/Exception|))) public final suspend fun objCNameFunctionParameterNative(@R|kotlin/native/ObjCName|(name = String(valueObjC)) value: R|kotlin/String|): R|kotlin/String| { + ::R|/objCNameFunctionParameter| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/native/ObjCName|(name = String(objCNameProperty2ObjC)) public final val objCNameProperty2Value: R|kotlin/String| + public get(): R|kotlin/String| { + ::R|/objCNameProperty2| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/native/ObjCName|(name = String(objCNameProperty2ObjCFlow)) public final val objCNameProperty2Flow: R|kotlinx/coroutines/flow/StateFlow| + public get(): R|kotlinx/coroutines/flow/StateFlow| { + ::R|/objCNameProperty2| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } diff --git a/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/annotations.kt b/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/annotations.kt new file mode 120000 index 00000000..2711d4c5 --- /dev/null +++ b/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/annotations.kt @@ -0,0 +1 @@ +../annotations.kt \ No newline at end of file diff --git a/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/coroutinescope.box.txt b/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/coroutinescope.box.txt new file mode 120000 index 00000000..4368a91b --- /dev/null +++ b/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/coroutinescope.box.txt @@ -0,0 +1 @@ +../coroutinescope.box.txt \ No newline at end of file diff --git a/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/coroutinescope.fir.ir.txt b/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/coroutinescope.fir.ir.txt new file mode 100644 index 00000000..e5c7d1b5 --- /dev/null +++ b/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/coroutinescope.fir.ir.txt @@ -0,0 +1,617 @@ +FILE fqName: fileName:/__GENERATED__CALLABLES__.kt + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:returnExtSuspendValueNative visibility:public modality:FINAL returnType:kotlin.String [suspend] + VALUE_PARAMETER kind:ExtensionReceiver name: index:0 type:.MyClass6 + annotations: + ObjCName(name = "returnExtSuspendValue", swiftName = , exact = ) + Throws(exceptionClasses = [CLASS_REFERENCE 'CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:Exception modality:OPEN visibility:public superTypes:[kotlin.Throwable]' type=kotlin.reflect.KClass] type=kotlin.Array varargElementType=kotlin.Throwable) + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_0 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun returnExtSuspendValueNative (: .MyClass6): kotlin.String declared in ' + CALL 'public final fun returnExtSuspendValue (: .MyClass6): kotlin.String declared in ' type=kotlin.String origin=null + ARG : GET_VAR ': .MyClass6 declared in .returnExtSuspendValueNative' type=.MyClass6 origin=null + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:returnSuspendValueNative visibility:public modality:FINAL returnType:kotlin.String [suspend] + annotations: + ObjCName(name = "returnSuspendValue", swiftName = , exact = ) + Throws(exceptionClasses = [CLASS_REFERENCE 'CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:Exception modality:OPEN visibility:public superTypes:[kotlin.Throwable]' type=kotlin.reflect.KClass] type=kotlin.Array varargElementType=kotlin.Throwable) + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_1 type:kotlinx.coroutines.CoroutineScope [val] + CALL 'internal final fun (): kotlinx.coroutines.CoroutineScope declared in ' type=kotlinx.coroutines.CoroutineScope origin=null + RETURN type=kotlin.Nothing from='public final fun returnSuspendValueNative (): kotlin.String declared in ' + CALL 'public final fun returnSuspendValue (): kotlin.String declared in ' type=kotlin.String origin=null + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:flowExtProperty1Native visibility:public modality:FINAL [val] + annotations: + ObjCName(name = "flowExtProperty1", swiftName = , exact = ) + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.Flow + VALUE_PARAMETER kind:ExtensionReceiver name: index:0 type:.MyClass3 + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:flowExtProperty1Native visibility:public modality:FINAL [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_2 type:kotlinx.coroutines.CoroutineScope [val] + CALL 'internal final fun (): kotlinx.coroutines.CoroutineScope declared in ' type=kotlinx.coroutines.CoroutineScope origin=null + RETURN type=kotlin.Nothing from='public final fun (: .MyClass3): kotlinx.coroutines.flow.Flow declared in ' + CALL 'public final fun (: .MyClass3): kotlinx.coroutines.flow.Flow declared in ' type=kotlinx.coroutines.flow.Flow origin=null + ARG : GET_VAR ': .MyClass3 declared in .' type=.MyClass3 origin=null + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:flowExtProperty2Native visibility:public modality:FINAL [val] + annotations: + ObjCName(name = "flowExtProperty2", swiftName = , exact = ) + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.Flow + VALUE_PARAMETER kind:ExtensionReceiver name: index:0 type:.MyClass3 + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:flowExtProperty2Native visibility:public modality:FINAL [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_3 type:kotlinx.coroutines.CoroutineScope [val] + CALL 'internal final fun (): kotlinx.coroutines.CoroutineScope declared in .MyClass3' type=kotlinx.coroutines.CoroutineScope origin=null + ARG : GET_VAR ': .MyClass3 declared in .' type=.MyClass3 origin=null + RETURN type=kotlin.Nothing from='public final fun (: .MyClass3): kotlinx.coroutines.flow.Flow declared in ' + CALL 'public final fun (: .MyClass3): kotlinx.coroutines.flow.Flow declared in ' type=kotlinx.coroutines.flow.Flow origin=null + ARG : GET_VAR ': .MyClass3 declared in .' type=.MyClass3 origin=null + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:flowPropertyNative visibility:public modality:FINAL [val] + annotations: + ObjCName(name = "flowProperty", swiftName = , exact = ) + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.Flow + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:flowPropertyNative visibility:public modality:FINAL [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_4 type:kotlinx.coroutines.CoroutineScope [val] + CALL 'internal final fun (): kotlinx.coroutines.CoroutineScope declared in ' type=kotlinx.coroutines.CoroutineScope origin=null + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.Flow declared in ' + CALL 'public final fun (): kotlinx.coroutines.flow.Flow declared in ' type=kotlinx.coroutines.flow.Flow origin=null +FILE fqName: fileName:/coroutinescope1.kt + PROPERTY name:coroutineScope1 visibility:internal modality:FINAL [val] + annotations: + NativeCoroutineScope + FIELD PROPERTY_BACKING_FIELD name:coroutineScope1 type:kotlinx.coroutines.CoroutineScope visibility:private [final,static] + EXPRESSION_BODY + CALL 'public final fun CoroutineScope (context: kotlin.coroutines.CoroutineContext): kotlinx.coroutines.CoroutineScope declared in kotlinx.coroutines' type=kotlinx.coroutines.CoroutineScope origin=null + ARG context: CALL 'public final fun (): kotlinx.coroutines.CoroutineDispatcher declared in kotlinx.coroutines.Dispatchers' type=kotlinx.coroutines.CoroutineDispatcher origin=GET_PROPERTY + ARG : GET_OBJECT 'CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Dispatchers modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlinx.coroutines.Dispatchers + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:internal modality:FINAL returnType:kotlinx.coroutines.CoroutineScope + correspondingProperty: PROPERTY name:coroutineScope1 visibility:internal modality:FINAL [val] + BLOCK_BODY + RETURN type=kotlin.Nothing from='internal final fun (): kotlinx.coroutines.CoroutineScope declared in ' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:coroutineScope1 type:kotlinx.coroutines.CoroutineScope visibility:private [final,static]' type=kotlinx.coroutines.CoroutineScope origin=null + PROPERTY name:flowProperty visibility:public modality:FINAL [val] + annotations: + NativeCoroutines + FIELD PROPERTY_BACKING_FIELD name:flowProperty type:kotlinx.coroutines.flow.Flow visibility:private [final,static] + EXPRESSION_BODY + CALL 'public final fun flowOf (value: T of kotlinx.coroutines.flow.flowOf): kotlinx.coroutines.flow.Flow declared in kotlinx.coroutines.flow' type=kotlinx.coroutines.flow.Flow origin=null + TYPE_ARG T: kotlin.String + ARG value: CONST String type=kotlin.String value="OK2" + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.Flow + correspondingProperty: PROPERTY name:flowProperty visibility:public modality:FINAL [val] + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.Flow declared in ' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flowProperty type:kotlinx.coroutines.flow.Flow visibility:private [final,static]' type=kotlinx.coroutines.flow.Flow origin=null + CLASS CLASS name:MyClass1 modality:OPEN visibility:public superTypes:[kotlin.Any] + thisReceiver: VALUE_PARAMETER INSTANCE_RECEIVER kind:DispatchReceiver name: type:.MyClass1 + PROPERTY name:coroutineScope2 visibility:protected modality:FINAL [val] + annotations: + NativeCoroutineScope + FIELD PROPERTY_BACKING_FIELD name:coroutineScope2 type:kotlinx.coroutines.CoroutineScope visibility:private [final] + EXPRESSION_BODY + CALL 'public final fun CoroutineScope (context: kotlin.coroutines.CoroutineContext): kotlinx.coroutines.CoroutineScope declared in kotlinx.coroutines' type=kotlinx.coroutines.CoroutineScope origin=null + ARG context: CALL 'public final fun (): kotlinx.coroutines.CoroutineDispatcher declared in kotlinx.coroutines.Dispatchers' type=kotlinx.coroutines.CoroutineDispatcher origin=GET_PROPERTY + ARG : GET_OBJECT 'CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Dispatchers modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlinx.coroutines.Dispatchers + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:protected modality:FINAL returnType:kotlinx.coroutines.CoroutineScope + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyClass1 + correspondingProperty: PROPERTY name:coroutineScope2 visibility:protected modality:FINAL [val] + BLOCK_BODY + RETURN type=kotlin.Nothing from='protected final fun (): kotlinx.coroutines.CoroutineScope declared in .MyClass1' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:coroutineScope2 type:kotlinx.coroutines.CoroutineScope visibility:private [final]' type=kotlinx.coroutines.CoroutineScope origin=null + receiver: GET_VAR ': .MyClass1 declared in .MyClass1.' type=.MyClass1 origin=null + CONSTRUCTOR visibility:public returnType:.MyClass1 [primary] + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'public constructor () declared in kotlin.Any' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:MyClass1 modality:OPEN visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit + FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN returnType:kotlin.Boolean [fake_override,operator] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + VALUE_PARAMETER kind:Regular name:other index:1 type:kotlin.Any? + overridden: + public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Any + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN returnType:kotlin.Int [fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + overridden: + public open fun hashCode (): kotlin.Int declared in kotlin.Any + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN returnType:kotlin.String [fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + overridden: + public open fun toString (): kotlin.String declared in kotlin.Any + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:returnSuspendValueNative visibility:public modality:FINAL returnType:kotlin.String [suspend] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyClass1 + annotations: + ObjCName(name = "returnSuspendValue", swiftName = , exact = ) + Throws(exceptionClasses = [CLASS_REFERENCE 'CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:Exception modality:OPEN visibility:public superTypes:[kotlin.Throwable]' type=kotlin.reflect.KClass] type=kotlin.Array varargElementType=kotlin.Throwable) + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_0 type:kotlinx.coroutines.CoroutineScope [val] + CALL 'protected final fun (): kotlinx.coroutines.CoroutineScope declared in .MyClass1' type=kotlinx.coroutines.CoroutineScope origin=null + ARG : GET_VAR ': .MyClass1 declared in .MyClass1.returnSuspendValueNative' type=.MyClass1 origin=null + RETURN type=kotlin.Nothing from='public final fun returnSuspendValueNative (): kotlin.String declared in .MyClass1' + CALL 'public final fun returnSuspendValue (): kotlin.String declared in .MyClass1' type=kotlin.String origin=null + ARG : GET_VAR ': .MyClass1 declared in .MyClass1.returnSuspendValueNative' type=.MyClass1 origin=null + FUN name:returnSuspendValue visibility:public modality:FINAL returnType:kotlin.String [suspend] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyClass1 + annotations: + NativeCoroutines + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun returnSuspendValue (): kotlin.String declared in .MyClass1' + CONST String type=kotlin.String value="OK3" + CLASS CLASS name:MyClass2 modality:FINAL visibility:public superTypes:[.MyClass1] + thisReceiver: VALUE_PARAMETER INSTANCE_RECEIVER kind:DispatchReceiver name: type:.MyClass2 + PROPERTY name:flowProperty visibility:public modality:FINAL [val] + annotations: + NativeCoroutines + FIELD PROPERTY_BACKING_FIELD name:flowProperty type:kotlinx.coroutines.flow.Flow visibility:private [final] + EXPRESSION_BODY + CALL 'public final fun flowOf (value: T of kotlinx.coroutines.flow.flowOf): kotlinx.coroutines.flow.Flow declared in kotlinx.coroutines.flow' type=kotlinx.coroutines.flow.Flow origin=null + TYPE_ARG T: kotlin.String + ARG value: CONST String type=kotlin.String value="OK4" + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.Flow + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyClass2 + correspondingProperty: PROPERTY name:flowProperty visibility:public modality:FINAL [val] + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.Flow declared in .MyClass2' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:flowProperty type:kotlinx.coroutines.flow.Flow visibility:private [final]' type=kotlinx.coroutines.flow.Flow origin=null + receiver: GET_VAR ': .MyClass2 declared in .MyClass2.' type=.MyClass2 origin=null + CONSTRUCTOR visibility:public returnType:.MyClass2 [primary] + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'public constructor () declared in .MyClass1' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:MyClass2 modality:FINAL visibility:public superTypes:[.MyClass1]' type=kotlin.Unit + FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN returnType:kotlin.Boolean [fake_override,operator] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + VALUE_PARAMETER kind:Regular name:other index:1 type:kotlin.Any? + overridden: + public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in .MyClass1 + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN returnType:kotlin.Int [fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + overridden: + public open fun hashCode (): kotlin.Int declared in .MyClass1 + FUN FAKE_OVERRIDE name:returnSuspendValue visibility:public modality:FINAL returnType:kotlin.String [suspend,fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyClass1 + annotations: + NativeCoroutines + overridden: + public final fun returnSuspendValue (): kotlin.String declared in .MyClass1 + FUN FAKE_OVERRIDE name:returnSuspendValueNative visibility:public modality:FINAL returnType:kotlin.String [suspend,fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyClass1 + annotations: + ObjCName(name = "returnSuspendValue", swiftName = , exact = ) + Throws(exceptionClasses = [CLASS_REFERENCE 'CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:Exception modality:OPEN visibility:public superTypes:[kotlin.Throwable]' type=kotlin.reflect.KClass] type=kotlin.Array varargElementType=kotlin.Throwable) + overridden: + public final fun returnSuspendValueNative (): kotlin.String declared in .MyClass1 + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN returnType:kotlin.String [fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + overridden: + public open fun toString (): kotlin.String declared in .MyClass1 + PROPERTY FAKE_OVERRIDE name:coroutineScope2 visibility:protected modality:FINAL [fake_override,val] + annotations: + NativeCoroutineScope + overridden: + protected final coroutineScope2: kotlinx.coroutines.CoroutineScope declared in .MyClass1 + FUN FAKE_OVERRIDE name: visibility:protected modality:FINAL returnType:kotlinx.coroutines.CoroutineScope [fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyClass1 + correspondingProperty: PROPERTY FAKE_OVERRIDE name:coroutineScope2 visibility:protected modality:FINAL [fake_override,val] + overridden: + protected final fun (): kotlinx.coroutines.CoroutineScope declared in .MyClass1 + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:flowPropertyNative visibility:public modality:FINAL [val] + annotations: + ObjCName(name = "flowProperty", swiftName = , exact = ) + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.Flow + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyClass2 + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:flowPropertyNative visibility:public modality:FINAL [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_1 type:kotlinx.coroutines.CoroutineScope [val] + CALL 'protected final fun (): kotlinx.coroutines.CoroutineScope declared in .MyClass2' type=kotlinx.coroutines.CoroutineScope origin=null + ARG : GET_VAR ': .MyClass2 declared in .MyClass2.' type=.MyClass2 origin=null + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.Flow declared in .MyClass2' + CALL 'public final fun (): kotlinx.coroutines.flow.Flow declared in .MyClass2' type=kotlinx.coroutines.flow.Flow origin=null + ARG : GET_VAR ': .MyClass2 declared in .MyClass2.' type=.MyClass2 origin=null + CLASS CLASS name:MyClass3 modality:FINAL visibility:public superTypes:[.MyClass1] + thisReceiver: VALUE_PARAMETER INSTANCE_RECEIVER kind:DispatchReceiver name: type:.MyClass3 + PROPERTY name:coroutineScope3 visibility:internal modality:FINAL [val] + annotations: + NativeCoroutineScope + FIELD PROPERTY_BACKING_FIELD name:coroutineScope3 type:kotlinx.coroutines.CoroutineScope visibility:private [final] + EXPRESSION_BODY + CALL 'public final fun CoroutineScope (context: kotlin.coroutines.CoroutineContext): kotlinx.coroutines.CoroutineScope declared in kotlinx.coroutines' type=kotlinx.coroutines.CoroutineScope origin=null + ARG context: CALL 'public final fun (): kotlinx.coroutines.CoroutineDispatcher declared in kotlinx.coroutines.Dispatchers' type=kotlinx.coroutines.CoroutineDispatcher origin=GET_PROPERTY + ARG : GET_OBJECT 'CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Dispatchers modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlinx.coroutines.Dispatchers + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:internal modality:FINAL returnType:kotlinx.coroutines.CoroutineScope + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyClass3 + correspondingProperty: PROPERTY name:coroutineScope3 visibility:internal modality:FINAL [val] + BLOCK_BODY + RETURN type=kotlin.Nothing from='internal final fun (): kotlinx.coroutines.CoroutineScope declared in .MyClass3' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:coroutineScope3 type:kotlinx.coroutines.CoroutineScope visibility:private [final]' type=kotlinx.coroutines.CoroutineScope origin=null + receiver: GET_VAR ': .MyClass3 declared in .MyClass3.' type=.MyClass3 origin=null + CONSTRUCTOR visibility:public returnType:.MyClass3 [primary] + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'public constructor () declared in .MyClass1' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:MyClass3 modality:FINAL visibility:public superTypes:[.MyClass1]' type=kotlin.Unit + FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN returnType:kotlin.Boolean [fake_override,operator] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + VALUE_PARAMETER kind:Regular name:other index:1 type:kotlin.Any? + overridden: + public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in .MyClass1 + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN returnType:kotlin.Int [fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + overridden: + public open fun hashCode (): kotlin.Int declared in .MyClass1 + FUN FAKE_OVERRIDE name:returnSuspendValue visibility:public modality:FINAL returnType:kotlin.String [suspend,fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyClass1 + annotations: + NativeCoroutines + overridden: + public final fun returnSuspendValue (): kotlin.String declared in .MyClass1 + FUN FAKE_OVERRIDE name:returnSuspendValueNative visibility:public modality:FINAL returnType:kotlin.String [suspend,fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyClass1 + annotations: + ObjCName(name = "returnSuspendValue", swiftName = , exact = ) + Throws(exceptionClasses = [CLASS_REFERENCE 'CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:Exception modality:OPEN visibility:public superTypes:[kotlin.Throwable]' type=kotlin.reflect.KClass] type=kotlin.Array varargElementType=kotlin.Throwable) + overridden: + public final fun returnSuspendValueNative (): kotlin.String declared in .MyClass1 + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN returnType:kotlin.String [fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + overridden: + public open fun toString (): kotlin.String declared in .MyClass1 + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:returnOtherSuspendValueNative visibility:public modality:FINAL returnType:kotlin.String [suspend] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyClass3 + annotations: + ObjCName(name = "returnOtherSuspendValue", swiftName = , exact = ) + Throws(exceptionClasses = [CLASS_REFERENCE 'CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:Exception modality:OPEN visibility:public superTypes:[kotlin.Throwable]' type=kotlin.reflect.KClass] type=kotlin.Array varargElementType=kotlin.Throwable) + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_2 type:kotlinx.coroutines.CoroutineScope [val] + CALL 'internal final fun (): kotlinx.coroutines.CoroutineScope declared in .MyClass3' type=kotlinx.coroutines.CoroutineScope origin=null + ARG : GET_VAR ': .MyClass3 declared in .MyClass3.returnOtherSuspendValueNative' type=.MyClass3 origin=null + RETURN type=kotlin.Nothing from='public final fun returnOtherSuspendValueNative (): kotlin.String declared in .MyClass3' + CALL 'public final fun returnOtherSuspendValue (): kotlin.String declared in .MyClass3' type=kotlin.String origin=null + ARG : GET_VAR ': .MyClass3 declared in .MyClass3.returnOtherSuspendValueNative' type=.MyClass3 origin=null + FUN name:returnOtherSuspendValue visibility:public modality:FINAL returnType:kotlin.String [suspend] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyClass3 + annotations: + NativeCoroutines + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun returnOtherSuspendValue (): kotlin.String declared in .MyClass3' + CONST String type=kotlin.String value="OK5" + PROPERTY FAKE_OVERRIDE name:coroutineScope2 visibility:protected modality:FINAL [fake_override,val] + annotations: + NativeCoroutineScope + overridden: + protected final coroutineScope2: kotlinx.coroutines.CoroutineScope declared in .MyClass1 + FUN FAKE_OVERRIDE name: visibility:protected modality:FINAL returnType:kotlinx.coroutines.CoroutineScope [fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyClass1 + correspondingProperty: PROPERTY FAKE_OVERRIDE name:coroutineScope2 visibility:protected modality:FINAL [fake_override,val] + overridden: + protected final fun (): kotlinx.coroutines.CoroutineScope declared in .MyClass1 + CLASS CLASS name:MyClass4 modality:FINAL visibility:public superTypes:[kotlin.Any] + thisReceiver: VALUE_PARAMETER INSTANCE_RECEIVER kind:DispatchReceiver name: type:.MyClass4 + CONSTRUCTOR visibility:public returnType:.MyClass4 [primary] + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'public constructor () declared in kotlin.Any' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:MyClass4 modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit + FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN returnType:kotlin.Boolean [fake_override,operator] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + VALUE_PARAMETER kind:Regular name:other index:1 type:kotlin.Any? + overridden: + public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Any + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN returnType:kotlin.Int [fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + overridden: + public open fun hashCode (): kotlin.Int declared in kotlin.Any + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN returnType:kotlin.String [fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + overridden: + public open fun toString (): kotlin.String declared in kotlin.Any + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:returnExtSuspendValueNative visibility:public modality:FINAL returnType:kotlin.String [suspend] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyClass4 + VALUE_PARAMETER kind:ExtensionReceiver name: index:1 type:.MyClass1 + annotations: + ObjCName(name = "returnExtSuspendValue", swiftName = , exact = ) + Throws(exceptionClasses = [CLASS_REFERENCE 'CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:Exception modality:OPEN visibility:public superTypes:[kotlin.Throwable]' type=kotlin.reflect.KClass] type=kotlin.Array varargElementType=kotlin.Throwable) + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_3 type:kotlinx.coroutines.CoroutineScope [val] + CALL 'internal final fun (): kotlinx.coroutines.CoroutineScope declared in ' type=kotlinx.coroutines.CoroutineScope origin=null + RETURN type=kotlin.Nothing from='public final fun returnExtSuspendValueNative (: .MyClass1): kotlin.String declared in .MyClass4' + CALL 'public final fun returnExtSuspendValue (: .MyClass1): kotlin.String declared in .MyClass4' type=kotlin.String origin=null + ARG (index:0): GET_VAR '(index:0): .MyClass4 declared in .MyClass4.returnExtSuspendValueNative' type=.MyClass4 origin=null + ARG (index:1): GET_VAR '(index:1): .MyClass1 declared in .MyClass4.returnExtSuspendValueNative' type=.MyClass1 origin=null + FUN name:returnExtSuspendValue visibility:public modality:FINAL returnType:kotlin.String [suspend] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyClass4 + VALUE_PARAMETER kind:ExtensionReceiver name: index:1 type:.MyClass1 + annotations: + NativeCoroutines + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun returnExtSuspendValue (: .MyClass1): kotlin.String declared in .MyClass4' + CONST String type=kotlin.String value="OK7" + FUN name:returnSuspendValue visibility:public modality:FINAL returnType:kotlin.String [suspend] + annotations: + NativeCoroutines + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun returnSuspendValue (): kotlin.String declared in ' + CONST String type=kotlin.String value="OK1" + PROPERTY name:flowExtProperty1 visibility:public modality:FINAL [val] + annotations: + NativeCoroutines + FUN name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.Flow + VALUE_PARAMETER kind:ExtensionReceiver name: index:0 type:.MyClass3 + correspondingProperty: PROPERTY name:flowExtProperty1 visibility:public modality:FINAL [val] + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (: .MyClass3): kotlinx.coroutines.flow.Flow declared in ' + CALL 'public final fun flowOf (value: T of kotlinx.coroutines.flow.flowOf): kotlinx.coroutines.flow.Flow declared in kotlinx.coroutines.flow' type=kotlinx.coroutines.flow.Flow origin=null + TYPE_ARG T: kotlin.String + ARG value: CONST String type=kotlin.String value="OK6" +FILE fqName: fileName:/coroutinescope2.kt + CLASS CLASS name:MyClass5 modality:FINAL visibility:public superTypes:[kotlin.Any] + thisReceiver: VALUE_PARAMETER INSTANCE_RECEIVER kind:DispatchReceiver name: type:.MyClass5 + CONSTRUCTOR visibility:public returnType:.MyClass5 [primary] + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'public constructor () declared in kotlin.Any' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:MyClass5 modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit + FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN returnType:kotlin.Boolean [fake_override,operator] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + VALUE_PARAMETER kind:Regular name:other index:1 type:kotlin.Any? + overridden: + public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Any + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN returnType:kotlin.Int [fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + overridden: + public open fun hashCode (): kotlin.Int declared in kotlin.Any + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN returnType:kotlin.String [fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + overridden: + public open fun toString (): kotlin.String declared in kotlin.Any + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:returnExtSuspendValueNative visibility:public modality:FINAL returnType:kotlin.String [suspend] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyClass5 + VALUE_PARAMETER kind:ExtensionReceiver name: index:1 type:.MyClass1 + annotations: + ObjCName(name = "returnExtSuspendValue", swiftName = , exact = ) + Throws(exceptionClasses = [CLASS_REFERENCE 'CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:Exception modality:OPEN visibility:public superTypes:[kotlin.Throwable]' type=kotlin.reflect.KClass] type=kotlin.Array varargElementType=kotlin.Throwable) + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_0 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun returnExtSuspendValueNative (: .MyClass1): kotlin.String declared in .MyClass5' + CALL 'public final fun returnExtSuspendValue (: .MyClass1): kotlin.String declared in .MyClass5' type=kotlin.String origin=null + ARG (index:0): GET_VAR '(index:0): .MyClass5 declared in .MyClass5.returnExtSuspendValueNative' type=.MyClass5 origin=null + ARG (index:1): GET_VAR '(index:1): .MyClass1 declared in .MyClass5.returnExtSuspendValueNative' type=.MyClass1 origin=null + FUN name:returnExtSuspendValue visibility:public modality:FINAL returnType:kotlin.String [suspend] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyClass5 + VALUE_PARAMETER kind:ExtensionReceiver name: index:1 type:.MyClass1 + annotations: + NativeCoroutines + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun returnExtSuspendValue (: .MyClass1): kotlin.String declared in .MyClass5' + CONST String type=kotlin.String value="OK9" + CLASS CLASS name:MyClass6 modality:OPEN visibility:public superTypes:[kotlin.Any] + thisReceiver: VALUE_PARAMETER INSTANCE_RECEIVER kind:DispatchReceiver name: type:.MyClass6 + PROPERTY name:coroutineScope4 visibility:private modality:FINAL [val] + annotations: + NativeCoroutineScope + FIELD PROPERTY_BACKING_FIELD name:coroutineScope4 type:kotlinx.coroutines.CoroutineScope visibility:private [final] + EXPRESSION_BODY + CALL 'public final fun CoroutineScope (context: kotlin.coroutines.CoroutineContext): kotlinx.coroutines.CoroutineScope declared in kotlinx.coroutines' type=kotlinx.coroutines.CoroutineScope origin=null + ARG context: CALL 'public final fun (): kotlinx.coroutines.CoroutineDispatcher declared in kotlinx.coroutines.Dispatchers' type=kotlinx.coroutines.CoroutineDispatcher origin=GET_PROPERTY + ARG : GET_OBJECT 'CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Dispatchers modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlinx.coroutines.Dispatchers + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:private modality:FINAL returnType:kotlinx.coroutines.CoroutineScope + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyClass6 + correspondingProperty: PROPERTY name:coroutineScope4 visibility:private modality:FINAL [val] + BLOCK_BODY + RETURN type=kotlin.Nothing from='private final fun (): kotlinx.coroutines.CoroutineScope declared in .MyClass6' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:coroutineScope4 type:kotlinx.coroutines.CoroutineScope visibility:private [final]' type=kotlinx.coroutines.CoroutineScope origin=null + receiver: GET_VAR ': .MyClass6 declared in .MyClass6.' type=.MyClass6 origin=null + CONSTRUCTOR visibility:public returnType:.MyClass6 [primary] + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'public constructor () declared in kotlin.Any' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:MyClass6 modality:OPEN visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit + FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN returnType:kotlin.Boolean [fake_override,operator] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + VALUE_PARAMETER kind:Regular name:other index:1 type:kotlin.Any? + overridden: + public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Any + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN returnType:kotlin.Int [fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + overridden: + public open fun hashCode (): kotlin.Int declared in kotlin.Any + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN returnType:kotlin.String [fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + overridden: + public open fun toString (): kotlin.String declared in kotlin.Any + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:returnSuspendValueNative visibility:public modality:FINAL returnType:kotlin.String [suspend] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyClass6 + annotations: + ObjCName(name = "returnSuspendValue", swiftName = , exact = ) + Throws(exceptionClasses = [CLASS_REFERENCE 'CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:Exception modality:OPEN visibility:public superTypes:[kotlin.Throwable]' type=kotlin.reflect.KClass] type=kotlin.Array varargElementType=kotlin.Throwable) + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_1 type:kotlinx.coroutines.CoroutineScope [val] + CALL 'private final fun (): kotlinx.coroutines.CoroutineScope declared in .MyClass6' type=kotlinx.coroutines.CoroutineScope origin=null + ARG : GET_VAR ': .MyClass6 declared in .MyClass6.returnSuspendValueNative' type=.MyClass6 origin=null + RETURN type=kotlin.Nothing from='public final fun returnSuspendValueNative (): kotlin.String declared in .MyClass6' + CALL 'public final fun returnSuspendValue (): kotlin.String declared in .MyClass6' type=kotlin.String origin=null + ARG : GET_VAR ': .MyClass6 declared in .MyClass6.returnSuspendValueNative' type=.MyClass6 origin=null + FUN name:returnSuspendValue visibility:public modality:FINAL returnType:kotlin.String [suspend] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyClass6 + annotations: + NativeCoroutines + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun returnSuspendValue (): kotlin.String declared in .MyClass6' + CONST String type=kotlin.String value="OK10" + CLASS CLASS name:MyClass7 modality:FINAL visibility:public superTypes:[.MyClass6] + thisReceiver: VALUE_PARAMETER INSTANCE_RECEIVER kind:DispatchReceiver name: type:.MyClass7 + CONSTRUCTOR visibility:public returnType:.MyClass7 [primary] + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'public constructor () declared in .MyClass6' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:MyClass7 modality:FINAL visibility:public superTypes:[.MyClass6]' type=kotlin.Unit + FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN returnType:kotlin.Boolean [fake_override,operator] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + VALUE_PARAMETER kind:Regular name:other index:1 type:kotlin.Any? + overridden: + public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in .MyClass6 + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN returnType:kotlin.Int [fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + overridden: + public open fun hashCode (): kotlin.Int declared in .MyClass6 + FUN FAKE_OVERRIDE name:returnSuspendValue visibility:public modality:FINAL returnType:kotlin.String [suspend,fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyClass6 + annotations: + NativeCoroutines + overridden: + public final fun returnSuspendValue (): kotlin.String declared in .MyClass6 + FUN FAKE_OVERRIDE name:returnSuspendValueNative visibility:public modality:FINAL returnType:kotlin.String [suspend,fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyClass6 + annotations: + ObjCName(name = "returnSuspendValue", swiftName = , exact = ) + Throws(exceptionClasses = [CLASS_REFERENCE 'CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:Exception modality:OPEN visibility:public superTypes:[kotlin.Throwable]' type=kotlin.reflect.KClass] type=kotlin.Array varargElementType=kotlin.Throwable) + overridden: + public final fun returnSuspendValueNative (): kotlin.String declared in .MyClass6 + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN returnType:kotlin.String [fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + overridden: + public open fun toString (): kotlin.String declared in .MyClass6 + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:returnOtherSuspendValueNative visibility:public modality:FINAL returnType:kotlin.String [suspend] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyClass7 + annotations: + ObjCName(name = "returnOtherSuspendValue", swiftName = , exact = ) + Throws(exceptionClasses = [CLASS_REFERENCE 'CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:Exception modality:OPEN visibility:public superTypes:[kotlin.Throwable]' type=kotlin.reflect.KClass] type=kotlin.Array varargElementType=kotlin.Throwable) + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_2 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun returnOtherSuspendValueNative (): kotlin.String declared in .MyClass7' + CALL 'public final fun returnOtherSuspendValue (): kotlin.String declared in .MyClass7' type=kotlin.String origin=null + ARG : GET_VAR ': .MyClass7 declared in .MyClass7.returnOtherSuspendValueNative' type=.MyClass7 origin=null + FUN name:returnOtherSuspendValue visibility:public modality:FINAL returnType:kotlin.String [suspend] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyClass7 + annotations: + NativeCoroutines + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun returnOtherSuspendValue (): kotlin.String declared in .MyClass7' + CONST String type=kotlin.String value="OK12" + FUN name:box visibility:public modality:FINAL returnType:kotlin.String + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun box (): kotlin.String declared in ' + CALL 'public final fun runBoxTest (action: @[ExtensionFunctionType] kotlin.coroutines.SuspendFunction1): kotlin.String declared in com.rickclephas.kmp.nativecoroutines' type=kotlin.String origin=null + ARG action: FUN_EXPR type=@[ExtensionFunctionType] kotlin.coroutines.SuspendFunction1 origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL returnType:kotlin.Unit [suspend] + VALUE_PARAMETER kind:ExtensionReceiver name:$this$runBoxTest index:0 type:com.rickclephas.kmp.nativecoroutines.BoxTest + BLOCK_BODY + CALL 'public final fun await (result: kotlin.coroutines.SuspendFunction0): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG result: FUN_EXPR type=kotlin.coroutines.SuspendFunction0 origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL returnType:kotlin.String [suspend] + BLOCK_BODY + RETURN type=kotlin.Nothing from='local final fun (): kotlin.String declared in .box.' + CALL 'public final fun returnSuspendValueNative (): kotlin.String declared in ' type=kotlin.String origin=null + CALL 'public final fun collect (flow: kotlinx.coroutines.flow.Flow, maxValues: kotlin.Int?): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG flow: CALL 'public final fun (): kotlinx.coroutines.flow.Flow declared in ' type=kotlinx.coroutines.flow.Flow origin=GET_PROPERTY + CALL 'public final fun await (result: kotlin.coroutines.SuspendFunction0): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG result: FUN_EXPR type=kotlin.coroutines.SuspendFunction0 origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL returnType:kotlin.String [suspend] + BLOCK_BODY + RETURN type=kotlin.Nothing from='local final fun (): kotlin.String declared in .box.' + CALL 'public final fun returnSuspendValueNative (): kotlin.String declared in .MyClass1' type=kotlin.String origin=null + ARG : CONSTRUCTOR_CALL 'public constructor () declared in .MyClass1' type=.MyClass1 origin=null + CALL 'public final fun collect (flow: kotlinx.coroutines.flow.Flow, maxValues: kotlin.Int?): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG flow: CALL 'public final fun (): kotlinx.coroutines.flow.Flow declared in .MyClass2' type=kotlinx.coroutines.flow.Flow origin=GET_PROPERTY + ARG : CONSTRUCTOR_CALL 'public constructor () declared in .MyClass2' type=.MyClass2 origin=null + CALL 'public final fun await (result: kotlin.coroutines.SuspendFunction0): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG result: FUN_EXPR type=kotlin.coroutines.SuspendFunction0 origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL returnType:kotlin.String [suspend] + BLOCK_BODY + RETURN type=kotlin.Nothing from='local final fun (): kotlin.String declared in .box.' + CALL 'public final fun returnOtherSuspendValueNative (): kotlin.String declared in .MyClass3' type=kotlin.String origin=null + ARG : CONSTRUCTOR_CALL 'public constructor () declared in .MyClass3' type=.MyClass3 origin=null + CALL 'public final fun collect (flow: kotlinx.coroutines.flow.Flow, maxValues: kotlin.Int?): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG flow: CALL 'public final fun (: .MyClass3): kotlinx.coroutines.flow.Flow declared in ' type=kotlinx.coroutines.flow.Flow origin=GET_PROPERTY + ARG : CONSTRUCTOR_CALL 'public constructor () declared in .MyClass3' type=.MyClass3 origin=null + CALL 'public final fun with (receiver: T of kotlin.with, block: @[ExtensionFunctionType] kotlin.Function1): R of kotlin.with declared in kotlin' type=kotlin.Unit origin=null + TYPE_ARG T: .MyClass4 + TYPE_ARG R: kotlin.Unit + ARG receiver: CONSTRUCTOR_CALL 'public constructor () declared in .MyClass4' type=.MyClass4 origin=null + ARG block: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1<.MyClass4, kotlin.Unit> origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL returnType:kotlin.Unit + VALUE_PARAMETER kind:ExtensionReceiver name:$this$with index:0 type:.MyClass4 + BLOCK_BODY + CALL 'public final fun await (result: kotlin.coroutines.SuspendFunction0): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG result: FUN_EXPR type=kotlin.coroutines.SuspendFunction0 origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL returnType:kotlin.String [suspend] + BLOCK_BODY + RETURN type=kotlin.Nothing from='local final fun (): kotlin.String declared in .box..' + CALL 'public final fun returnExtSuspendValueNative (: .MyClass1): kotlin.String declared in .MyClass4' type=kotlin.String origin=null + ARG (index:0): GET_VAR '$this$with: .MyClass4 declared in .box..' type=.MyClass4 origin=IMPLICIT_ARGUMENT + ARG (index:1): CONSTRUCTOR_CALL 'public constructor () declared in .MyClass1' type=.MyClass1 origin=null + CALL 'public final fun collect (flow: kotlinx.coroutines.flow.Flow, maxValues: kotlin.Int?): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG flow: CALL 'public final fun (: .MyClass3): kotlinx.coroutines.flow.Flow declared in ' type=kotlinx.coroutines.flow.Flow origin=GET_PROPERTY + ARG : CONSTRUCTOR_CALL 'public constructor () declared in .MyClass3' type=.MyClass3 origin=null + CALL 'public final fun with (receiver: T of kotlin.with, block: @[ExtensionFunctionType] kotlin.Function1): R of kotlin.with declared in kotlin' type=kotlin.Unit origin=null + TYPE_ARG T: .MyClass5 + TYPE_ARG R: kotlin.Unit + ARG receiver: CONSTRUCTOR_CALL 'public constructor () declared in .MyClass5' type=.MyClass5 origin=null + ARG block: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1<.MyClass5, kotlin.Unit> origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL returnType:kotlin.Unit + VALUE_PARAMETER kind:ExtensionReceiver name:$this$with index:0 type:.MyClass5 + BLOCK_BODY + CALL 'public final fun await (result: kotlin.coroutines.SuspendFunction0): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG result: FUN_EXPR type=kotlin.coroutines.SuspendFunction0 origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL returnType:kotlin.String [suspend] + BLOCK_BODY + RETURN type=kotlin.Nothing from='local final fun (): kotlin.String declared in .box..' + CALL 'public final fun returnExtSuspendValueNative (: .MyClass1): kotlin.String declared in .MyClass5' type=kotlin.String origin=null + ARG (index:0): GET_VAR '$this$with: .MyClass5 declared in .box..' type=.MyClass5 origin=IMPLICIT_ARGUMENT + ARG (index:1): CONSTRUCTOR_CALL 'public constructor () declared in .MyClass1' type=.MyClass1 origin=null + CALL 'public final fun await (result: kotlin.coroutines.SuspendFunction0): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG result: FUN_EXPR type=kotlin.coroutines.SuspendFunction0 origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL returnType:kotlin.String [suspend] + BLOCK_BODY + RETURN type=kotlin.Nothing from='local final fun (): kotlin.String declared in .box.' + CALL 'public final fun returnSuspendValueNative (): kotlin.String declared in .MyClass6' type=kotlin.String origin=null + ARG : CONSTRUCTOR_CALL 'public constructor () declared in .MyClass6' type=.MyClass6 origin=null + CALL 'public final fun await (result: kotlin.coroutines.SuspendFunction0): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG result: FUN_EXPR type=kotlin.coroutines.SuspendFunction0 origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL returnType:kotlin.String [suspend] + BLOCK_BODY + RETURN type=kotlin.Nothing from='local final fun (): kotlin.String declared in .box.' + CALL 'public final fun returnExtSuspendValueNative (: .MyClass6): kotlin.String declared in ' type=kotlin.String origin=null + ARG : CONSTRUCTOR_CALL 'public constructor () declared in .MyClass6' type=.MyClass6 origin=null + CALL 'public final fun await (result: kotlin.coroutines.SuspendFunction0): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG result: FUN_EXPR type=kotlin.coroutines.SuspendFunction0 origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL returnType:kotlin.String [suspend] + BLOCK_BODY + RETURN type=kotlin.Nothing from='local final fun (): kotlin.String declared in .box.' + CALL 'public final fun returnOtherSuspendValueNative (): kotlin.String declared in .MyClass7' type=kotlin.String origin=null + ARG : CONSTRUCTOR_CALL 'public constructor () declared in .MyClass7' type=.MyClass7 origin=null + FUN name:returnExtSuspendValue visibility:public modality:FINAL returnType:kotlin.String [suspend] + VALUE_PARAMETER kind:ExtensionReceiver name: index:0 type:.MyClass6 + annotations: + NativeCoroutines + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun returnExtSuspendValue (: .MyClass6): kotlin.String declared in ' + CONST String type=kotlin.String value="OK11" + PROPERTY name:flowExtProperty2 visibility:public modality:FINAL [val] + annotations: + NativeCoroutines + FUN name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.Flow + VALUE_PARAMETER kind:ExtensionReceiver name: index:0 type:.MyClass3 + correspondingProperty: PROPERTY name:flowExtProperty2 visibility:public modality:FINAL [val] + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (: .MyClass3): kotlinx.coroutines.flow.Flow declared in ' + CALL 'public final fun flowOf (value: T of kotlinx.coroutines.flow.flowOf): kotlinx.coroutines.flow.Flow declared in kotlinx.coroutines.flow' type=kotlinx.coroutines.flow.Flow origin=null + TYPE_ARG T: kotlin.String + ARG value: CONST String type=kotlin.String value="OK8" diff --git a/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/coroutinescope.fir.kt.txt b/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/coroutinescope.fir.kt.txt new file mode 100644 index 00000000..64b24e9e --- /dev/null +++ b/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/coroutinescope.fir.kt.txt @@ -0,0 +1,282 @@ +// FILE: __GENERATED__CALLABLES__.kt + +@ObjCName(name = "returnExtSuspendValue") +@Throws(exceptionClasses = [Exception::class]) +suspend fun MyClass6.returnExtSuspendValueNative(): String { + val tmp_0: CoroutineScope? = null + return returnExtSuspendValue(/* = */) +} + +@ObjCName(name = "returnSuspendValue") +@Throws(exceptionClasses = [Exception::class]) +suspend fun returnSuspendValueNative(): String { + val tmp_1: CoroutineScope = () + return returnSuspendValue() +} + +@ObjCName(name = "flowExtProperty1") +val MyClass3.flowExtProperty1Native: Flow + get(): Flow { + val tmp_2: CoroutineScope = () + return (/* = */) + } + +@ObjCName(name = "flowExtProperty2") +val MyClass3.flowExtProperty2Native: Flow + get(): Flow { + val tmp_3: CoroutineScope = .() + return (/* = */) + } + +@ObjCName(name = "flowProperty") +val flowPropertyNative: Flow + get(): Flow { + val tmp_4: CoroutineScope = () + return () + } + +// FILE: coroutinescope1.kt + +@NativeCoroutineScope +internal val coroutineScope1: CoroutineScope + field = CoroutineScope(context = Dispatchers.()) + internal get + +@NativeCoroutines +val flowProperty: Flow + field = flowOf(value = "OK2") + get + +open class MyClass1 { + @NativeCoroutineScope + protected val coroutineScope2: CoroutineScope + field = CoroutineScope(context = Dispatchers.()) + protected get + + constructor() /* primary */ { + super/*Any*/() + /* () */ + + } + + @ObjCName(name = "returnSuspendValue") + @Throws(exceptionClasses = [Exception::class]) + suspend fun returnSuspendValueNative(): String { + val tmp_0: CoroutineScope = .() + return .returnSuspendValue() + } + + @NativeCoroutines + suspend fun returnSuspendValue(): String { + return "OK3" + } + +} + +class MyClass2 : MyClass1 { + @NativeCoroutines + val flowProperty: Flow + field = flowOf(value = "OK4") + get + + constructor() /* primary */ { + super/*MyClass1*/() + /* () */ + + } + + @ObjCName(name = "flowProperty") + val flowPropertyNative: Flow + get(): Flow { + val tmp_1: CoroutineScope = .() + return .() + } + +} + +class MyClass3 : MyClass1 { + @NativeCoroutineScope + internal val coroutineScope3: CoroutineScope + field = CoroutineScope(context = Dispatchers.()) + internal get + + constructor() /* primary */ { + super/*MyClass1*/() + /* () */ + + } + + @ObjCName(name = "returnOtherSuspendValue") + @Throws(exceptionClasses = [Exception::class]) + suspend fun returnOtherSuspendValueNative(): String { + val tmp_2: CoroutineScope = .() + return .returnOtherSuspendValue() + } + + @NativeCoroutines + suspend fun returnOtherSuspendValue(): String { + return "OK5" + } + +} + +class MyClass4 { + constructor() /* primary */ { + super/*Any*/() + /* () */ + + } + + @ObjCName(name = "returnExtSuspendValue") + @Throws(exceptionClasses = [Exception::class]) + suspend fun MyClass1.returnExtSuspendValueNative(): String { + val tmp_3: CoroutineScope = () + return .returnExtSuspendValue(/* = */) + } + + @NativeCoroutines + suspend fun MyClass1.returnExtSuspendValue(): String { + return "OK7" + } + +} + +@NativeCoroutines +suspend fun returnSuspendValue(): String { + return "OK1" +} + +@NativeCoroutines +val MyClass3.flowExtProperty1: Flow + get(): Flow { + return flowOf(value = "OK6") + } + +// FILE: coroutinescope2.kt + +class MyClass5 { + constructor() /* primary */ { + super/*Any*/() + /* () */ + + } + + @ObjCName(name = "returnExtSuspendValue") + @Throws(exceptionClasses = [Exception::class]) + suspend fun MyClass1.returnExtSuspendValueNative(): String { + val tmp_0: CoroutineScope? = null + return .returnExtSuspendValue(/* = */) + } + + @NativeCoroutines + suspend fun MyClass1.returnExtSuspendValue(): String { + return "OK9" + } + +} + +open class MyClass6 { + @NativeCoroutineScope + private val coroutineScope4: CoroutineScope + field = CoroutineScope(context = Dispatchers.()) + private get + + constructor() /* primary */ { + super/*Any*/() + /* () */ + + } + + @ObjCName(name = "returnSuspendValue") + @Throws(exceptionClasses = [Exception::class]) + suspend fun returnSuspendValueNative(): String { + val tmp_1: CoroutineScope = .() + return .returnSuspendValue() + } + + @NativeCoroutines + suspend fun returnSuspendValue(): String { + return "OK10" + } + +} + +class MyClass7 : MyClass6 { + constructor() /* primary */ { + super/*MyClass6*/() + /* () */ + + } + + @ObjCName(name = "returnOtherSuspendValue") + @Throws(exceptionClasses = [Exception::class]) + suspend fun returnOtherSuspendValueNative(): String { + val tmp_2: CoroutineScope? = null + return .returnOtherSuspendValue() + } + + @NativeCoroutines + suspend fun returnOtherSuspendValue(): String { + return "OK12" + } + +} + +fun box(): String { + return runBoxTest(action = local suspend fun BoxTest.() { + $this$runBoxTest.await(result = local suspend fun (): String { + return returnSuspendValueNative() + } +) + $this$runBoxTest.collect(flow = ()) + $this$runBoxTest.await(result = local suspend fun (): String { + return MyClass1().returnSuspendValueNative() + } +) + $this$runBoxTest.collect(flow = MyClass2().()) + $this$runBoxTest.await(result = local suspend fun (): String { + return MyClass3().returnOtherSuspendValueNative() + } +) + $this$runBoxTest.collect(flow = (/* = MyClass3() */)) + with(receiver = MyClass4(), block = local fun MyClass4.() { + $this$runBoxTest.await(result = local suspend fun (): String { + return $this$with.returnExtSuspendValueNative(/* = MyClass1() */) + } +) + } +) + $this$runBoxTest.collect(flow = (/* = MyClass3() */)) + with(receiver = MyClass5(), block = local fun MyClass5.() { + $this$runBoxTest.await(result = local suspend fun (): String { + return $this$with.returnExtSuspendValueNative(/* = MyClass1() */) + } +) + } +) + $this$runBoxTest.await(result = local suspend fun (): String { + return MyClass6().returnSuspendValueNative() + } +) + $this$runBoxTest.await(result = local suspend fun (): String { + return returnExtSuspendValueNative(/* = MyClass6() */) + } +) + $this$runBoxTest.await(result = local suspend fun (): String { + return MyClass7().returnOtherSuspendValueNative() + } +) + } +) +} + +@NativeCoroutines +suspend fun MyClass6.returnExtSuspendValue(): String { + return "OK11" +} + +@NativeCoroutines +val MyClass3.flowExtProperty2: Flow + get(): Flow { + return flowOf(value = "OK8") + } diff --git a/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/coroutinescope.fir.txt b/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/coroutinescope.fir.txt new file mode 100644 index 00000000..d3865554 --- /dev/null +++ b/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/coroutinescope.fir.txt @@ -0,0 +1,205 @@ +FILE: coroutinescope1.kt + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutineScope|() internal final val coroutineScope1: R|kotlinx/coroutines/CoroutineScope| = R|kotlinx/coroutines/CoroutineScope|(Q|kotlinx/coroutines/Dispatchers|.R|kotlinx/coroutines/Dispatchers.Default|) + internal get(): R|kotlinx/coroutines/CoroutineScope| + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final suspend fun returnSuspendValue(): R|kotlin/String| { + ^returnSuspendValue String(OK1) + } + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final val flowProperty: R|kotlinx/coroutines/flow/Flow| = R|kotlinx/coroutines/flow/flowOf|(String(OK2)) + public get(): R|kotlinx/coroutines/flow/Flow| + public open class MyClass1 : R|kotlin/Any| { + public constructor(): R|MyClass1| { + super() + } + + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutineScope|() protected final val coroutineScope2: R|kotlinx/coroutines/CoroutineScope| = R|kotlinx/coroutines/CoroutineScope|(Q|kotlinx/coroutines/Dispatchers|.R|kotlinx/coroutines/Dispatchers.Default|) + protected get(): R|kotlinx/coroutines/CoroutineScope| + + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final suspend fun returnSuspendValue(): R|kotlin/String| { + ^returnSuspendValue String(OK3) + } + + @R|kotlin/native/ObjCName|(name = String(returnSuspendValue)) @R|kotlin/Throws|(exceptionClasses = vararg((Q|kotlin/Exception|))) public final suspend fun returnSuspendValueNative(): R|kotlin/String| { + ::R|/MyClass1.returnSuspendValue| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + + } + public final class MyClass2 : R|MyClass1| { + public constructor(): R|MyClass2| { + super() + } + + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final val flowProperty: R|kotlinx/coroutines/flow/Flow| = R|kotlinx/coroutines/flow/flowOf|(String(OK4)) + public get(): R|kotlinx/coroutines/flow/Flow| + + @R|kotlin/native/ObjCName|(name = String(flowProperty)) public final val flowPropertyNative: R|kotlinx/coroutines/flow/Flow| + public get(): R|kotlinx/coroutines/flow/Flow| { + ::R|/MyClass2.flowProperty| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + + } + public final class MyClass3 : R|MyClass1| { + public constructor(): R|MyClass3| { + super() + } + + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutineScope|() internal final val coroutineScope3: R|kotlinx/coroutines/CoroutineScope| = R|kotlinx/coroutines/CoroutineScope|(Q|kotlinx/coroutines/Dispatchers|.R|kotlinx/coroutines/Dispatchers.Default|) + internal get(): R|kotlinx/coroutines/CoroutineScope| + + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final suspend fun returnOtherSuspendValue(): R|kotlin/String| { + ^returnOtherSuspendValue String(OK5) + } + + @R|kotlin/native/ObjCName|(name = String(returnOtherSuspendValue)) @R|kotlin/Throws|(exceptionClasses = vararg((Q|kotlin/Exception|))) public final suspend fun returnOtherSuspendValueNative(): R|kotlin/String| { + ::R|/MyClass3.returnOtherSuspendValue| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + + } + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final val R|MyClass3|.flowExtProperty1: R|kotlinx/coroutines/flow/Flow| + public get(): R|kotlinx/coroutines/flow/Flow| { + ^ R|kotlinx/coroutines/flow/flowOf|(String(OK6)) + } + public final class MyClass4 : R|kotlin/Any| { + public constructor(): R|MyClass4| { + super() + } + + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final suspend fun R|MyClass1|.returnExtSuspendValue(): R|kotlin/String| { + ^returnExtSuspendValue String(OK7) + } + + @R|kotlin/native/ObjCName|(name = String(returnExtSuspendValue)) @R|kotlin/Throws|(exceptionClasses = vararg((Q|kotlin/Exception|))) public final suspend fun R|MyClass1|.returnExtSuspendValueNative(): R|kotlin/String| { + ::R|/MyClass4.returnExtSuspendValue| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + + } +FILE: coroutinescope2.kt + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final val R|MyClass3|.flowExtProperty2: R|kotlinx/coroutines/flow/Flow| + public get(): R|kotlinx/coroutines/flow/Flow| { + ^ R|kotlinx/coroutines/flow/flowOf|(String(OK8)) + } + public final class MyClass5 : R|kotlin/Any| { + public constructor(): R|MyClass5| { + super() + } + + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final suspend fun R|MyClass1|.returnExtSuspendValue(): R|kotlin/String| { + ^returnExtSuspendValue String(OK9) + } + + @R|kotlin/native/ObjCName|(name = String(returnExtSuspendValue)) @R|kotlin/Throws|(exceptionClasses = vararg((Q|kotlin/Exception|))) public final suspend fun R|MyClass1|.returnExtSuspendValueNative(): R|kotlin/String| { + ::R|/MyClass5.returnExtSuspendValue| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + + } + public open class MyClass6 : R|kotlin/Any| { + public constructor(): R|MyClass6| { + super() + } + + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutineScope|() private final val coroutineScope4: R|kotlinx/coroutines/CoroutineScope| = R|kotlinx/coroutines/CoroutineScope|(Q|kotlinx/coroutines/Dispatchers|.R|kotlinx/coroutines/Dispatchers.Default|) + private get(): R|kotlinx/coroutines/CoroutineScope| + + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final suspend fun returnSuspendValue(): R|kotlin/String| { + ^returnSuspendValue String(OK10) + } + + @R|kotlin/native/ObjCName|(name = String(returnSuspendValue)) @R|kotlin/Throws|(exceptionClasses = vararg((Q|kotlin/Exception|))) public final suspend fun returnSuspendValueNative(): R|kotlin/String| { + ::R|/MyClass6.returnSuspendValue| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + + } + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final suspend fun R|MyClass6|.returnExtSuspendValue(): R|kotlin/String| { + ^returnExtSuspendValue String(OK11) + } + public final class MyClass7 : R|MyClass6| { + public constructor(): R|MyClass7| { + super() + } + + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final suspend fun returnOtherSuspendValue(): R|kotlin/String| { + ^returnOtherSuspendValue String(OK12) + } + + @R|kotlin/native/ObjCName|(name = String(returnOtherSuspendValue)) @R|kotlin/Throws|(exceptionClasses = vararg((Q|kotlin/Exception|))) public final suspend fun returnOtherSuspendValueNative(): R|kotlin/String| { + ::R|/MyClass7.returnOtherSuspendValue| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + + } + public final fun box(): R|kotlin/String| { + ^box R|com/rickclephas/kmp/nativecoroutines/runBoxTest|( = runBoxTest@fun R|com/rickclephas/kmp/nativecoroutines/BoxTest|.(): R|kotlin/Unit| { + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.await|( = await@fun (): R|kotlin/String| { + ^ R|/returnSuspendValueNative|() + } + ) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.collect|(R|/flowPropertyNative|) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.await|( = await@fun (): R|kotlin/String| { + ^ R|/MyClass1.MyClass1|().R|/MyClass1.returnSuspendValueNative|() + } + ) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.collect|(R|/MyClass2.MyClass2|().R|/MyClass2.flowPropertyNative|) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.await|( = await@fun (): R|kotlin/String| { + ^ R|/MyClass3.MyClass3|().R|/MyClass3.returnOtherSuspendValueNative|() + } + ) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.collect|(R|/MyClass3.MyClass3|().R|/flowExtProperty1Native|) + R|kotlin/with|(R|/MyClass4.MyClass4|(), = with@fun R|MyClass4|.(): R|kotlin/Unit| { + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.await|( = await@fun (): R|kotlin/String| { + ^ (this@R|special/anonymous|, R|/MyClass1.MyClass1|()).R|/MyClass4.returnExtSuspendValueNative|() + } + ) + } + ) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.collect|(R|/MyClass3.MyClass3|().R|/flowExtProperty2Native|) + R|kotlin/with|(R|/MyClass5.MyClass5|(), = with@fun R|MyClass5|.(): R|kotlin/Unit| { + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.await|( = await@fun (): R|kotlin/String| { + ^ (this@R|special/anonymous|, R|/MyClass1.MyClass1|()).R|/MyClass5.returnExtSuspendValueNative|() + } + ) + } + ) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.await|( = await@fun (): R|kotlin/String| { + ^ R|/MyClass6.MyClass6|().R|/MyClass6.returnSuspendValueNative|() + } + ) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.await|( = await@fun (): R|kotlin/String| { + ^ R|/MyClass6.MyClass6|().R|/returnExtSuspendValueNative|() + } + ) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.await|( = await@fun (): R|kotlin/String| { + ^ R|/MyClass7.MyClass7|().R|/MyClass7.returnOtherSuspendValueNative|() + } + ) + } + ) + } +FILE: /__GENERATED__CALLABLES__.kt + @R|kotlin/native/ObjCName|(name = String(returnSuspendValue)) @R|kotlin/Throws|(exceptionClasses = vararg((Q|kotlin/Exception|))) public final suspend fun returnSuspendValueNative(): R|kotlin/String| { + ::R|/returnSuspendValue| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/native/ObjCName|(name = String(flowProperty)) public final val flowPropertyNative: R|kotlinx/coroutines/flow/Flow| + public get(): R|kotlinx/coroutines/flow/Flow| { + ::R|/flowProperty| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/native/ObjCName|(name = String(flowExtProperty1)) public final val R|MyClass3|.flowExtProperty1Native: R|kotlinx/coroutines/flow/Flow| + public get(): R|kotlinx/coroutines/flow/Flow| { + ::R|/flowExtProperty1| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/native/ObjCName|(name = String(flowExtProperty2)) public final val R|MyClass3|.flowExtProperty2Native: R|kotlinx/coroutines/flow/Flow| + public get(): R|kotlinx/coroutines/flow/Flow| { + ::R|/flowExtProperty2| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/native/ObjCName|(name = String(returnExtSuspendValue)) @R|kotlin/Throws|(exceptionClasses = vararg((Q|kotlin/Exception|))) public final suspend fun R|MyClass6|.returnExtSuspendValueNative(): R|kotlin/String| { + ::R|/returnExtSuspendValue| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } diff --git a/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/coroutinescope.kt b/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/coroutinescope.kt new file mode 120000 index 00000000..081b8262 --- /dev/null +++ b/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/coroutinescope.kt @@ -0,0 +1 @@ +../coroutinescope.kt \ No newline at end of file diff --git a/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/functions.box.txt b/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/functions.box.txt new file mode 120000 index 00000000..e1ce6373 --- /dev/null +++ b/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/functions.box.txt @@ -0,0 +1 @@ +../functions.box.txt \ No newline at end of file diff --git a/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/functions.fir.ir.txt b/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/functions.fir.ir.txt new file mode 100644 index 00000000..6f764405 --- /dev/null +++ b/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/functions.fir.ir.txt @@ -0,0 +1,836 @@ +FILE fqName: fileName:/__GENERATED__CALLABLES__.kt + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:returnCustomFlowValueNative visibility:public modality:FINAL returnType:.MyFlow23 + annotations: + ObjCName(name = "returnCustomFlowValue", swiftName = , exact = ) + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_0 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun returnCustomFlowValueNative (): .MyFlow23 declared in ' + CALL 'public final fun returnCustomFlowValue (): .MyFlow23 declared in ' type=.MyFlow23 origin=null + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:returnExtensionValueNative visibility:public modality:FINAL returnType:kotlin.String [suspend] + VALUE_PARAMETER kind:ExtensionReceiver name: index:0 type:kotlin.String + annotations: + ObjCName(name = "returnExtensionValue", swiftName = , exact = ) + Throws(exceptionClasses = [CLASS_REFERENCE 'CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:Exception modality:OPEN visibility:public superTypes:[kotlin.Throwable]' type=kotlin.reflect.KClass] type=kotlin.Array varargElementType=kotlin.Throwable) + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_1 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun returnExtensionValueNative (: kotlin.String): kotlin.String declared in ' + CALL 'public final fun returnExtensionValue (: kotlin.String): kotlin.String declared in ' type=kotlin.String origin=null + ARG : GET_VAR ': kotlin.String declared in .returnExtensionValueNative' type=kotlin.String origin=null + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:returnFlowValueNative visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.Flow + annotations: + ObjCName(name = "returnFlowValue", swiftName = , exact = ) + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_2 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun returnFlowValueNative (): kotlinx.coroutines.flow.Flow declared in ' + CALL 'public final fun returnFlowValue (): kotlinx.coroutines.flow.Flow declared in ' type=kotlinx.coroutines.flow.Flow origin=null + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:returnGenericSuspendValueNative visibility:public modality:FINAL returnType:T of .returnGenericSuspendValueNative [suspend] + TYPE_PARAMETER GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:T index:0 variance: superTypes:[kotlin.Any?] reified:false + VALUE_PARAMETER GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] kind:Regular name:value index:0 type:T of .returnGenericSuspendValueNative + annotations: + ObjCName(name = "returnGenericSuspendValue", swiftName = , exact = ) + Throws(exceptionClasses = [CLASS_REFERENCE 'CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:Exception modality:OPEN visibility:public superTypes:[kotlin.Throwable]' type=kotlin.reflect.KClass] type=kotlin.Array varargElementType=kotlin.Throwable) + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_3 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun returnGenericSuspendValueNative (value: T of .returnGenericSuspendValueNative): T of .returnGenericSuspendValueNative declared in ' + CALL 'public final fun returnGenericSuspendValue (value: T of .returnGenericSuspendValue): T of .returnGenericSuspendValue declared in ' type=T of .returnGenericSuspendValue origin=null + TYPE_ARG T: T of .returnGenericSuspendValueNative + ARG value: GET_VAR 'value: T of .returnGenericSuspendValueNative declared in .returnGenericSuspendValueNative' type=T of .returnGenericSuspendValueNative origin=null + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:returnInlineSuspendValueNative visibility:public modality:FINAL returnType:T of .returnInlineSuspendValueNative [inline,suspend] + TYPE_PARAMETER GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:T index:0 variance: superTypes:[kotlin.Any?] reified:true + VALUE_PARAMETER GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] kind:Regular name:value index:0 type:T of .returnInlineSuspendValueNative + annotations: + ObjCName(name = "returnInlineSuspendValue", swiftName = , exact = ) + Throws(exceptionClasses = [CLASS_REFERENCE 'CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:Exception modality:OPEN visibility:public superTypes:[kotlin.Throwable]' type=kotlin.reflect.KClass] type=kotlin.Array varargElementType=kotlin.Throwable) + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_4 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun returnInlineSuspendValueNative (value: T of .returnInlineSuspendValueNative): T of .returnInlineSuspendValueNative declared in ' + CALL 'public final fun returnInlineSuspendValue (value: T of .returnInlineSuspendValue): T of .returnInlineSuspendValue declared in ' type=T of .returnInlineSuspendValue origin=null + TYPE_ARG T: T of .returnInlineSuspendValueNative + ARG value: GET_VAR 'value: T of .returnInlineSuspendValueNative declared in .returnInlineSuspendValueNative' type=T of .returnInlineSuspendValueNative origin=null + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:returnNullableFlowAndValueNative visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.Flow? + annotations: + ObjCName(name = "returnNullableFlowAndValue", swiftName = , exact = ) + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_5 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun returnNullableFlowAndValueNative (): kotlinx.coroutines.flow.Flow? declared in ' + CALL 'public final fun returnNullableFlowAndValue (): kotlinx.coroutines.flow.Flow? declared in ' type=kotlinx.coroutines.flow.Flow? origin=null + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:returnNullableFlowNative visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.Flow? + annotations: + ObjCName(name = "returnNullableFlow", swiftName = , exact = ) + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_6 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun returnNullableFlowNative (): kotlinx.coroutines.flow.Flow? declared in ' + CALL 'public final fun returnNullableFlow (): kotlinx.coroutines.flow.Flow? declared in ' type=kotlinx.coroutines.flow.Flow? origin=null + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:returnNullableFlowValueNative visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.Flow + annotations: + ObjCName(name = "returnNullableFlowValue", swiftName = , exact = ) + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_7 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun returnNullableFlowValueNative (): kotlinx.coroutines.flow.Flow declared in ' + CALL 'public final fun returnNullableFlowValue (): kotlinx.coroutines.flow.Flow declared in ' type=kotlinx.coroutines.flow.Flow origin=null + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:returnNullableSuspendFlowNative visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.Flow? [suspend] + annotations: + ObjCName(name = "returnNullableSuspendFlow", swiftName = , exact = ) + Throws(exceptionClasses = [CLASS_REFERENCE 'CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:Exception modality:OPEN visibility:public superTypes:[kotlin.Throwable]' type=kotlin.reflect.KClass] type=kotlin.Array varargElementType=kotlin.Throwable) + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_8 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun returnNullableSuspendFlowNative (): kotlinx.coroutines.flow.Flow? declared in ' + CALL 'public final fun returnNullableSuspendFlow (): kotlinx.coroutines.flow.Flow? declared in ' type=kotlinx.coroutines.flow.Flow? origin=null + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:returnNullableSuspendValueNative visibility:public modality:FINAL returnType:kotlin.String? [suspend] + annotations: + ObjCName(name = "returnNullableSuspendValue", swiftName = , exact = ) + Throws(exceptionClasses = [CLASS_REFERENCE 'CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:Exception modality:OPEN visibility:public superTypes:[kotlin.Throwable]' type=kotlin.reflect.KClass] type=kotlin.Array varargElementType=kotlin.Throwable) + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_9 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun returnNullableSuspendValueNative (): kotlin.String? declared in ' + CALL 'public final fun returnNullableSuspendValue (): kotlin.String? declared in ' type=kotlin.String? origin=null + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:returnRefinedSuspendValueNative visibility:public modality:FINAL returnType:kotlin.String [suspend] + annotations: + ObjCName(name = "returnRefinedSuspendValue", swiftName = , exact = ) + ShouldRefineInSwift + Throws(exceptionClasses = [CLASS_REFERENCE 'CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:Exception modality:OPEN visibility:public superTypes:[kotlin.Throwable]' type=kotlin.reflect.KClass] type=kotlin.Array varargElementType=kotlin.Throwable) + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_10 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun returnRefinedSuspendValueNative (): kotlin.String declared in ' + CALL 'public final fun returnRefinedSuspendValue (): kotlin.String declared in ' type=kotlin.String origin=null + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:returnStateFlowValueNative visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.StateFlow + annotations: + ObjCName(name = "returnStateFlowValue", swiftName = , exact = ) + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_11 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun returnStateFlowValueNative (): kotlinx.coroutines.flow.StateFlow declared in ' + CALL 'public final fun returnStateFlowValue (): kotlinx.coroutines.flow.StateFlow declared in ' type=kotlinx.coroutines.flow.StateFlow origin=null + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:returnSuspendFlowValueNative visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.Flow [suspend] + annotations: + ObjCName(name = "returnSuspendFlowValue", swiftName = , exact = ) + ShouldRefineInSwift + Throws(exceptionClasses = [CLASS_REFERENCE 'CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:Exception modality:OPEN visibility:public superTypes:[kotlin.Throwable]' type=kotlin.reflect.KClass] type=kotlin.Array varargElementType=kotlin.Throwable) + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_12 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun returnSuspendFlowValueNative (): kotlinx.coroutines.flow.Flow declared in ' + CALL 'public final fun returnSuspendFlowValue (): kotlinx.coroutines.flow.Flow declared in ' type=kotlinx.coroutines.flow.Flow origin=null + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:returnSuspendParameterValueNative visibility:public modality:FINAL returnType:kotlin.Int [suspend] + VALUE_PARAMETER GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] kind:Regular name:value index:0 type:kotlin.Int + annotations: + ObjCName(name = "returnSuspendParameterValue", swiftName = , exact = ) + Throws(exceptionClasses = [CLASS_REFERENCE 'CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:Exception modality:OPEN visibility:public superTypes:[kotlin.Throwable]' type=kotlin.reflect.KClass] type=kotlin.Array varargElementType=kotlin.Throwable) + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_13 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun returnSuspendParameterValueNative (value: kotlin.Int): kotlin.Int declared in ' + CALL 'public final fun returnSuspendParameterValue (value: kotlin.Int): kotlin.Int declared in ' type=kotlin.Int origin=null + ARG value: GET_VAR 'value: kotlin.Int declared in .returnSuspendParameterValueNative' type=kotlin.Int origin=null + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:returnSuspendParameterValueNative visibility:public modality:FINAL returnType:kotlin.String [suspend] + VALUE_PARAMETER GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] kind:Regular name:value index:0 type:kotlin.String + annotations: + ObjCName(name = "returnSuspendParameterValue", swiftName = , exact = ) + Throws(exceptionClasses = [CLASS_REFERENCE 'CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:Exception modality:OPEN visibility:public superTypes:[kotlin.Throwable]' type=kotlin.reflect.KClass] type=kotlin.Array varargElementType=kotlin.Throwable) + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_14 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun returnSuspendParameterValueNative (value: kotlin.String): kotlin.String declared in ' + CALL 'public final fun returnSuspendParameterValue (value: kotlin.String): kotlin.String declared in ' type=kotlin.String origin=null + ARG value: GET_VAR 'value: kotlin.String declared in .returnSuspendParameterValueNative' type=kotlin.String origin=null + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:returnSuspendValueNative visibility:public modality:FINAL returnType:kotlin.String [suspend] + annotations: + ObjCName(name = "returnSuspendValue", swiftName = , exact = ) + Throws(exceptionClasses = [CLASS_REFERENCE 'CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:Exception modality:OPEN visibility:public superTypes:[kotlin.Throwable]' type=kotlin.reflect.KClass] type=kotlin.Array varargElementType=kotlin.Throwable) + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_15 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun returnSuspendValueNative (): kotlin.String declared in ' + CALL 'public final fun returnSuspendValue (): kotlin.String declared in ' type=kotlin.String origin=null + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:returnSuspendVarargValueNative visibility:public modality:FINAL returnType:kotlin.String [suspend] + VALUE_PARAMETER GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] kind:Regular name:values index:0 type:kotlin.Array varargElementType:kotlin.String [vararg] + annotations: + ObjCName(name = "returnSuspendVarargValue", swiftName = , exact = ) + Throws(exceptionClasses = [CLASS_REFERENCE 'CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:Exception modality:OPEN visibility:public superTypes:[kotlin.Throwable]' type=kotlin.reflect.KClass] type=kotlin.Array varargElementType=kotlin.Throwable) + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_16 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun returnSuspendVarargValueNative (vararg values: kotlin.String): kotlin.String declared in ' + CALL 'public final fun returnSuspendVarargValue (vararg values: kotlin.String): kotlin.String declared in ' type=kotlin.String origin=null + ARG values: GET_VAR 'values: kotlin.Array declared in .returnSuspendVarargValueNative' type=kotlin.Array origin=null + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:returnThrowsSuspendValueNative visibility:public modality:FINAL returnType:kotlin.String [suspend] + annotations: + ObjCName(name = "returnThrowsSuspendValue", swiftName = , exact = ) + Throws(exceptionClasses = [CLASS_REFERENCE 'CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:Exception modality:OPEN visibility:public superTypes:[kotlin.Throwable]' type=kotlin.reflect.KClass] type=kotlin.Array varargElementType=kotlin.Throwable) + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_17 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun returnThrowsSuspendValueNative (): kotlin.String declared in ' + CALL 'public final fun returnThrowsSuspendValue (): kotlin.String declared in ' type=kotlin.String origin=null +FILE fqName: fileName:/functions.kt + CLASS CLASS name:MyClass14 modality:FINAL visibility:public superTypes:[kotlin.Any] + thisReceiver: VALUE_PARAMETER INSTANCE_RECEIVER kind:DispatchReceiver name: type:.MyClass14.MyClass14> + TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false + PROPERTY name:value visibility:private modality:FINAL [val] + FIELD PROPERTY_BACKING_FIELD name:value type:T of .MyClass14 visibility:private [final] + EXPRESSION_BODY + GET_VAR 'value: T of .MyClass14 declared in .MyClass14.' type=T of .MyClass14 origin=INITIALIZE_PROPERTY_FROM_PARAMETER + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:private modality:FINAL returnType:T of .MyClass14 + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyClass14.MyClass14> + correspondingProperty: PROPERTY name:value visibility:private modality:FINAL [val] + BLOCK_BODY + RETURN type=kotlin.Nothing from='private final fun (): T of .MyClass14 declared in .MyClass14' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:value type:T of .MyClass14 visibility:private [final]' type=T of .MyClass14 origin=null + receiver: GET_VAR ': .MyClass14.MyClass14> declared in .MyClass14.' type=.MyClass14.MyClass14> origin=null + CONSTRUCTOR visibility:public returnType:.MyClass14.MyClass14> [primary] + VALUE_PARAMETER kind:Regular name:value index:0 type:T of .MyClass14 + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'public constructor () declared in kotlin.Any' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:MyClass14 modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit + FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN returnType:kotlin.Boolean [fake_override,operator] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + VALUE_PARAMETER kind:Regular name:other index:1 type:kotlin.Any? + overridden: + public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Any + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN returnType:kotlin.Int [fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + overridden: + public open fun hashCode (): kotlin.Int declared in kotlin.Any + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN returnType:kotlin.String [fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + overridden: + public open fun toString (): kotlin.String declared in kotlin.Any + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:returnGenericSuspendValueNative visibility:public modality:FINAL returnType:T of .MyClass14 [suspend] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyClass14.MyClass14> + annotations: + ObjCName(name = "returnGenericSuspendValue", swiftName = , exact = ) + Throws(exceptionClasses = [CLASS_REFERENCE 'CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:Exception modality:OPEN visibility:public superTypes:[kotlin.Throwable]' type=kotlin.reflect.KClass] type=kotlin.Array varargElementType=kotlin.Throwable) + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_0 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun returnGenericSuspendValueNative (): T of .MyClass14 declared in .MyClass14' + CALL 'public final fun returnGenericSuspendValue (): T of .MyClass14 declared in .MyClass14' type=T of .MyClass14 origin=null + ARG : GET_VAR ': .MyClass14.MyClass14> declared in .MyClass14.returnGenericSuspendValueNative' type=.MyClass14.MyClass14> origin=null + FUN name:returnGenericSuspendValue visibility:public modality:FINAL returnType:T of .MyClass14 [suspend] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyClass14.MyClass14> + annotations: + NativeCoroutines + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun returnGenericSuspendValue (): T of .MyClass14 declared in .MyClass14' + CALL 'private final fun (): T of .MyClass14 declared in .MyClass14' type=T of .MyClass14 origin=GET_PROPERTY + ARG : GET_VAR ': .MyClass14.MyClass14> declared in .MyClass14.returnGenericSuspendValue' type=.MyClass14.MyClass14> origin=IMPLICIT_ARGUMENT + CLASS CLASS name:MyClass16 modality:FINAL visibility:public superTypes:[kotlin.Any] + thisReceiver: VALUE_PARAMETER INSTANCE_RECEIVER kind:DispatchReceiver name: type:.MyClass16 + CONSTRUCTOR visibility:public returnType:.MyClass16 [primary] + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'public constructor () declared in kotlin.Any' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:MyClass16 modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit + FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN returnType:kotlin.Boolean [fake_override,operator] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + VALUE_PARAMETER kind:Regular name:other index:1 type:kotlin.Any? + overridden: + public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Any + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN returnType:kotlin.Int [fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + overridden: + public open fun hashCode (): kotlin.Int declared in kotlin.Any + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN returnType:kotlin.String [fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + overridden: + public open fun toString (): kotlin.String declared in kotlin.Any + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:functionWithGenericValuesNative visibility:public modality:FINAL returnType:kotlin.String [suspend] + TYPE_PARAMETER GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:T1 index:0 variance: superTypes:[kotlin.Any?] reified:false + TYPE_PARAMETER GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:T2 index:1 variance: superTypes:[T1 of .MyClass16.functionWithGenericValuesNative] reified:false + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyClass16 + VALUE_PARAMETER GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] kind:Regular name:value1 index:1 type:T1 of .MyClass16.functionWithGenericValuesNative + VALUE_PARAMETER GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] kind:Regular name:value2 index:2 type:T2 of .MyClass16.functionWithGenericValuesNative + annotations: + ObjCName(name = "functionWithGenericValues", swiftName = , exact = ) + Throws(exceptionClasses = [CLASS_REFERENCE 'CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:Exception modality:OPEN visibility:public superTypes:[kotlin.Throwable]' type=kotlin.reflect.KClass] type=kotlin.Array varargElementType=kotlin.Throwable) + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_1 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun functionWithGenericValuesNative (value1: T1 of .MyClass16.functionWithGenericValuesNative, value2: T2 of .MyClass16.functionWithGenericValuesNative): kotlin.String declared in .MyClass16' + CALL 'public final fun functionWithGenericValues (value1: T1 of .MyClass16.functionWithGenericValues, value2: T2 of .MyClass16.functionWithGenericValues): kotlin.String declared in .MyClass16' type=kotlin.String origin=null + TYPE_ARG T1: T1 of .MyClass16.functionWithGenericValuesNative + TYPE_ARG T2: T2 of .MyClass16.functionWithGenericValuesNative + ARG : GET_VAR ': .MyClass16 declared in .MyClass16.functionWithGenericValuesNative' type=.MyClass16 origin=null + ARG value1: GET_VAR 'value1: T1 of .MyClass16.functionWithGenericValuesNative declared in .MyClass16.functionWithGenericValuesNative' type=T1 of .MyClass16.functionWithGenericValuesNative origin=null + ARG value2: GET_VAR 'value2: T2 of .MyClass16.functionWithGenericValuesNative declared in .MyClass16.functionWithGenericValuesNative' type=T2 of .MyClass16.functionWithGenericValuesNative origin=null + FUN name:functionWithGenericValues visibility:public modality:FINAL returnType:kotlin.String [suspend] + TYPE_PARAMETER name:T1 index:0 variance: superTypes:[kotlin.Any?] reified:false + TYPE_PARAMETER name:T2 index:1 variance: superTypes:[T1 of .MyClass16.functionWithGenericValues] reified:false + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyClass16 + VALUE_PARAMETER kind:Regular name:value1 index:1 type:T1 of .MyClass16.functionWithGenericValues + VALUE_PARAMETER kind:Regular name:value2 index:2 type:T2 of .MyClass16.functionWithGenericValues + annotations: + NativeCoroutines + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun functionWithGenericValues (value1: T1 of .MyClass16.functionWithGenericValues, value2: T2 of .MyClass16.functionWithGenericValues): kotlin.String declared in .MyClass16' + CALL 'public final fun plus (other: kotlin.Any?): kotlin.String declared in kotlin.String' type=kotlin.String origin=PLUS + ARG : CALL 'public final fun toString (: kotlin.Any?): kotlin.String declared in kotlin' type=kotlin.String origin=null + ARG : GET_VAR 'value1: T1 of .MyClass16.functionWithGenericValues declared in .MyClass16.functionWithGenericValues' type=T1 of .MyClass16.functionWithGenericValues origin=null + ARG other: CALL 'public final fun toString (: kotlin.Any?): kotlin.String declared in kotlin' type=kotlin.String origin=null + ARG : GET_VAR 'value2: T2 of .MyClass16.functionWithGenericValues declared in .MyClass16.functionWithGenericValues' type=T2 of .MyClass16.functionWithGenericValues origin=null + CLASS CLASS name:MyClass20 modality:FINAL visibility:public superTypes:[kotlin.Any] + thisReceiver: VALUE_PARAMETER INSTANCE_RECEIVER kind:DispatchReceiver name: type:.MyClass20 + CONSTRUCTOR visibility:public returnType:.MyClass20 [primary] + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'public constructor () declared in kotlin.Any' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:MyClass20 modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit + FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN returnType:kotlin.Boolean [fake_override,operator] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + VALUE_PARAMETER kind:Regular name:other index:1 type:kotlin.Any? + overridden: + public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Any + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN returnType:kotlin.Int [fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + overridden: + public open fun hashCode (): kotlin.Int declared in kotlin.Any + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN returnType:kotlin.String [fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + overridden: + public open fun toString (): kotlin.String declared in kotlin.Any + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:returnClassExtensionValueNative visibility:public modality:FINAL returnType:kotlin.String [suspend] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyClass20 + VALUE_PARAMETER kind:ExtensionReceiver name: index:1 type:kotlin.String + annotations: + ObjCName(name = "returnClassExtensionValue", swiftName = , exact = ) + Throws(exceptionClasses = [CLASS_REFERENCE 'CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:Exception modality:OPEN visibility:public superTypes:[kotlin.Throwable]' type=kotlin.reflect.KClass] type=kotlin.Array varargElementType=kotlin.Throwable) + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_2 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun returnClassExtensionValueNative (: kotlin.String): kotlin.String declared in .MyClass20' + CALL 'public final fun returnClassExtensionValue (: kotlin.String): kotlin.String declared in .MyClass20' type=kotlin.String origin=null + ARG (index:0): GET_VAR '(index:0): .MyClass20 declared in .MyClass20.returnClassExtensionValueNative' type=.MyClass20 origin=null + ARG (index:1): GET_VAR '(index:1): kotlin.String declared in .MyClass20.returnClassExtensionValueNative' type=kotlin.String origin=null + FUN name:returnClassExtensionValue visibility:public modality:FINAL returnType:kotlin.String [suspend] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyClass20 + VALUE_PARAMETER kind:ExtensionReceiver name: index:1 type:kotlin.String + annotations: + NativeCoroutines + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun returnClassExtensionValue (: kotlin.String): kotlin.String declared in .MyClass20' + GET_VAR '(index:1): kotlin.String declared in .MyClass20.returnClassExtensionValue' type=kotlin.String origin=null + CLASS CLASS name:MyClass21 modality:FINAL visibility:public superTypes:[kotlin.Any] + thisReceiver: VALUE_PARAMETER INSTANCE_RECEIVER kind:DispatchReceiver name: type:.MyClass21.MyClass21> + TYPE_PARAMETER name:T index:0 variance:out superTypes:[kotlin.Any?] reified:false + CONSTRUCTOR visibility:public returnType:.MyClass21.MyClass21> [primary] + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'public constructor () declared in kotlin.Any' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:MyClass21 modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit + FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN returnType:kotlin.Boolean [fake_override,operator] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + VALUE_PARAMETER kind:Regular name:other index:1 type:kotlin.Any? + overridden: + public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Any + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN returnType:kotlin.Int [fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + overridden: + public open fun hashCode (): kotlin.Int declared in kotlin.Any + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN returnType:kotlin.String [fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + overridden: + public open fun toString (): kotlin.String declared in kotlin.Any + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:returnGenericValueNative visibility:public modality:FINAL returnType:T of .MyClass21? [suspend] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyClass21.MyClass21> + annotations: + ObjCName(name = "returnGenericValue", swiftName = , exact = ) + Throws(exceptionClasses = [CLASS_REFERENCE 'CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:Exception modality:OPEN visibility:public superTypes:[kotlin.Throwable]' type=kotlin.reflect.KClass] type=kotlin.Array varargElementType=kotlin.Throwable) + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_3 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun returnGenericValueNative (): T of .MyClass21? declared in .MyClass21' + CALL 'public final fun returnGenericValue (): T of .MyClass21? declared in .MyClass21' type=T of .MyClass21? origin=null + ARG : GET_VAR ': .MyClass21.MyClass21> declared in .MyClass21.returnGenericValueNative' type=.MyClass21.MyClass21> origin=null + FUN name:returnGenericValue visibility:public modality:FINAL returnType:T of .MyClass21? [suspend] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyClass21.MyClass21> + annotations: + NativeCoroutines + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun returnGenericValue (): T of .MyClass21? declared in .MyClass21' + CONST Null type=kotlin.Nothing? value=null + CLASS CLASS name:MyClass22 modality:FINAL visibility:public superTypes:[.MyInterface22] + thisReceiver: VALUE_PARAMETER INSTANCE_RECEIVER kind:DispatchReceiver name: type:.MyClass22 + CONSTRUCTOR visibility:public returnType:.MyClass22 [primary] + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'public constructor () declared in kotlin.Any' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:MyClass22 modality:FINAL visibility:public superTypes:[.MyInterface22]' type=kotlin.Unit + FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN returnType:kotlin.Boolean [fake_override,operator] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + VALUE_PARAMETER kind:Regular name:other index:1 type:kotlin.Any? + overridden: + public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in .MyInterface22 + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN returnType:kotlin.Int [fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + overridden: + public open fun hashCode (): kotlin.Int declared in .MyInterface22 + FUN FAKE_OVERRIDE name:returnInterfaceSuspendValueNative visibility:public modality:OPEN returnType:kotlin.String [suspend,fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyInterface22 + annotations: + ObjCName(name = "returnInterfaceSuspendValue", swiftName = , exact = ) + Throws(exceptionClasses = [CLASS_REFERENCE 'CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:Exception modality:OPEN visibility:public superTypes:[kotlin.Throwable]' type=kotlin.reflect.KClass] type=kotlin.Array varargElementType=kotlin.Throwable) + overridden: + public open fun returnInterfaceSuspendValueNative (): kotlin.String declared in .MyInterface22 + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN returnType:kotlin.String [fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + overridden: + public open fun toString (): kotlin.String declared in .MyInterface22 + FUN name:returnInterfaceSuspendValue visibility:public modality:OPEN returnType:kotlin.String [suspend] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyClass22 + annotations: + NativeCoroutines + overridden: + public abstract fun returnInterfaceSuspendValue (): kotlin.String declared in .MyInterface22 + BLOCK_BODY + RETURN type=kotlin.Nothing from='public open fun returnInterfaceSuspendValue (): kotlin.String declared in .MyClass22' + CONST String type=kotlin.String value="OK22" + CLASS CLASS name:MyClass8 modality:FINAL visibility:public superTypes:[kotlin.Any] + thisReceiver: VALUE_PARAMETER INSTANCE_RECEIVER kind:DispatchReceiver name: type:.MyClass8 + CONSTRUCTOR visibility:public returnType:.MyClass8 [primary] + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'public constructor () declared in kotlin.Any' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:MyClass8 modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit + FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN returnType:kotlin.Boolean [fake_override,operator] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + VALUE_PARAMETER kind:Regular name:other index:1 type:kotlin.Any? + overridden: + public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Any + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN returnType:kotlin.Int [fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + overridden: + public open fun hashCode (): kotlin.Int declared in kotlin.Any + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN returnType:kotlin.String [fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + overridden: + public open fun toString (): kotlin.String declared in kotlin.Any + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:returnSuspendValueNative visibility:public modality:FINAL returnType:kotlin.String [suspend] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyClass8 + annotations: + ObjCName(name = "returnSuspendValue", swiftName = , exact = ) + Throws(exceptionClasses = [CLASS_REFERENCE 'CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:Exception modality:OPEN visibility:public superTypes:[kotlin.Throwable]' type=kotlin.reflect.KClass] type=kotlin.Array varargElementType=kotlin.Throwable) + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_4 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun returnSuspendValueNative (): kotlin.String declared in .MyClass8' + CALL 'public final fun returnSuspendValue (): kotlin.String declared in .MyClass8' type=kotlin.String origin=null + ARG : GET_VAR ': .MyClass8 declared in .MyClass8.returnSuspendValueNative' type=.MyClass8 origin=null + FUN name:returnSuspendValue visibility:public modality:FINAL returnType:kotlin.String [suspend] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyClass8 + annotations: + NativeCoroutines + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun returnSuspendValue (): kotlin.String declared in .MyClass8' + CONST String type=kotlin.String value="OK8" + CLASS CLASS name:MyFlow23 modality:FINAL visibility:public superTypes:[kotlinx.coroutines.flow.Flow.MyFlow23>] + thisReceiver: VALUE_PARAMETER INSTANCE_RECEIVER kind:DispatchReceiver name: type:.MyFlow23.MyFlow23, T2 of .MyFlow23> + TYPE_PARAMETER name:T1 index:0 variance: superTypes:[kotlin.Any?] reified:false + TYPE_PARAMETER name:T2 index:1 variance: superTypes:[kotlin.Any?] reified:false + FIELD DELEGATE name:$$delegate_0 type:kotlinx.coroutines.flow.Flow.MyFlow23> visibility:private [final] + EXPRESSION_BODY + CALL 'public final fun flowOf (value: T of kotlinx.coroutines.flow.flowOf): kotlinx.coroutines.flow.Flow declared in kotlinx.coroutines.flow' type=kotlinx.coroutines.flow.Flow.MyFlow23> origin=null + TYPE_ARG T: T2 of .MyFlow23 + ARG value: GET_VAR 'value2: T2 of .MyFlow23 declared in .MyFlow23.' type=T2 of .MyFlow23 origin=null + CONSTRUCTOR visibility:public returnType:.MyFlow23.MyFlow23, T2 of .MyFlow23> [primary] + VALUE_PARAMETER kind:Regular name:value1 index:0 type:T1 of .MyFlow23 + VALUE_PARAMETER kind:Regular name:value2 index:1 type:T2 of .MyFlow23 + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'public constructor () declared in kotlin.Any' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:MyFlow23 modality:FINAL visibility:public superTypes:[kotlinx.coroutines.flow.Flow.MyFlow23>]' type=kotlin.Unit + FUN DELEGATED_MEMBER name:collect visibility:public modality:OPEN returnType:kotlin.Unit [suspend] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyFlow23.MyFlow23, T2 of .MyFlow23> + VALUE_PARAMETER kind:Regular name:collector index:1 type:kotlinx.coroutines.flow.FlowCollector.MyFlow23> + overridden: + public abstract fun collect (collector: kotlinx.coroutines.flow.FlowCollector): kotlin.Unit declared in kotlinx.coroutines.flow.Flow + BLOCK_BODY + CALL 'public abstract fun collect (collector: kotlinx.coroutines.flow.FlowCollector): kotlin.Unit declared in kotlinx.coroutines.flow.Flow' type=kotlin.Unit origin=null + ARG : GET_FIELD 'FIELD DELEGATE name:$$delegate_0 type:kotlinx.coroutines.flow.Flow.MyFlow23> visibility:private [final] declared in .MyFlow23' type=kotlinx.coroutines.flow.Flow.MyFlow23> origin=null + receiver: GET_VAR ': .MyFlow23.MyFlow23, T2 of .MyFlow23> declared in .MyFlow23.collect' type=.MyFlow23.MyFlow23, T2 of .MyFlow23> origin=null + ARG collector: GET_VAR 'collector: kotlinx.coroutines.flow.FlowCollector.MyFlow23> declared in .MyFlow23.collect' type=kotlinx.coroutines.flow.FlowCollector.MyFlow23> origin=null + FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN returnType:kotlin.Boolean [fake_override,operator] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + VALUE_PARAMETER kind:Regular name:other index:1 type:kotlin.Any? + overridden: + public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlinx.coroutines.flow.Flow + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN returnType:kotlin.Int [fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + overridden: + public open fun hashCode (): kotlin.Int declared in kotlinx.coroutines.flow.Flow + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN returnType:kotlin.String [fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + overridden: + public open fun toString (): kotlin.String declared in kotlinx.coroutines.flow.Flow + CLASS INTERFACE name:MyInterface22 modality:ABSTRACT visibility:public superTypes:[kotlin.Any] + thisReceiver: VALUE_PARAMETER INSTANCE_RECEIVER kind:DispatchReceiver name: type:.MyInterface22 + FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN returnType:kotlin.Boolean [fake_override,operator] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + VALUE_PARAMETER kind:Regular name:other index:1 type:kotlin.Any? + overridden: + public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Any + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN returnType:kotlin.Int [fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + overridden: + public open fun hashCode (): kotlin.Int declared in kotlin.Any + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN returnType:kotlin.String [fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + overridden: + public open fun toString (): kotlin.String declared in kotlin.Any + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:returnInterfaceSuspendValueNative visibility:public modality:OPEN returnType:kotlin.String [suspend] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyInterface22 + annotations: + ObjCName(name = "returnInterfaceSuspendValue", swiftName = , exact = ) + Throws(exceptionClasses = [CLASS_REFERENCE 'CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:Exception modality:OPEN visibility:public superTypes:[kotlin.Throwable]' type=kotlin.reflect.KClass] type=kotlin.Array varargElementType=kotlin.Throwable) + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_5 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public open fun returnInterfaceSuspendValueNative (): kotlin.String declared in .MyInterface22' + CALL 'public abstract fun returnInterfaceSuspendValue (): kotlin.String declared in .MyInterface22' type=kotlin.String origin=null + ARG : GET_VAR ': .MyInterface22 declared in .MyInterface22.returnInterfaceSuspendValueNative' type=.MyInterface22 origin=null + FUN name:returnInterfaceSuspendValue visibility:public modality:ABSTRACT returnType:kotlin.String [suspend] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyInterface22 + annotations: + NativeCoroutines + FUN name:box visibility:public modality:FINAL returnType:kotlin.String + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun box (): kotlin.String declared in ' + CALL 'public final fun runBoxTest (action: @[ExtensionFunctionType] kotlin.coroutines.SuspendFunction1): kotlin.String declared in com.rickclephas.kmp.nativecoroutines' type=kotlin.String origin=null + ARG action: FUN_EXPR type=@[ExtensionFunctionType] kotlin.coroutines.SuspendFunction1 origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL returnType:kotlin.Unit [suspend] + VALUE_PARAMETER kind:ExtensionReceiver name:$this$runBoxTest index:0 type:com.rickclephas.kmp.nativecoroutines.BoxTest + BLOCK_BODY + CALL 'public final fun await (result: kotlin.coroutines.SuspendFunction0): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG result: FUN_EXPR type=kotlin.coroutines.SuspendFunction0 origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL returnType:kotlin.String [suspend] + BLOCK_BODY + RETURN type=kotlin.Nothing from='local final fun (): kotlin.String declared in .box.' + CALL 'public final fun returnSuspendValueNative (): kotlin.String declared in ' type=kotlin.String origin=null + CALL 'public final fun await (result: kotlin.coroutines.SuspendFunction0): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String? + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG result: FUN_EXPR type=kotlin.coroutines.SuspendFunction0 origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL returnType:kotlin.String? [suspend] + BLOCK_BODY + RETURN type=kotlin.Nothing from='local final fun (): kotlin.String? declared in .box.' + CALL 'public final fun returnNullableSuspendValueNative (): kotlin.String? declared in ' type=kotlin.String? origin=null + CALL 'public final fun collect (flow: kotlinx.coroutines.flow.Flow, maxValues: kotlin.Int?): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG flow: CALL 'public final fun returnFlowValueNative (): kotlinx.coroutines.flow.Flow declared in ' type=kotlinx.coroutines.flow.Flow origin=null + CALL 'public final fun collect (flow: kotlinx.coroutines.flow.Flow, maxValues: kotlin.Int?): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String? + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG flow: CALL 'public final fun returnNullableFlowValueNative (): kotlinx.coroutines.flow.Flow declared in ' type=kotlinx.coroutines.flow.Flow origin=null + CALL 'public final fun value (value: T of com.rickclephas.kmp.nativecoroutines.BoxTest.value): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlinx.coroutines.flow.Flow? + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG value: CALL 'public final fun returnNullableFlowNative (): kotlinx.coroutines.flow.Flow? declared in ' type=kotlinx.coroutines.flow.Flow? origin=null + CALL 'public final fun value (value: T of com.rickclephas.kmp.nativecoroutines.BoxTest.value): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlinx.coroutines.flow.Flow? + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG value: CALL 'public final fun returnNullableFlowAndValueNative (): kotlinx.coroutines.flow.Flow? declared in ' type=kotlinx.coroutines.flow.Flow? origin=null + CALL 'public final fun collect (flow: kotlinx.coroutines.flow.Flow, maxValues: kotlin.Int?): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG flow: CALL 'public final fun returnStateFlowValueNative (): kotlinx.coroutines.flow.StateFlow declared in ' type=kotlinx.coroutines.flow.StateFlow origin=null + ARG maxValues: CONST Int type=kotlin.Int value=1 + CALL 'public final fun await (result: kotlin.coroutines.SuspendFunction0): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG result: FUN_EXPR type=kotlin.coroutines.SuspendFunction0 origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL returnType:kotlin.String [suspend] + BLOCK_BODY + RETURN type=kotlin.Nothing from='local final fun (): kotlin.String declared in .box.' + CALL 'public final fun returnSuspendValueNative (): kotlin.String declared in .MyClass8' type=kotlin.String origin=null + ARG : CONSTRUCTOR_CALL 'public constructor () declared in .MyClass8' type=.MyClass8 origin=null + CALL 'public final fun await (result: kotlin.coroutines.SuspendFunction0): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG result: FUN_EXPR type=kotlin.coroutines.SuspendFunction0 origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL returnType:kotlin.String [suspend] + BLOCK_BODY + RETURN type=kotlin.Nothing from='local final fun (): kotlin.String declared in .box.' + CALL 'public final fun returnSuspendParameterValueNative (value: kotlin.String): kotlin.String declared in ' type=kotlin.String origin=null + ARG value: CONST String type=kotlin.String value="OK9" + CALL 'public final fun await (result: kotlin.coroutines.SuspendFunction0): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.Int + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG result: FUN_EXPR type=kotlin.coroutines.SuspendFunction0 origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL returnType:kotlin.Int [suspend] + BLOCK_BODY + RETURN type=kotlin.Nothing from='local final fun (): kotlin.Int declared in .box.' + CALL 'public final fun returnSuspendParameterValueNative (value: kotlin.Int): kotlin.Int declared in ' type=kotlin.Int origin=null + ARG value: CONST Int type=kotlin.Int value=9 + CALL 'public final fun await (result: kotlin.coroutines.SuspendFunction0): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG result: FUN_EXPR type=kotlin.coroutines.SuspendFunction0 origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL returnType:kotlin.String [suspend] + BLOCK_BODY + RETURN type=kotlin.Nothing from='local final fun (): kotlin.String declared in .box.' + CALL 'public final fun returnThrowsSuspendValueNative (): kotlin.String declared in ' type=kotlin.String origin=null + CALL 'public final fun await (result: kotlin.coroutines.SuspendFunction0): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG result: FUN_EXPR type=kotlin.coroutines.SuspendFunction0 origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL returnType:kotlin.String [suspend] + BLOCK_BODY + RETURN type=kotlin.Nothing from='local final fun (): kotlin.String declared in .box.' + CALL 'public final fun returnSuspendVarargValueNative (vararg values: kotlin.String): kotlin.String declared in ' type=kotlin.String origin=null + ARG values: VARARG type=kotlin.Array varargElementType=kotlin.String + CONST String type=kotlin.String value="OK11" + CALL 'public final fun await (result: kotlin.coroutines.SuspendFunction0): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG result: FUN_EXPR type=kotlin.coroutines.SuspendFunction0 origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL returnType:kotlin.String [suspend] + BLOCK_BODY + RETURN type=kotlin.Nothing from='local final fun (): kotlin.String declared in .box.' + CALL 'public final fun returnGenericSuspendValueNative (): T of .MyClass14 declared in .MyClass14' type=kotlin.String origin=null + ARG : CONSTRUCTOR_CALL 'public constructor (value: T of .MyClass14) declared in .MyClass14' type=.MyClass14 origin=null + TYPE_ARG (of class) T: kotlin.String + ARG value: CONST String type=kotlin.String value="OK12" + CALL 'public final fun await (result: kotlin.coroutines.SuspendFunction0): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG result: FUN_EXPR type=kotlin.coroutines.SuspendFunction0 origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL returnType:kotlin.String [suspend] + BLOCK_BODY + RETURN type=kotlin.Nothing from='local final fun (): kotlin.String declared in .box.' + CALL 'public final fun returnRefinedSuspendValueNative (): kotlin.String declared in ' type=kotlin.String origin=null + CALL 'public final fun awaitAndCollect (maxValues: kotlin.Int?, flow: kotlin.coroutines.SuspendFunction0>): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG flow: FUN_EXPR type=kotlin.coroutines.SuspendFunction0> origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL returnType:kotlinx.coroutines.flow.Flow [suspend] + BLOCK_BODY + RETURN type=kotlin.Nothing from='local final fun (): kotlinx.coroutines.flow.Flow declared in .box.' + CALL 'public final fun returnSuspendFlowValueNative (): kotlinx.coroutines.flow.Flow declared in ' type=kotlinx.coroutines.flow.Flow origin=null + CALL 'public final fun await (result: kotlin.coroutines.SuspendFunction0): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG result: FUN_EXPR type=kotlin.coroutines.SuspendFunction0 origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL returnType:kotlin.String [suspend] + BLOCK_BODY + RETURN type=kotlin.Nothing from='local final fun (): kotlin.String declared in .box.' + CALL 'public final fun returnGenericSuspendValueNative (value: T of .returnGenericSuspendValueNative): T of .returnGenericSuspendValueNative declared in ' type=kotlin.String origin=null + TYPE_ARG T: kotlin.String + ARG value: CONST String type=kotlin.String value="OK15" + CALL 'public final fun await (result: kotlin.coroutines.SuspendFunction0): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG result: FUN_EXPR type=kotlin.coroutines.SuspendFunction0 origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL returnType:kotlin.String [suspend] + BLOCK_BODY + RETURN type=kotlin.Nothing from='local final fun (): kotlin.String declared in .box.' + CALL 'public final fun functionWithGenericValuesNative (value1: T1 of .MyClass16.functionWithGenericValuesNative, value2: T2 of .MyClass16.functionWithGenericValuesNative): kotlin.String declared in .MyClass16' type=kotlin.String origin=null + TYPE_ARG T1: kotlin.CharSequence + TYPE_ARG T2: kotlin.String + ARG : CONSTRUCTOR_CALL 'public constructor () declared in .MyClass16' type=.MyClass16 origin=null + ARG value1: CONST String type=kotlin.String value="OK" + ARG value2: CONST String type=kotlin.String value="16" + CALL 'public final fun await (result: kotlin.coroutines.SuspendFunction0): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG result: FUN_EXPR type=kotlin.coroutines.SuspendFunction0 origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL returnType:kotlin.String [suspend] + BLOCK_BODY + RETURN type=kotlin.Nothing from='local final fun (): kotlin.String declared in .box.' + CALL 'public final fun returnInlineSuspendValueNative (value: T of .returnInlineSuspendValueNative): T of .returnInlineSuspendValueNative declared in ' type=kotlin.String origin=null + TYPE_ARG T: kotlin.String + ARG value: CONST String type=kotlin.String value="OK17" + CALL 'public final fun awaitAndCollectNull (flow: kotlin.coroutines.SuspendFunction0?>): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG flow: FUN_EXPR type=kotlin.coroutines.SuspendFunction0?> origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL returnType:kotlinx.coroutines.flow.Flow? [suspend] + BLOCK_BODY + RETURN type=kotlin.Nothing from='local final fun (): kotlinx.coroutines.flow.Flow? declared in .box.' + CALL 'public final fun returnNullableSuspendFlowNative (): kotlinx.coroutines.flow.Flow? declared in ' type=kotlinx.coroutines.flow.Flow? origin=null + CALL 'public final fun await (result: kotlin.coroutines.SuspendFunction0): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG result: FUN_EXPR type=kotlin.coroutines.SuspendFunction0 origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL returnType:kotlin.String [suspend] + BLOCK_BODY + RETURN type=kotlin.Nothing from='local final fun (): kotlin.String declared in .box.' + CALL 'public final fun returnExtensionValueNative (: kotlin.String): kotlin.String declared in ' type=kotlin.String origin=null + ARG : CONST String type=kotlin.String value="OK19" + CALL 'public final fun with (receiver: T of kotlin.with, block: @[ExtensionFunctionType] kotlin.Function1): R of kotlin.with declared in kotlin' type=kotlin.Unit origin=null + TYPE_ARG T: .MyClass20 + TYPE_ARG R: kotlin.Unit + ARG receiver: CONSTRUCTOR_CALL 'public constructor () declared in .MyClass20' type=.MyClass20 origin=null + ARG block: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1<.MyClass20, kotlin.Unit> origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL returnType:kotlin.Unit + VALUE_PARAMETER kind:ExtensionReceiver name:$this$with index:0 type:.MyClass20 + BLOCK_BODY + CALL 'public final fun await (result: kotlin.coroutines.SuspendFunction0): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG result: FUN_EXPR type=kotlin.coroutines.SuspendFunction0 origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL returnType:kotlin.String [suspend] + BLOCK_BODY + RETURN type=kotlin.Nothing from='local final fun (): kotlin.String declared in .box..' + CALL 'public final fun returnClassExtensionValueNative (: kotlin.String): kotlin.String declared in .MyClass20' type=kotlin.String origin=null + ARG (index:0): GET_VAR '$this$with: .MyClass20 declared in .box..' type=.MyClass20 origin=IMPLICIT_ARGUMENT + ARG (index:1): CONST String type=kotlin.String value="OK20" + CALL 'public final fun await (result: kotlin.coroutines.SuspendFunction0): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String? + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG result: FUN_EXPR type=kotlin.coroutines.SuspendFunction0 origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL returnType:kotlin.String? [suspend] + BLOCK_BODY + RETURN type=kotlin.Nothing from='local final fun (): kotlin.String? declared in .box.' + CALL 'public final fun returnGenericValueNative (): T of .MyClass21? declared in .MyClass21' type=kotlin.String? origin=null + ARG : CONSTRUCTOR_CALL 'public constructor () declared in .MyClass21' type=.MyClass21 origin=null + TYPE_ARG (of class) T: kotlin.String + CALL 'public final fun await (result: kotlin.coroutines.SuspendFunction0): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG result: FUN_EXPR type=kotlin.coroutines.SuspendFunction0 origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL returnType:kotlin.String [suspend] + BLOCK_BODY + RETURN type=kotlin.Nothing from='local final fun (): kotlin.String declared in .box.' + CALL 'public open fun returnInterfaceSuspendValueNative (): kotlin.String declared in .MyClass22' type=kotlin.String origin=null + ARG : CONSTRUCTOR_CALL 'public constructor () declared in .MyClass22' type=.MyClass22 origin=null + CALL 'public final fun collect (flow: kotlinx.coroutines.flow.Flow, maxValues: kotlin.Int?): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG flow: CALL 'public final fun returnCustomFlowValueNative (): .MyFlow23 declared in ' type=.MyFlow23 origin=null + FUN name:returnCustomFlowValue visibility:public modality:FINAL returnType:.MyFlow23 + annotations: + NativeCoroutines + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun returnCustomFlowValue (): .MyFlow23 declared in ' + CONSTRUCTOR_CALL 'public constructor (value1: T1 of .MyFlow23, value2: T2 of .MyFlow23) declared in .MyFlow23' type=.MyFlow23 origin=null + TYPE_ARG (of class) T1: kotlin.Int + TYPE_ARG (of class) T2: kotlin.String + ARG value1: CONST Int type=kotlin.Int value=23 + ARG value2: CONST String type=kotlin.String value="OK23" + FUN name:returnExtensionValue visibility:public modality:FINAL returnType:kotlin.String [suspend] + VALUE_PARAMETER kind:ExtensionReceiver name: index:0 type:kotlin.String + annotations: + NativeCoroutines + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun returnExtensionValue (: kotlin.String): kotlin.String declared in ' + GET_VAR ': kotlin.String declared in .returnExtensionValue' type=kotlin.String origin=null + FUN name:returnFlowValue visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.Flow + annotations: + NativeCoroutines + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun returnFlowValue (): kotlinx.coroutines.flow.Flow declared in ' + CALL 'public final fun flowOf (value: T of kotlinx.coroutines.flow.flowOf): kotlinx.coroutines.flow.Flow declared in kotlinx.coroutines.flow' type=kotlinx.coroutines.flow.Flow origin=null + TYPE_ARG T: kotlin.String + ARG value: CONST String type=kotlin.String value="OK3" + FUN name:returnGenericSuspendValue visibility:public modality:FINAL returnType:T of .returnGenericSuspendValue [suspend] + TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false + VALUE_PARAMETER kind:Regular name:value index:0 type:T of .returnGenericSuspendValue + annotations: + NativeCoroutines + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun returnGenericSuspendValue (value: T of .returnGenericSuspendValue): T of .returnGenericSuspendValue declared in ' + GET_VAR 'value: T of .returnGenericSuspendValue declared in .returnGenericSuspendValue' type=T of .returnGenericSuspendValue origin=null + FUN name:returnInlineSuspendValue visibility:public modality:FINAL returnType:T of .returnInlineSuspendValue [inline,suspend] + TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:true + VALUE_PARAMETER kind:Regular name:value index:0 type:T of .returnInlineSuspendValue + annotations: + NativeCoroutines + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun returnInlineSuspendValue (value: T of .returnInlineSuspendValue): T of .returnInlineSuspendValue declared in ' + GET_VAR 'value: T of .returnInlineSuspendValue declared in .returnInlineSuspendValue' type=T of .returnInlineSuspendValue origin=null + FUN name:returnNullableFlow visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.Flow? + annotations: + NativeCoroutines + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun returnNullableFlow (): kotlinx.coroutines.flow.Flow? declared in ' + CONST Null type=kotlin.Nothing? value=null + FUN name:returnNullableFlowAndValue visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.Flow? + annotations: + NativeCoroutines + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun returnNullableFlowAndValue (): kotlinx.coroutines.flow.Flow? declared in ' + CONST Null type=kotlin.Nothing? value=null + FUN name:returnNullableFlowValue visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.Flow + annotations: + NativeCoroutines + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun returnNullableFlowValue (): kotlinx.coroutines.flow.Flow declared in ' + CALL 'public final fun flowOf (value: T of kotlinx.coroutines.flow.flowOf): kotlinx.coroutines.flow.Flow declared in kotlinx.coroutines.flow' type=kotlinx.coroutines.flow.Flow origin=null + TYPE_ARG T: kotlin.String? + ARG value: CONST Null type=kotlin.Nothing? value=null + FUN name:returnNullableSuspendFlow visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.Flow? [suspend] + annotations: + NativeCoroutines + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun returnNullableSuspendFlow (): kotlinx.coroutines.flow.Flow? declared in ' + CONST Null type=kotlin.Nothing? value=null + FUN name:returnNullableSuspendValue visibility:public modality:FINAL returnType:kotlin.String? [suspend] + annotations: + NativeCoroutines + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun returnNullableSuspendValue (): kotlin.String? declared in ' + CONST Null type=kotlin.Nothing? value=null + FUN name:returnRefinedSuspendValue visibility:public modality:FINAL returnType:kotlin.String [suspend] + annotations: + NativeCoroutinesRefined + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun returnRefinedSuspendValue (): kotlin.String declared in ' + CONST String type=kotlin.String value="OK13" + FUN name:returnStateFlowValue visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.StateFlow + annotations: + NativeCoroutines + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun returnStateFlowValue (): kotlinx.coroutines.flow.StateFlow declared in ' + CALL 'public final fun MutableStateFlow (value: T of kotlinx.coroutines.flow.MutableStateFlow): kotlinx.coroutines.flow.MutableStateFlow declared in kotlinx.coroutines.flow' type=kotlinx.coroutines.flow.MutableStateFlow origin=null + TYPE_ARG T: kotlin.String + ARG value: CONST String type=kotlin.String value="OK7" + FUN name:returnSuspendFlowValue visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.Flow [suspend] + annotations: + NativeCoroutinesRefined + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun returnSuspendFlowValue (): kotlinx.coroutines.flow.Flow declared in ' + CALL 'public final fun flowOf (value: T of kotlinx.coroutines.flow.flowOf): kotlinx.coroutines.flow.Flow declared in kotlinx.coroutines.flow' type=kotlinx.coroutines.flow.Flow origin=null + TYPE_ARG T: kotlin.String + ARG value: CONST String type=kotlin.String value="OK14" + FUN name:returnSuspendParameterValue visibility:public modality:FINAL returnType:kotlin.Int [suspend] + VALUE_PARAMETER kind:Regular name:value index:0 type:kotlin.Int + annotations: + NativeCoroutines + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun returnSuspendParameterValue (value: kotlin.Int): kotlin.Int declared in ' + GET_VAR 'value: kotlin.Int declared in .returnSuspendParameterValue' type=kotlin.Int origin=null + FUN name:returnSuspendParameterValue visibility:public modality:FINAL returnType:kotlin.String [suspend] + VALUE_PARAMETER kind:Regular name:value index:0 type:kotlin.String + annotations: + NativeCoroutines + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun returnSuspendParameterValue (value: kotlin.String): kotlin.String declared in ' + GET_VAR 'value: kotlin.String declared in .returnSuspendParameterValue' type=kotlin.String origin=null + FUN name:returnSuspendValue visibility:public modality:FINAL returnType:kotlin.String [suspend] + annotations: + NativeCoroutines + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun returnSuspendValue (): kotlin.String declared in ' + CONST String type=kotlin.String value="OK1" + FUN name:returnSuspendVarargValue visibility:public modality:FINAL returnType:kotlin.String [suspend] + VALUE_PARAMETER kind:Regular name:values index:0 type:kotlin.Array varargElementType:kotlin.String [vararg] + annotations: + NativeCoroutines + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun returnSuspendVarargValue (vararg values: kotlin.String): kotlin.String declared in ' + CALL 'public final fun get (index: kotlin.Int): T of kotlin.Array declared in kotlin.Array' type=kotlin.String origin=GET_ARRAY_ELEMENT + ARG : GET_VAR 'values: kotlin.Array declared in .returnSuspendVarargValue' type=kotlin.Array origin=null + ARG index: CONST Int type=kotlin.Int value=0 + FUN name:returnThrowsSuspendValue visibility:public modality:FINAL returnType:kotlin.String [suspend] + annotations: + NativeCoroutines + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun returnThrowsSuspendValue (): kotlin.String declared in ' + CONST String type=kotlin.String value="OK10" diff --git a/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/functions.fir.kt.txt b/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/functions.fir.kt.txt new file mode 100644 index 00000000..7d3c7877 --- /dev/null +++ b/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/functions.fir.kt.txt @@ -0,0 +1,452 @@ +// FILE: __GENERATED__CALLABLES__.kt + +@ObjCName(name = "returnCustomFlowValue") +fun returnCustomFlowValueNative(): MyFlow23 { + val tmp_0: CoroutineScope? = null + return returnCustomFlowValue() +} + +@ObjCName(name = "returnExtensionValue") +@Throws(exceptionClasses = [Exception::class]) +suspend fun String.returnExtensionValueNative(): String { + val tmp_1: CoroutineScope? = null + return returnExtensionValue(/* = */) +} + +@ObjCName(name = "returnFlowValue") +fun returnFlowValueNative(): Flow { + val tmp_2: CoroutineScope? = null + return returnFlowValue() +} + +@ObjCName(name = "returnGenericSuspendValue") +@Throws(exceptionClasses = [Exception::class]) +suspend fun returnGenericSuspendValueNative(value: T): T { + val tmp_3: CoroutineScope? = null + return returnGenericSuspendValue(value = value) +} + +@ObjCName(name = "returnInlineSuspendValue") +@Throws(exceptionClasses = [Exception::class]) +suspend inline fun returnInlineSuspendValueNative(value: T): T { + val tmp_4: CoroutineScope? = null + return returnInlineSuspendValue(value = value) +} + +@ObjCName(name = "returnNullableFlowAndValue") +fun returnNullableFlowAndValueNative(): Flow? { + val tmp_5: CoroutineScope? = null + return returnNullableFlowAndValue() +} + +@ObjCName(name = "returnNullableFlow") +fun returnNullableFlowNative(): Flow? { + val tmp_6: CoroutineScope? = null + return returnNullableFlow() +} + +@ObjCName(name = "returnNullableFlowValue") +fun returnNullableFlowValueNative(): Flow { + val tmp_7: CoroutineScope? = null + return returnNullableFlowValue() +} + +@ObjCName(name = "returnNullableSuspendFlow") +@Throws(exceptionClasses = [Exception::class]) +suspend fun returnNullableSuspendFlowNative(): Flow? { + val tmp_8: CoroutineScope? = null + return returnNullableSuspendFlow() +} + +@ObjCName(name = "returnNullableSuspendValue") +@Throws(exceptionClasses = [Exception::class]) +suspend fun returnNullableSuspendValueNative(): String? { + val tmp_9: CoroutineScope? = null + return returnNullableSuspendValue() +} + +@ObjCName(name = "returnRefinedSuspendValue") +@ShouldRefineInSwift +@Throws(exceptionClasses = [Exception::class]) +suspend fun returnRefinedSuspendValueNative(): String { + val tmp_10: CoroutineScope? = null + return returnRefinedSuspendValue() +} + +@ObjCName(name = "returnStateFlowValue") +fun returnStateFlowValueNative(): StateFlow { + val tmp_11: CoroutineScope? = null + return returnStateFlowValue() +} + +@ObjCName(name = "returnSuspendFlowValue") +@ShouldRefineInSwift +@Throws(exceptionClasses = [Exception::class]) +suspend fun returnSuspendFlowValueNative(): Flow { + val tmp_12: CoroutineScope? = null + return returnSuspendFlowValue() +} + +@ObjCName(name = "returnSuspendParameterValue") +@Throws(exceptionClasses = [Exception::class]) +suspend fun returnSuspendParameterValueNative(value: Int): Int { + val tmp_13: CoroutineScope? = null + return returnSuspendParameterValue(value = value) +} + +@ObjCName(name = "returnSuspendParameterValue") +@Throws(exceptionClasses = [Exception::class]) +suspend fun returnSuspendParameterValueNative(value: String): String { + val tmp_14: CoroutineScope? = null + return returnSuspendParameterValue(value = value) +} + +@ObjCName(name = "returnSuspendValue") +@Throws(exceptionClasses = [Exception::class]) +suspend fun returnSuspendValueNative(): String { + val tmp_15: CoroutineScope? = null + return returnSuspendValue() +} + +@ObjCName(name = "returnSuspendVarargValue") +@Throws(exceptionClasses = [Exception::class]) +suspend fun returnSuspendVarargValueNative(vararg values: String): String { + val tmp_16: CoroutineScope? = null + return returnSuspendVarargValue(values = values) +} + +@ObjCName(name = "returnThrowsSuspendValue") +@Throws(exceptionClasses = [Exception::class]) +suspend fun returnThrowsSuspendValueNative(): String { + val tmp_17: CoroutineScope? = null + return returnThrowsSuspendValue() +} + +// FILE: functions.kt + +class MyClass14 { + private val value: T + field = value + private get + + constructor(value: T) /* primary */ { + super/*Any*/() + /* () */ + + } + + @ObjCName(name = "returnGenericSuspendValue") + @Throws(exceptionClasses = [Exception::class]) + suspend fun returnGenericSuspendValueNative(): T { + val tmp_0: CoroutineScope? = null + return .returnGenericSuspendValue() + } + + @NativeCoroutines + suspend fun returnGenericSuspendValue(): T { + return .() + } + +} + +class MyClass16 { + constructor() /* primary */ { + super/*Any*/() + /* () */ + + } + + @ObjCName(name = "functionWithGenericValues") + @Throws(exceptionClasses = [Exception::class]) + suspend fun functionWithGenericValuesNative(value1: T1, value2: T2): String { + val tmp_1: CoroutineScope? = null + return .functionWithGenericValues(value1 = value1, value2 = value2) + } + + @NativeCoroutines + suspend fun functionWithGenericValues(value1: T1, value2: T2): String { + return toString(/* = value1 */).plus(other = toString(/* = value2 */)) + } + +} + +class MyClass20 { + constructor() /* primary */ { + super/*Any*/() + /* () */ + + } + + @ObjCName(name = "returnClassExtensionValue") + @Throws(exceptionClasses = [Exception::class]) + suspend fun String.returnClassExtensionValueNative(): String { + val tmp_2: CoroutineScope? = null + return .returnClassExtensionValue(/* = */) + } + + @NativeCoroutines + suspend fun String.returnClassExtensionValue(): String { + return + } + +} + +class MyClass21 { + constructor() /* primary */ { + super/*Any*/() + /* () */ + + } + + @ObjCName(name = "returnGenericValue") + @Throws(exceptionClasses = [Exception::class]) + suspend fun returnGenericValueNative(): T? { + val tmp_3: CoroutineScope? = null + return .returnGenericValue() + } + + @NativeCoroutines + suspend fun returnGenericValue(): T? { + return null + } + +} + +class MyClass22 : MyInterface22 { + constructor() /* primary */ { + super/*Any*/() + /* () */ + + } + + @NativeCoroutines + override suspend fun returnInterfaceSuspendValue(): String { + return "OK22" + } + +} + +class MyClass8 { + constructor() /* primary */ { + super/*Any*/() + /* () */ + + } + + @ObjCName(name = "returnSuspendValue") + @Throws(exceptionClasses = [Exception::class]) + suspend fun returnSuspendValueNative(): String { + val tmp_4: CoroutineScope? = null + return .returnSuspendValue() + } + + @NativeCoroutines + suspend fun returnSuspendValue(): String { + return "OK8" + } + +} + +class MyFlow23 : Flow { + private /* final field */ val $$delegate_0: Flow = flowOf(value = value2) + constructor(value1: T1, value2: T2) /* primary */ { + super/*Any*/() + /* () */ + + } + + override suspend fun collect(collector: FlowCollector) { + .#$$delegate_0.collect(collector = collector) + } + +} + +interface MyInterface22 { + @ObjCName(name = "returnInterfaceSuspendValue") + @Throws(exceptionClasses = [Exception::class]) + suspend fun returnInterfaceSuspendValueNative(): String { + val tmp_5: CoroutineScope? = null + return .returnInterfaceSuspendValue() + } + + @NativeCoroutines + abstract suspend fun returnInterfaceSuspendValue(): String + +} + +fun box(): String { + return runBoxTest(action = local suspend fun BoxTest.() { + $this$runBoxTest.await(result = local suspend fun (): String { + return returnSuspendValueNative() + } +) + $this$runBoxTest.await(result = local suspend fun (): String? { + return returnNullableSuspendValueNative() + } +) + $this$runBoxTest.collect(flow = returnFlowValueNative()) + $this$runBoxTest.collect(flow = returnNullableFlowValueNative()) + $this$runBoxTest.value?>(value = returnNullableFlowNative()) + $this$runBoxTest.value?>(value = returnNullableFlowAndValueNative()) + $this$runBoxTest.collect(flow = returnStateFlowValueNative(), maxValues = 1) + $this$runBoxTest.await(result = local suspend fun (): String { + return MyClass8().returnSuspendValueNative() + } +) + $this$runBoxTest.await(result = local suspend fun (): String { + return returnSuspendParameterValueNative(value = "OK9") + } +) + $this$runBoxTest.await(result = local suspend fun (): Int { + return returnSuspendParameterValueNative(value = 9) + } +) + $this$runBoxTest.await(result = local suspend fun (): String { + return returnThrowsSuspendValueNative() + } +) + $this$runBoxTest.await(result = local suspend fun (): String { + return returnSuspendVarargValueNative(values = ["OK11"]) + } +) + $this$runBoxTest.await(result = local suspend fun (): String { + return MyClass14(value = "OK12").returnGenericSuspendValueNative() + } +) + $this$runBoxTest.await(result = local suspend fun (): String { + return returnRefinedSuspendValueNative() + } +) + $this$runBoxTest.awaitAndCollect(flow = local suspend fun (): Flow { + return returnSuspendFlowValueNative() + } +) + $this$runBoxTest.await(result = local suspend fun (): String { + return returnGenericSuspendValueNative(value = "OK15") + } +) + $this$runBoxTest.await(result = local suspend fun (): String { + return MyClass16().functionWithGenericValuesNative(value1 = "OK", value2 = "16") + } +) + $this$runBoxTest.await(result = local suspend fun (): String { + return returnInlineSuspendValueNative(value = "OK17") + } +) + $this$runBoxTest.awaitAndCollectNull(flow = local suspend fun (): Flow? { + return returnNullableSuspendFlowNative() + } +) + $this$runBoxTest.await(result = local suspend fun (): String { + return returnExtensionValueNative(/* = "OK19" */) + } +) + with(receiver = MyClass20(), block = local fun MyClass20.() { + $this$runBoxTest.await(result = local suspend fun (): String { + return $this$with.returnClassExtensionValueNative(/* = "OK20" */) + } +) + } +) + $this$runBoxTest.await(result = local suspend fun (): String? { + return MyClass21().returnGenericValueNative() + } +) + $this$runBoxTest.await(result = local suspend fun (): String { + return MyClass22().returnInterfaceSuspendValueNative() + } +) + $this$runBoxTest.collect(flow = returnCustomFlowValueNative()) + } +) +} + +@NativeCoroutines +fun returnCustomFlowValue(): MyFlow23 { + return MyFlow23(value1 = 23, value2 = "OK23") +} + +@NativeCoroutines +suspend fun String.returnExtensionValue(): String { + return +} + +@NativeCoroutines +fun returnFlowValue(): Flow { + return flowOf(value = "OK3") +} + +@NativeCoroutines +suspend fun returnGenericSuspendValue(value: T): T { + return value +} + +@NativeCoroutines +suspend inline fun returnInlineSuspendValue(value: T): T { + return value +} + +@NativeCoroutines +fun returnNullableFlow(): Flow? { + return null +} + +@NativeCoroutines +fun returnNullableFlowAndValue(): Flow? { + return null +} + +@NativeCoroutines +fun returnNullableFlowValue(): Flow { + return flowOf(value = null) +} + +@NativeCoroutines +suspend fun returnNullableSuspendFlow(): Flow? { + return null +} + +@NativeCoroutines +suspend fun returnNullableSuspendValue(): String? { + return null +} + +@NativeCoroutinesRefined +suspend fun returnRefinedSuspendValue(): String { + return "OK13" +} + +@NativeCoroutines +fun returnStateFlowValue(): StateFlow { + return MutableStateFlow(value = "OK7") +} + +@NativeCoroutinesRefined +suspend fun returnSuspendFlowValue(): Flow { + return flowOf(value = "OK14") +} + +@NativeCoroutines +suspend fun returnSuspendParameterValue(value: Int): Int { + return value +} + +@NativeCoroutines +suspend fun returnSuspendParameterValue(value: String): String { + return value +} + +@NativeCoroutines +suspend fun returnSuspendValue(): String { + return "OK1" +} + +@NativeCoroutines +suspend fun returnSuspendVarargValue(vararg values: String): String { + return values.get(index = 0) +} + +@NativeCoroutines +suspend fun returnThrowsSuspendValue(): String { + return "OK10" +} diff --git a/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/functions.fir.txt b/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/functions.fir.txt new file mode 100644 index 00000000..d4dc32fd --- /dev/null +++ b/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/functions.fir.txt @@ -0,0 +1,319 @@ +FILE: functions.kt + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final suspend fun returnSuspendValue(): R|kotlin/String| { + ^returnSuspendValue String(OK1) + } + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final suspend fun returnNullableSuspendValue(): R|kotlin/String?| { + ^returnNullableSuspendValue Null(null) + } + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final fun returnFlowValue(): R|kotlinx/coroutines/flow/Flow| { + ^returnFlowValue R|kotlinx/coroutines/flow/flowOf|(String(OK3)) + } + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final fun returnNullableFlowValue(): R|kotlinx/coroutines/flow/Flow| { + ^returnNullableFlowValue R|kotlinx/coroutines/flow/flowOf|(Null(null)) + } + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final fun returnNullableFlow(): R|kotlinx/coroutines/flow/Flow?| { + ^returnNullableFlow Null(null) + } + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final fun returnNullableFlowAndValue(): R|kotlinx/coroutines/flow/Flow?| { + ^returnNullableFlowAndValue Null(null) + } + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final fun returnStateFlowValue(): R|kotlinx/coroutines/flow/StateFlow| { + ^returnStateFlowValue R|kotlinx/coroutines/flow/MutableStateFlow|(String(OK7)) + } + public final class MyClass8 : R|kotlin/Any| { + public constructor(): R|MyClass8| { + super() + } + + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final suspend fun returnSuspendValue(): R|kotlin/String| { + ^returnSuspendValue String(OK8) + } + + @R|kotlin/native/ObjCName|(name = String(returnSuspendValue)) @R|kotlin/Throws|(exceptionClasses = vararg((Q|kotlin/Exception|))) public final suspend fun returnSuspendValueNative(): R|kotlin/String| { + ::R|/MyClass8.returnSuspendValue| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + + } + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final suspend fun returnSuspendParameterValue(value: R|kotlin/String|): R|kotlin/String| { + ^returnSuspendParameterValue R|/value| + } + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final suspend fun returnSuspendParameterValue(value: R|kotlin/Int|): R|kotlin/Int| { + ^returnSuspendParameterValue R|/value| + } + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final suspend fun returnThrowsSuspendValue(): R|kotlin/String| { + ^returnThrowsSuspendValue String(OK10) + } + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final suspend fun returnSuspendVarargValue(vararg values: R|kotlin/Array|): R|kotlin/String| { + ^returnSuspendVarargValue R|/values|.R|SubstitutionOverride|(Int(0)) + } + public final class MyClass14 : R|kotlin/Any| { + public constructor(value: R|T|): R|MyClass14| { + super() + } + + private final val value: R|T| = R|/value| + private get(): R|T| + + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final suspend fun returnGenericSuspendValue(): R|T| { + ^returnGenericSuspendValue this@R|/MyClass14|.R|/MyClass14.value| + } + + @R|kotlin/native/ObjCName|(name = String(returnGenericSuspendValue)) @R|kotlin/Throws|(exceptionClasses = vararg((Q|kotlin/Exception|))) public final suspend fun returnGenericSuspendValueNative(): R|T| { + ::R|/MyClass14.returnGenericSuspendValue| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + + } + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutinesRefined|() public final suspend fun returnRefinedSuspendValue(): R|kotlin/String| { + ^returnRefinedSuspendValue String(OK13) + } + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutinesRefined|() public final suspend fun returnSuspendFlowValue(): R|kotlinx/coroutines/flow/Flow| { + ^returnSuspendFlowValue R|kotlinx/coroutines/flow/flowOf|(String(OK14)) + } + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final suspend fun returnGenericSuspendValue(value: R|T|): R|T| { + ^returnGenericSuspendValue R|/value| + } + public final class MyClass16 : R|kotlin/Any| { + public constructor(): R|MyClass16| { + super() + } + + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final suspend fun functionWithGenericValues(value1: R|T1|, value2: R|T2|): R|kotlin/String| { + ^functionWithGenericValues R|/value1|.R|kotlin/toString|().R|kotlin/String.plus|(R|/value2|.R|kotlin/toString|()) + } + + @R|kotlin/native/ObjCName|(name = String(functionWithGenericValues)) @R|kotlin/Throws|(exceptionClasses = vararg((Q|kotlin/Exception|))) public final suspend fun functionWithGenericValuesNative(value1: R|T1|, value2: R|T2|): R|kotlin/String| { + ::R|/MyClass16.functionWithGenericValues| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + + } + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final inline suspend fun returnInlineSuspendValue(value: R|T|): R|T| { + ^returnInlineSuspendValue R|/value| + } + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final suspend fun returnNullableSuspendFlow(): R|kotlinx/coroutines/flow/Flow?| { + ^returnNullableSuspendFlow Null(null) + } + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final suspend fun R|kotlin/String|.returnExtensionValue(): R|kotlin/String| { + ^returnExtensionValue this@R|/returnExtensionValue| + } + public final class MyClass20 : R|kotlin/Any| { + public constructor(): R|MyClass20| { + super() + } + + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final suspend fun R|kotlin/String|.returnClassExtensionValue(): R|kotlin/String| { + ^returnClassExtensionValue this@R|/MyClass20.returnClassExtensionValue| + } + + @R|kotlin/native/ObjCName|(name = String(returnClassExtensionValue)) @R|kotlin/Throws|(exceptionClasses = vararg((Q|kotlin/Exception|))) public final suspend fun R|kotlin/String|.returnClassExtensionValueNative(): R|kotlin/String| { + ::R|/MyClass20.returnClassExtensionValue| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + + } + public final class MyClass21 : R|kotlin/Any| { + public constructor(): R|MyClass21| { + super() + } + + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final suspend fun returnGenericValue(): R|T?| { + ^returnGenericValue Null(null) + } + + @R|kotlin/native/ObjCName|(name = String(returnGenericValue)) @R|kotlin/Throws|(exceptionClasses = vararg((Q|kotlin/Exception|))) public final suspend fun returnGenericValueNative(): R|T?| { + ::R|/MyClass21.returnGenericValue| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + + } + public abstract interface MyInterface22 : R|kotlin/Any| { + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public abstract suspend fun returnInterfaceSuspendValue(): R|kotlin/String| + + @R|kotlin/native/ObjCName|(name = String(returnInterfaceSuspendValue)) @R|kotlin/Throws|(exceptionClasses = vararg((Q|kotlin/Exception|))) public open suspend fun returnInterfaceSuspendValueNative(): R|kotlin/String| { + ::R|/MyInterface22.returnInterfaceSuspendValue| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + + } + public final class MyClass22 : R|MyInterface22| { + public constructor(): R|MyClass22| { + super() + } + + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public open override suspend fun returnInterfaceSuspendValue(): R|kotlin/String| { + ^returnInterfaceSuspendValue String(OK22) + } + + } + public final class MyFlow23 : R|kotlinx/coroutines/flow/Flow| { + public constructor(value1: R|T1|, value2: R|T2|): R|MyFlow23| { + super() + } + + private final field $$delegate_0: R|kotlinx/coroutines/flow/Flow| = R|kotlinx/coroutines/flow/flowOf|(R|/value2|) + + } + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final fun returnCustomFlowValue(): R|MyFlow23| { + ^returnCustomFlowValue R|/MyFlow23.MyFlow23|(Int(23), String(OK23)) + } + public final fun box(): R|kotlin/String| { + ^box R|com/rickclephas/kmp/nativecoroutines/runBoxTest|( = runBoxTest@fun R|com/rickclephas/kmp/nativecoroutines/BoxTest|.(): R|kotlin/Unit| { + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.await|( = await@fun (): R|kotlin/String| { + ^ R|/returnSuspendValueNative|() + } + ) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.await|( = await@fun (): R|kotlin/String?| { + ^ R|/returnNullableSuspendValueNative|() + } + ) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.collect|(R|/returnFlowValueNative|()) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.collect|(R|/returnNullableFlowValueNative|()) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.value|?|>(R|/returnNullableFlowNative|()) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.value|?|>(R|/returnNullableFlowAndValueNative|()) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.collect|(R|/returnStateFlowValueNative|(), Int(1)) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.await|( = await@fun (): R|kotlin/String| { + ^ R|/MyClass8.MyClass8|().R|/MyClass8.returnSuspendValueNative|() + } + ) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.await|( = await@fun (): R|kotlin/String| { + ^ R|/returnSuspendParameterValueNative|(String(OK9)) + } + ) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.await|( = await@fun (): R|kotlin/Int| { + ^ R|/returnSuspendParameterValueNative|(Int(9)) + } + ) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.await|( = await@fun (): R|kotlin/String| { + ^ R|/returnThrowsSuspendValueNative|() + } + ) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.await|( = await@fun (): R|kotlin/String| { + ^ R|/returnSuspendVarargValueNative|(vararg(String(OK11))) + } + ) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.await|( = await@fun (): R|kotlin/String| { + ^ R|/MyClass14.MyClass14|(String(OK12)).R|SubstitutionOverride|() + } + ) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.await|( = await@fun (): R|kotlin/String| { + ^ R|/returnRefinedSuspendValueNative|() + } + ) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.awaitAndCollect|( = awaitAndCollect@fun (): R|kotlinx/coroutines/flow/Flow| { + ^ R|/returnSuspendFlowValueNative|() + } + ) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.await|( = await@fun (): R|kotlin/String| { + ^ R|/returnGenericSuspendValueNative|(String(OK15)) + } + ) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.await|( = await@fun (): R|kotlin/String| { + ^ R|/MyClass16.MyClass16|().R|/MyClass16.functionWithGenericValuesNative|(String(OK), String(16)) + } + ) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.await|( = await@fun (): R|kotlin/String| { + ^ R|/returnInlineSuspendValueNative|(String(OK17)) + } + ) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.awaitAndCollectNull|( = awaitAndCollectNull@fun (): R|kotlinx/coroutines/flow/Flow?| { + ^ R|/returnNullableSuspendFlowNative|() + } + ) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.await|( = await@fun (): R|kotlin/String| { + ^ String(OK19).R|/returnExtensionValueNative|() + } + ) + R|kotlin/with|(R|/MyClass20.MyClass20|(), = with@fun R|MyClass20|.(): R|kotlin/Unit| { + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.await|( = await@fun (): R|kotlin/String| { + ^ (this@R|special/anonymous|, String(OK20)).R|/MyClass20.returnClassExtensionValueNative|() + } + ) + } + ) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.await|( = await@fun (): R|kotlin/String?| { + ^ R|/MyClass21.MyClass21|().R|SubstitutionOverride|() + } + ) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.await|( = await@fun (): R|kotlin/String| { + ^ R|/MyClass22.MyClass22|().R|/MyInterface22.returnInterfaceSuspendValueNative|() + } + ) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.collect|(R|/returnCustomFlowValueNative|()) + } + ) + } +FILE: /__GENERATED__CALLABLES__.kt + @R|kotlin/native/ObjCName|(name = String(returnSuspendValue)) @R|kotlin/Throws|(exceptionClasses = vararg((Q|kotlin/Exception|))) public final suspend fun returnSuspendValueNative(): R|kotlin/String| { + ::R|/returnSuspendValue| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/native/ObjCName|(name = String(returnNullableSuspendValue)) @R|kotlin/Throws|(exceptionClasses = vararg((Q|kotlin/Exception|))) public final suspend fun returnNullableSuspendValueNative(): R|kotlin/String?| { + ::R|/returnNullableSuspendValue| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/native/ObjCName|(name = String(returnFlowValue)) public final fun returnFlowValueNative(): R|kotlinx/coroutines/flow/Flow| { + ::R|/returnFlowValue| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/native/ObjCName|(name = String(returnNullableFlowValue)) public final fun returnNullableFlowValueNative(): R|kotlinx/coroutines/flow/Flow| { + ::R|/returnNullableFlowValue| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/native/ObjCName|(name = String(returnNullableFlow)) public final fun returnNullableFlowNative(): R|kotlinx/coroutines/flow/Flow?| { + ::R|/returnNullableFlow| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/native/ObjCName|(name = String(returnNullableFlowAndValue)) public final fun returnNullableFlowAndValueNative(): R|kotlinx/coroutines/flow/Flow?| { + ::R|/returnNullableFlowAndValue| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/native/ObjCName|(name = String(returnStateFlowValue)) public final fun returnStateFlowValueNative(): R|kotlinx/coroutines/flow/StateFlow| { + ::R|/returnStateFlowValue| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/native/ObjCName|(name = String(returnSuspendParameterValue)) @R|kotlin/Throws|(exceptionClasses = vararg((Q|kotlin/Exception|))) public final suspend fun returnSuspendParameterValueNative(value: R|kotlin/String|): R|kotlin/String| { + ::R|/returnSuspendParameterValue| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/native/ObjCName|(name = String(returnSuspendParameterValue)) @R|kotlin/Throws|(exceptionClasses = vararg((Q|kotlin/Exception|))) public final suspend fun returnSuspendParameterValueNative(value: R|kotlin/Int|): R|kotlin/Int| { + ::R|/returnSuspendParameterValue| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/native/ObjCName|(name = String(returnThrowsSuspendValue)) @R|kotlin/Throws|(exceptionClasses = vararg((Q|kotlin/Exception|))) public final suspend fun returnThrowsSuspendValueNative(): R|kotlin/String| { + ::R|/returnThrowsSuspendValue| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/native/ObjCName|(name = String(returnSuspendVarargValue)) @R|kotlin/Throws|(exceptionClasses = vararg((Q|kotlin/Exception|))) public final suspend fun returnSuspendVarargValueNative(vararg values: R|kotlin/Array|): R|kotlin/String| { + ::R|/returnSuspendVarargValue| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/native/ObjCName|(name = String(returnGenericSuspendValue)) @R|kotlin/Throws|(exceptionClasses = vararg((Q|kotlin/Exception|))) public final suspend fun returnGenericSuspendValueNative(value: R|T|): R|T| { + ::R|/returnGenericSuspendValue| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/native/ObjCName|(name = String(returnInlineSuspendValue)) @R|kotlin/Throws|(exceptionClasses = vararg((Q|kotlin/Exception|))) public final inline suspend fun returnInlineSuspendValueNative(value: R|T|): R|T| { + ::R|/returnInlineSuspendValue| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/native/ObjCName|(name = String(returnNullableSuspendFlow)) @R|kotlin/Throws|(exceptionClasses = vararg((Q|kotlin/Exception|))) public final suspend fun returnNullableSuspendFlowNative(): R|kotlinx/coroutines/flow/Flow?| { + ::R|/returnNullableSuspendFlow| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/native/ObjCName|(name = String(returnExtensionValue)) @R|kotlin/Throws|(exceptionClasses = vararg((Q|kotlin/Exception|))) public final suspend fun R|kotlin/String|.returnExtensionValueNative(): R|kotlin/String| { + ::R|/returnExtensionValue| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/native/ObjCName|(name = String(returnCustomFlowValue)) public final fun returnCustomFlowValueNative(): R|MyFlow23| { + ::R|/returnCustomFlowValue| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/native/ObjCName|(name = String(returnRefinedSuspendValue)) @R|kotlin/native/ShouldRefineInSwift|() @R|kotlin/Throws|(exceptionClasses = vararg((Q|kotlin/Exception|))) public final suspend fun returnRefinedSuspendValueNative(): R|kotlin/String| { + ::R|/returnRefinedSuspendValue| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/native/ObjCName|(name = String(returnSuspendFlowValue)) @R|kotlin/native/ShouldRefineInSwift|() @R|kotlin/Throws|(exceptionClasses = vararg((Q|kotlin/Exception|))) public final suspend fun returnSuspendFlowValueNative(): R|kotlinx/coroutines/flow/Flow| { + ::R|/returnSuspendFlowValue| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } diff --git a/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/functions.kt b/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/functions.kt new file mode 120000 index 00000000..192f095a --- /dev/null +++ b/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/functions.kt @@ -0,0 +1 @@ +../functions.kt \ No newline at end of file diff --git a/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/properties.box.txt b/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/properties.box.txt new file mode 120000 index 00000000..dd8ca159 --- /dev/null +++ b/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/properties.box.txt @@ -0,0 +1 @@ +../properties.box.txt \ No newline at end of file diff --git a/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/properties.fir.ir.txt b/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/properties.fir.ir.txt new file mode 100644 index 00000000..2b6886da --- /dev/null +++ b/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/properties.fir.ir.txt @@ -0,0 +1,1450 @@ +FILE fqName: fileName:/__GENERATED__CALLABLES__.kt + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:topLevelMutableStateFlowValue visibility:public modality:FINAL [var] + FIELD PROPERTY_BACKING_FIELD name:topLevelMutableStateFlowValue type:kotlin.String visibility:private [static] + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlin.String + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:topLevelMutableStateFlowValue visibility:public modality:FINAL [var] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_0 type:kotlinx.coroutines.flow.MutableStateFlow [val] + CALL 'public final fun (): kotlinx.coroutines.flow.MutableStateFlow declared in ' type=kotlinx.coroutines.flow.MutableStateFlow origin=null + RETURN type=kotlin.Nothing from='public final fun (): kotlin.String declared in ' + CALL 'public abstract fun (): T of kotlinx.coroutines.flow.StateFlow declared in kotlinx.coroutines.flow.StateFlow' type=kotlin.String origin=null + ARG : GET_VAR 'val tmp_0: kotlinx.coroutines.flow.MutableStateFlow declared in .' type=kotlinx.coroutines.flow.MutableStateFlow origin=null + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlin.Unit + VALUE_PARAMETER GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] kind:Regular name:value index:0 type:kotlin.String + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:topLevelMutableStateFlowValue visibility:public modality:FINAL [var] + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (value: kotlin.String): kotlin.Unit declared in ' + CALL 'public abstract fun (: T of kotlinx.coroutines.flow.MutableStateFlow): kotlin.Unit declared in kotlinx.coroutines.flow.MutableStateFlow' type=kotlin.Unit origin=null + ARG : CALL 'public final fun (): kotlinx.coroutines.flow.MutableStateFlow declared in ' type=kotlinx.coroutines.flow.MutableStateFlow origin=null + ARG : GET_VAR 'value: kotlin.String declared in .' type=kotlin.String origin=null + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:mutableStatePropertyValue visibility:public modality:FINAL [var] + annotations: + ObjCName(name = "mutableStateProperty", swiftName = , exact = ) + FIELD PROPERTY_BACKING_FIELD name:mutableStatePropertyValue type:kotlin.String visibility:private [static] + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlin.String + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:mutableStatePropertyValue visibility:public modality:FINAL [var] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_1 type:kotlinx.coroutines.flow.MutableStateFlow [val] + CALL 'public final fun (): kotlinx.coroutines.flow.MutableStateFlow declared in ' type=kotlinx.coroutines.flow.MutableStateFlow origin=null + RETURN type=kotlin.Nothing from='public final fun (): kotlin.String declared in ' + CALL 'public abstract fun (): T of kotlinx.coroutines.flow.StateFlow declared in kotlinx.coroutines.flow.StateFlow' type=kotlin.String origin=null + ARG : GET_VAR 'val tmp_1: kotlinx.coroutines.flow.MutableStateFlow declared in .' type=kotlinx.coroutines.flow.MutableStateFlow origin=null + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlin.Unit + VALUE_PARAMETER GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] kind:Regular name:value index:0 type:kotlin.String + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:mutableStatePropertyValue visibility:public modality:FINAL [var] + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (value: kotlin.String): kotlin.Unit declared in ' + CALL 'public abstract fun (: T of kotlinx.coroutines.flow.MutableStateFlow): kotlin.Unit declared in kotlinx.coroutines.flow.MutableStateFlow' type=kotlin.Unit origin=null + ARG : CALL 'public final fun (): kotlinx.coroutines.flow.MutableStateFlow declared in ' type=kotlinx.coroutines.flow.MutableStateFlow origin=null + ARG : GET_VAR 'value: kotlin.String declared in .' type=kotlin.String origin=null + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:customFlowValueNative visibility:public modality:FINAL [val] + annotations: + ObjCName(name = "customFlowValue", swiftName = , exact = ) + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:.MyFlow29 + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:customFlowValueNative visibility:public modality:FINAL [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_2 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun (): .MyFlow29 declared in ' + CALL 'public final fun (): .MyFlow29 declared in ' type=.MyFlow29 origin=null + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:extensionFlowNative visibility:public modality:FINAL [val] + annotations: + ObjCName(name = "extensionFlow", swiftName = , exact = ) + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.Flow + VALUE_PARAMETER kind:ExtensionReceiver name: index:0 type:kotlin.String + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:extensionFlowNative visibility:public modality:FINAL [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_3 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun (: kotlin.String): kotlinx.coroutines.flow.Flow declared in ' + CALL 'public final fun (: kotlin.String): kotlinx.coroutines.flow.Flow declared in ' type=kotlinx.coroutines.flow.Flow origin=null + ARG : GET_VAR ': kotlin.String declared in .' type=kotlin.String origin=null + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:extensionSharedFlowNative visibility:public modality:FINAL [val] + annotations: + ObjCName(name = "extensionSharedFlow", swiftName = , exact = ) + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.SharedFlow + VALUE_PARAMETER kind:ExtensionReceiver name: index:0 type:kotlin.String + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:extensionSharedFlowNative visibility:public modality:FINAL [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_4 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun (: kotlin.String): kotlinx.coroutines.flow.SharedFlow declared in ' + CALL 'public final fun (: kotlin.String): kotlinx.coroutines.flow.SharedFlow declared in ' type=kotlinx.coroutines.flow.SharedFlow origin=null + ARG : GET_VAR ': kotlin.String declared in .' type=kotlin.String origin=null + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:extensionSharedFlowReplayCache visibility:public modality:FINAL [val] + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlin.collections.List + VALUE_PARAMETER kind:ExtensionReceiver name: index:0 type:kotlin.String + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:extensionSharedFlowReplayCache visibility:public modality:FINAL [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_5 type:kotlinx.coroutines.flow.SharedFlow [val] + CALL 'public final fun (: kotlin.String): kotlinx.coroutines.flow.SharedFlow declared in ' type=kotlinx.coroutines.flow.SharedFlow origin=null + ARG : GET_VAR ': kotlin.String declared in .' type=kotlin.String origin=null + RETURN type=kotlin.Nothing from='public final fun (: kotlin.String): kotlin.collections.List declared in ' + CALL 'public abstract fun (): kotlin.collections.List declared in kotlinx.coroutines.flow.SharedFlow' type=kotlin.String origin=null + ARG : GET_VAR 'val tmp_5: kotlinx.coroutines.flow.SharedFlow declared in .' type=kotlinx.coroutines.flow.SharedFlow origin=null + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:extensionStateFlowNative visibility:public modality:FINAL [val] + annotations: + ObjCName(name = "extensionStateFlow", swiftName = , exact = ) + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.StateFlow + VALUE_PARAMETER kind:ExtensionReceiver name: index:0 type:kotlin.String + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:extensionStateFlowNative visibility:public modality:FINAL [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_6 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun (: kotlin.String): kotlinx.coroutines.flow.StateFlow declared in ' + CALL 'public final fun (: kotlin.String): kotlinx.coroutines.flow.StateFlow declared in ' type=kotlinx.coroutines.flow.StateFlow origin=null + ARG : GET_VAR ': kotlin.String declared in .' type=kotlin.String origin=null + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:extensionStateFlowValue visibility:public modality:FINAL [val] + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlin.String + VALUE_PARAMETER kind:ExtensionReceiver name: index:0 type:kotlin.String + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:extensionStateFlowValue visibility:public modality:FINAL [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_7 type:kotlinx.coroutines.flow.StateFlow [val] + CALL 'public final fun (: kotlin.String): kotlinx.coroutines.flow.StateFlow declared in ' type=kotlinx.coroutines.flow.StateFlow origin=null + ARG : GET_VAR ': kotlin.String declared in .' type=kotlin.String origin=null + RETURN type=kotlin.Nothing from='public final fun (: kotlin.String): kotlin.String declared in ' + CALL 'public abstract fun (): T of kotlinx.coroutines.flow.StateFlow declared in kotlinx.coroutines.flow.StateFlow' type=kotlin.String origin=null + ARG : GET_VAR 'val tmp_7: kotlinx.coroutines.flow.StateFlow declared in .' type=kotlinx.coroutines.flow.StateFlow origin=null + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:genericFlowNative visibility:public modality:FINAL [val] + annotations: + ObjCName(name = "genericFlow", swiftName = , exact = ) + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.Flow.> + TYPE_PARAMETER GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:T index:0 variance: superTypes:[kotlin.Any?] reified:false + VALUE_PARAMETER kind:ExtensionReceiver name: index:0 type:.MyGenericClass1.> + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:genericFlowNative visibility:public modality:FINAL [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_8 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun (: .MyGenericClass1.>): kotlinx.coroutines.flow.Flow.> declared in ' + CALL 'public final fun (: .MyGenericClass1.>): kotlinx.coroutines.flow.Flow.> declared in ' type=kotlinx.coroutines.flow.Flow.> origin=null + TYPE_ARG T: T of . + ARG : GET_VAR ': .MyGenericClass1.> declared in .' type=.MyGenericClass1.> origin=null + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:genericSharedFlowNative visibility:public modality:FINAL [val] + annotations: + ObjCName(name = "genericSharedFlow", swiftName = , exact = ) + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.SharedFlow.> + TYPE_PARAMETER GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:T index:0 variance: superTypes:[kotlin.Any?] reified:false + VALUE_PARAMETER kind:ExtensionReceiver name: index:0 type:.MyGenericClass1.> + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:genericSharedFlowNative visibility:public modality:FINAL [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_9 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun (: .MyGenericClass1.>): kotlinx.coroutines.flow.SharedFlow.> declared in ' + CALL 'public final fun (: .MyGenericClass1.>): kotlinx.coroutines.flow.SharedFlow.> declared in ' type=kotlinx.coroutines.flow.SharedFlow.> origin=null + TYPE_ARG T: T of . + ARG : GET_VAR ': .MyGenericClass1.> declared in .' type=.MyGenericClass1.> origin=null + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:genericSharedFlowReplayCache visibility:public modality:FINAL [val] + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlin.collections.List.> + TYPE_PARAMETER GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:T index:0 variance: superTypes:[kotlin.Any?] reified:false + VALUE_PARAMETER kind:ExtensionReceiver name: index:0 type:.MyGenericClass1.> + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:genericSharedFlowReplayCache visibility:public modality:FINAL [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_10 type:kotlinx.coroutines.flow.SharedFlow.> [val] + CALL 'public final fun (: .MyGenericClass1.>): kotlinx.coroutines.flow.SharedFlow.> declared in ' type=kotlinx.coroutines.flow.SharedFlow.> origin=null + TYPE_ARG T: T of . + ARG : GET_VAR ': .MyGenericClass1.> declared in .' type=.MyGenericClass1.> origin=null + RETURN type=kotlin.Nothing from='public final fun (: .MyGenericClass1.>): kotlin.collections.List.> declared in ' + CALL 'public abstract fun (): kotlin.collections.List declared in kotlinx.coroutines.flow.SharedFlow' type=T of . origin=null + ARG : GET_VAR 'val tmp_10: kotlinx.coroutines.flow.SharedFlow.> declared in .' type=kotlinx.coroutines.flow.SharedFlow.> origin=null + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:genericStateFlowNative visibility:public modality:FINAL [val] + annotations: + ObjCName(name = "genericStateFlow", swiftName = , exact = ) + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.StateFlow.> + TYPE_PARAMETER GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:T index:0 variance: superTypes:[kotlin.Any?] reified:false + VALUE_PARAMETER kind:ExtensionReceiver name: index:0 type:.MyGenericClass1.> + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:genericStateFlowNative visibility:public modality:FINAL [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_11 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun (: .MyGenericClass1.>): kotlinx.coroutines.flow.StateFlow.> declared in ' + CALL 'public final fun (: .MyGenericClass1.>): kotlinx.coroutines.flow.StateFlow.> declared in ' type=kotlinx.coroutines.flow.StateFlow.> origin=null + TYPE_ARG T: T of . + ARG : GET_VAR ': .MyGenericClass1.> declared in .' type=.MyGenericClass1.> origin=null + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:genericStateFlowValue visibility:public modality:FINAL [val] + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:T of . + TYPE_PARAMETER GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:T index:0 variance: superTypes:[kotlin.Any?] reified:false + VALUE_PARAMETER kind:ExtensionReceiver name: index:0 type:.MyGenericClass1.> + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:genericStateFlowValue visibility:public modality:FINAL [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_12 type:kotlinx.coroutines.flow.StateFlow.> [val] + CALL 'public final fun (: .MyGenericClass1.>): kotlinx.coroutines.flow.StateFlow.> declared in ' type=kotlinx.coroutines.flow.StateFlow.> origin=null + TYPE_ARG T: T of . + ARG : GET_VAR ': .MyGenericClass1.> declared in .' type=.MyGenericClass1.> origin=null + RETURN type=kotlin.Nothing from='public final fun (: .MyGenericClass1.>): T of . declared in ' + CALL 'public abstract fun (): T of kotlinx.coroutines.flow.StateFlow declared in kotlinx.coroutines.flow.StateFlow' type=T of . origin=null + ARG : GET_VAR 'val tmp_12: kotlinx.coroutines.flow.StateFlow.> declared in .' type=kotlinx.coroutines.flow.StateFlow.> origin=null + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:mutableNullableStatePropertyFlow visibility:public modality:FINAL [val] + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.MutableStateFlow? + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:mutableNullableStatePropertyFlow visibility:public modality:FINAL [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_13 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.MutableStateFlow? declared in ' + CALL 'public final fun (): kotlinx.coroutines.flow.MutableStateFlow? declared in ' type=kotlinx.coroutines.flow.MutableStateFlow? origin=null + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:mutableNullableStatePropertyValue visibility:public modality:FINAL [val] + annotations: + ObjCName(name = "mutableNullableStateProperty", swiftName = , exact = ) + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlin.String? + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:mutableNullableStatePropertyValue visibility:public modality:FINAL [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_14 type:kotlinx.coroutines.flow.MutableStateFlow? [val] + CALL 'public final fun (): kotlinx.coroutines.flow.MutableStateFlow? declared in ' type=kotlinx.coroutines.flow.MutableStateFlow? origin=null + RETURN type=kotlin.Nothing from='public final fun (): kotlin.String? declared in ' + WHEN type=kotlin.String? origin=null + 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 + ARG arg0: GET_VAR 'val tmp_14: kotlinx.coroutines.flow.MutableStateFlow? declared in .' type=kotlinx.coroutines.flow.MutableStateFlow? origin=null + ARG arg1: CONST Null type=kotlin.Nothing? value=null + then: CONST Null type=kotlin.String? value=null + BRANCH + if: CONST Boolean type=kotlin.Boolean value=true + then: CALL 'public abstract fun (): T of kotlinx.coroutines.flow.StateFlow declared in kotlinx.coroutines.flow.StateFlow' type=kotlin.String origin=null + ARG : GET_VAR 'val tmp_14: kotlinx.coroutines.flow.MutableStateFlow? declared in .' type=kotlinx.coroutines.flow.MutableStateFlow? origin=null + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:mutableStatePropertyFlow visibility:public modality:FINAL [val] + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.MutableStateFlow + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:mutableStatePropertyFlow visibility:public modality:FINAL [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_15 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.MutableStateFlow declared in ' + CALL 'public final fun (): kotlinx.coroutines.flow.MutableStateFlow declared in ' type=kotlinx.coroutines.flow.MutableStateFlow origin=null + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:nullableFlowAndValueNative visibility:public modality:FINAL [val] + annotations: + ObjCName(name = "nullableFlowAndValue", swiftName = , exact = ) + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.Flow? + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:nullableFlowAndValueNative visibility:public modality:FINAL [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_16 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.Flow? declared in ' + CALL 'public final fun (): kotlinx.coroutines.flow.Flow? declared in ' type=kotlinx.coroutines.flow.Flow? origin=null + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:nullableFlowNative visibility:public modality:FINAL [val] + annotations: + ObjCName(name = "nullableFlow", swiftName = , exact = ) + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.Flow? + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:nullableFlowNative visibility:public modality:FINAL [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_17 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.Flow? declared in ' + CALL 'public final fun (): kotlinx.coroutines.flow.Flow? declared in ' type=kotlinx.coroutines.flow.Flow? origin=null + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:nullableFlowValueNative visibility:public modality:FINAL [val] + annotations: + ObjCName(name = "nullableFlowValue", swiftName = , exact = ) + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.Flow + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:nullableFlowValueNative visibility:public modality:FINAL [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_18 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.Flow declared in ' + CALL 'public final fun (): kotlinx.coroutines.flow.Flow declared in ' type=kotlinx.coroutines.flow.Flow origin=null + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:nullableSharedFlowAndValueNative visibility:public modality:FINAL [val] + annotations: + ObjCName(name = "nullableSharedFlowAndValue", swiftName = , exact = ) + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.SharedFlow? + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:nullableSharedFlowAndValueNative visibility:public modality:FINAL [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_19 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.SharedFlow? declared in ' + CALL 'public final fun (): kotlinx.coroutines.flow.SharedFlow? declared in ' type=kotlinx.coroutines.flow.SharedFlow? origin=null + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:nullableSharedFlowAndValueReplayCache visibility:public modality:FINAL [val] + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlin.collections.List? + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:nullableSharedFlowAndValueReplayCache visibility:public modality:FINAL [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_20 type:kotlinx.coroutines.flow.SharedFlow? [val] + CALL 'public final fun (): kotlinx.coroutines.flow.SharedFlow? declared in ' type=kotlinx.coroutines.flow.SharedFlow? origin=null + RETURN type=kotlin.Nothing from='public final fun (): kotlin.collections.List? declared in ' + WHEN type=kotlin.collections.List? origin=null + 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 + ARG arg0: GET_VAR 'val tmp_20: kotlinx.coroutines.flow.SharedFlow? declared in .' type=kotlinx.coroutines.flow.SharedFlow? origin=null + ARG arg1: CONST Null type=kotlin.Nothing? value=null + then: CONST Null type=kotlin.collections.List? value=null + BRANCH + if: CONST Boolean type=kotlin.Boolean value=true + then: CALL 'public abstract fun (): kotlin.collections.List declared in kotlinx.coroutines.flow.SharedFlow' type=kotlin.String? origin=null + ARG : GET_VAR 'val tmp_20: kotlinx.coroutines.flow.SharedFlow? declared in .' type=kotlinx.coroutines.flow.SharedFlow? origin=null + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:nullableSharedFlowNative visibility:public modality:FINAL [val] + annotations: + ObjCName(name = "nullableSharedFlow", swiftName = , exact = ) + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.SharedFlow? + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:nullableSharedFlowNative visibility:public modality:FINAL [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_21 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.SharedFlow? declared in ' + CALL 'public final fun (): kotlinx.coroutines.flow.SharedFlow? declared in ' type=kotlinx.coroutines.flow.SharedFlow? origin=null + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:nullableSharedFlowReplayCache visibility:public modality:FINAL [val] + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlin.collections.List? + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:nullableSharedFlowReplayCache visibility:public modality:FINAL [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_22 type:kotlinx.coroutines.flow.SharedFlow? [val] + CALL 'public final fun (): kotlinx.coroutines.flow.SharedFlow? declared in ' type=kotlinx.coroutines.flow.SharedFlow? origin=null + RETURN type=kotlin.Nothing from='public final fun (): kotlin.collections.List? declared in ' + WHEN type=kotlin.collections.List? origin=null + 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 + ARG arg0: GET_VAR 'val tmp_22: kotlinx.coroutines.flow.SharedFlow? declared in .' type=kotlinx.coroutines.flow.SharedFlow? origin=null + ARG arg1: CONST Null type=kotlin.Nothing? value=null + then: CONST Null type=kotlin.collections.List? value=null + BRANCH + if: CONST Boolean type=kotlin.Boolean value=true + then: CALL 'public abstract fun (): kotlin.collections.List declared in kotlinx.coroutines.flow.SharedFlow' type=kotlin.String origin=null + ARG : GET_VAR 'val tmp_22: kotlinx.coroutines.flow.SharedFlow? declared in .' type=kotlinx.coroutines.flow.SharedFlow? origin=null + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:nullableSharedFlowValueNative visibility:public modality:FINAL [val] + annotations: + ObjCName(name = "nullableSharedFlowValue", swiftName = , exact = ) + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.SharedFlow + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:nullableSharedFlowValueNative visibility:public modality:FINAL [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_23 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.SharedFlow declared in ' + CALL 'public final fun (): kotlinx.coroutines.flow.SharedFlow declared in ' type=kotlinx.coroutines.flow.SharedFlow origin=null + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:nullableSharedFlowValueReplayCache visibility:public modality:FINAL [val] + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlin.collections.List + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:nullableSharedFlowValueReplayCache visibility:public modality:FINAL [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_24 type:kotlinx.coroutines.flow.SharedFlow [val] + CALL 'public final fun (): kotlinx.coroutines.flow.SharedFlow declared in ' type=kotlinx.coroutines.flow.SharedFlow origin=null + RETURN type=kotlin.Nothing from='public final fun (): kotlin.collections.List declared in ' + CALL 'public abstract fun (): kotlin.collections.List declared in kotlinx.coroutines.flow.SharedFlow' type=kotlin.String? origin=null + ARG : GET_VAR 'val tmp_24: kotlinx.coroutines.flow.SharedFlow declared in .' type=kotlinx.coroutines.flow.SharedFlow origin=null + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:nullableStateFlowAndValueNative visibility:public modality:FINAL [val] + annotations: + ObjCName(name = "nullableStateFlowAndValue", swiftName = , exact = ) + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.StateFlow? + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:nullableStateFlowAndValueNative visibility:public modality:FINAL [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_25 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.StateFlow? declared in ' + CALL 'public final fun (): kotlinx.coroutines.flow.StateFlow? declared in ' type=kotlinx.coroutines.flow.StateFlow? origin=null + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:nullableStateFlowAndValueValue visibility:public modality:FINAL [val] + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlin.String? + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:nullableStateFlowAndValueValue visibility:public modality:FINAL [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_26 type:kotlinx.coroutines.flow.StateFlow? [val] + CALL 'public final fun (): kotlinx.coroutines.flow.StateFlow? declared in ' type=kotlinx.coroutines.flow.StateFlow? origin=null + RETURN type=kotlin.Nothing from='public final fun (): kotlin.String? declared in ' + WHEN type=kotlin.String? origin=null + 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 + ARG arg0: GET_VAR 'val tmp_26: kotlinx.coroutines.flow.StateFlow? declared in .' type=kotlinx.coroutines.flow.StateFlow? origin=null + ARG arg1: CONST Null type=kotlin.Nothing? value=null + then: CONST Null type=kotlin.String? value=null + BRANCH + if: CONST Boolean type=kotlin.Boolean value=true + then: CALL 'public abstract fun (): T of kotlinx.coroutines.flow.StateFlow declared in kotlinx.coroutines.flow.StateFlow' type=kotlin.String? origin=null + ARG : GET_VAR 'val tmp_26: kotlinx.coroutines.flow.StateFlow? declared in .' type=kotlinx.coroutines.flow.StateFlow? origin=null + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:nullableStateFlowPropertyNative visibility:public modality:FINAL [val] + annotations: + ObjCName(name = "nullableStateFlowProperty", swiftName = , exact = ) + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.StateFlow? + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:nullableStateFlowPropertyNative visibility:public modality:FINAL [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_27 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.StateFlow? declared in ' + CALL 'public final fun (): kotlinx.coroutines.flow.StateFlow? declared in ' type=kotlinx.coroutines.flow.StateFlow? origin=null + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:nullableStateFlowPropertyValue visibility:public modality:FINAL [val] + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlin.String? + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:nullableStateFlowPropertyValue visibility:public modality:FINAL [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_28 type:kotlinx.coroutines.flow.StateFlow? [val] + CALL 'public final fun (): kotlinx.coroutines.flow.StateFlow? declared in ' type=kotlinx.coroutines.flow.StateFlow? origin=null + RETURN type=kotlin.Nothing from='public final fun (): kotlin.String? declared in ' + WHEN type=kotlin.String? origin=null + 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 + ARG arg0: GET_VAR 'val tmp_28: kotlinx.coroutines.flow.StateFlow? declared in .' type=kotlinx.coroutines.flow.StateFlow? origin=null + ARG arg1: CONST Null type=kotlin.Nothing? value=null + then: CONST Null type=kotlin.String? value=null + BRANCH + if: CONST Boolean type=kotlin.Boolean value=true + then: CALL 'public abstract fun (): T of kotlinx.coroutines.flow.StateFlow declared in kotlinx.coroutines.flow.StateFlow' type=kotlin.String origin=null + ARG : GET_VAR 'val tmp_28: kotlinx.coroutines.flow.StateFlow? declared in .' type=kotlinx.coroutines.flow.StateFlow? origin=null + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:nullableStateFlowValueNative visibility:public modality:FINAL [val] + annotations: + ObjCName(name = "nullableStateFlowValue", swiftName = , exact = ) + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.StateFlow + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:nullableStateFlowValueNative visibility:public modality:FINAL [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_29 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.StateFlow declared in ' + CALL 'public final fun (): kotlinx.coroutines.flow.StateFlow declared in ' type=kotlinx.coroutines.flow.StateFlow origin=null + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:nullableStateFlowValueValue visibility:public modality:FINAL [val] + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlin.String? + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:nullableStateFlowValueValue visibility:public modality:FINAL [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_30 type:kotlinx.coroutines.flow.StateFlow [val] + CALL 'public final fun (): kotlinx.coroutines.flow.StateFlow declared in ' type=kotlinx.coroutines.flow.StateFlow origin=null + RETURN type=kotlin.Nothing from='public final fun (): kotlin.String? declared in ' + CALL 'public abstract fun (): T of kotlinx.coroutines.flow.StateFlow declared in kotlinx.coroutines.flow.StateFlow' type=kotlin.String? origin=null + ARG : GET_VAR 'val tmp_30: kotlinx.coroutines.flow.StateFlow declared in .' type=kotlinx.coroutines.flow.StateFlow origin=null + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:refinedFlowNative visibility:public modality:FINAL [val] + annotations: + ObjCName(name = "refinedFlow", swiftName = , exact = ) + ShouldRefineInSwift + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.Flow + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:refinedFlowNative visibility:public modality:FINAL [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_31 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.Flow declared in ' + CALL 'public final fun (): kotlinx.coroutines.flow.Flow declared in ' type=kotlinx.coroutines.flow.Flow origin=null + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:refinedStateFlow visibility:public modality:FINAL [val] + annotations: + ShouldRefineInSwift + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.StateFlow + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:refinedStateFlow visibility:public modality:FINAL [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_32 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.StateFlow declared in ' + CALL 'public final fun (): kotlinx.coroutines.flow.StateFlow declared in ' type=kotlinx.coroutines.flow.StateFlow origin=null + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:refinedStateValue visibility:public modality:FINAL [val] + annotations: + ObjCName(name = "refinedState", swiftName = , exact = ) + ShouldRefineInSwift + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlin.String + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:refinedStateValue visibility:public modality:FINAL [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_33 type:kotlinx.coroutines.flow.StateFlow [val] + CALL 'public final fun (): kotlinx.coroutines.flow.StateFlow declared in ' type=kotlinx.coroutines.flow.StateFlow origin=null + RETURN type=kotlin.Nothing from='public final fun (): kotlin.String declared in ' + CALL 'public abstract fun (): T of kotlinx.coroutines.flow.StateFlow declared in kotlinx.coroutines.flow.StateFlow' type=kotlin.String origin=null + ARG : GET_VAR 'val tmp_33: kotlinx.coroutines.flow.StateFlow declared in .' type=kotlinx.coroutines.flow.StateFlow origin=null + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:statePropertyFlow visibility:public modality:FINAL [val] + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.StateFlow + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:statePropertyFlow visibility:public modality:FINAL [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_34 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.StateFlow declared in ' + CALL 'public final fun (): kotlinx.coroutines.flow.StateFlow declared in ' type=kotlinx.coroutines.flow.StateFlow origin=null + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:statePropertyValue visibility:public modality:FINAL [val] + annotations: + ObjCName(name = "stateProperty", swiftName = , exact = ) + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlin.String + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:statePropertyValue visibility:public modality:FINAL [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_35 type:kotlinx.coroutines.flow.StateFlow [val] + CALL 'public final fun (): kotlinx.coroutines.flow.StateFlow declared in ' type=kotlinx.coroutines.flow.StateFlow origin=null + RETURN type=kotlin.Nothing from='public final fun (): kotlin.String declared in ' + CALL 'public abstract fun (): T of kotlinx.coroutines.flow.StateFlow declared in kotlinx.coroutines.flow.StateFlow' type=kotlin.String origin=null + ARG : GET_VAR 'val tmp_35: kotlinx.coroutines.flow.StateFlow declared in .' type=kotlinx.coroutines.flow.StateFlow origin=null + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:topLevelFlowNative visibility:public modality:FINAL [val] + annotations: + ObjCName(name = "topLevelFlow", swiftName = , exact = ) + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.Flow + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:topLevelFlowNative visibility:public modality:FINAL [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_36 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.Flow declared in ' + CALL 'public final fun (): kotlinx.coroutines.flow.Flow declared in ' type=kotlinx.coroutines.flow.Flow origin=null + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:topLevelMutableStateFlowNative visibility:public modality:FINAL [val] + annotations: + ObjCName(name = "topLevelMutableStateFlow", swiftName = , exact = ) + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.MutableStateFlow + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:topLevelMutableStateFlowNative visibility:public modality:FINAL [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_37 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.MutableStateFlow declared in ' + CALL 'public final fun (): kotlinx.coroutines.flow.MutableStateFlow declared in ' type=kotlinx.coroutines.flow.MutableStateFlow origin=null + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:topLevelSharedFlowNative visibility:public modality:FINAL [val] + annotations: + ObjCName(name = "topLevelSharedFlow", swiftName = , exact = ) + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.SharedFlow + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:topLevelSharedFlowNative visibility:public modality:FINAL [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_38 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.SharedFlow declared in ' + CALL 'public final fun (): kotlinx.coroutines.flow.SharedFlow declared in ' type=kotlinx.coroutines.flow.SharedFlow origin=null + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:topLevelSharedFlowReplayCache visibility:public modality:FINAL [val] + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlin.collections.List + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:topLevelSharedFlowReplayCache visibility:public modality:FINAL [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_39 type:kotlinx.coroutines.flow.SharedFlow [val] + CALL 'public final fun (): kotlinx.coroutines.flow.SharedFlow declared in ' type=kotlinx.coroutines.flow.SharedFlow origin=null + RETURN type=kotlin.Nothing from='public final fun (): kotlin.collections.List declared in ' + CALL 'public abstract fun (): kotlin.collections.List declared in kotlinx.coroutines.flow.SharedFlow' type=kotlin.String origin=null + ARG : GET_VAR 'val tmp_39: kotlinx.coroutines.flow.SharedFlow declared in .' type=kotlinx.coroutines.flow.SharedFlow origin=null + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:topLevelStateFlowNative visibility:public modality:FINAL [val] + annotations: + ObjCName(name = "topLevelStateFlow", swiftName = , exact = ) + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.StateFlow + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:topLevelStateFlowNative visibility:public modality:FINAL [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_40 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.StateFlow declared in ' + CALL 'public final fun (): kotlinx.coroutines.flow.StateFlow declared in ' type=kotlinx.coroutines.flow.StateFlow origin=null + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:topLevelStateFlowValue visibility:public modality:FINAL [val] + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlin.String + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:topLevelStateFlowValue visibility:public modality:FINAL [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_41 type:kotlinx.coroutines.flow.StateFlow [val] + CALL 'public final fun (): kotlinx.coroutines.flow.StateFlow declared in ' type=kotlinx.coroutines.flow.StateFlow origin=null + RETURN type=kotlin.Nothing from='public final fun (): kotlin.String declared in ' + CALL 'public abstract fun (): T of kotlinx.coroutines.flow.StateFlow declared in kotlinx.coroutines.flow.StateFlow' type=kotlin.String origin=null + ARG : GET_VAR 'val tmp_41: kotlinx.coroutines.flow.StateFlow declared in .' type=kotlinx.coroutines.flow.StateFlow origin=null +FILE fqName: fileName:/properties.kt + PROPERTY name:topLevelFlow visibility:public modality:FINAL [val] + annotations: + NativeCoroutines + FIELD PROPERTY_BACKING_FIELD name:topLevelFlow type:kotlinx.coroutines.flow.Flow visibility:private [final,static] + EXPRESSION_BODY + CALL 'public final fun flowOf (value: T of kotlinx.coroutines.flow.flowOf): kotlinx.coroutines.flow.Flow declared in kotlinx.coroutines.flow' type=kotlinx.coroutines.flow.Flow origin=null + TYPE_ARG T: kotlin.String + ARG value: CONST String type=kotlin.String value="OK1" + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.Flow + correspondingProperty: PROPERTY name:topLevelFlow visibility:public modality:FINAL [val] + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.Flow declared in ' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:topLevelFlow type:kotlinx.coroutines.flow.Flow visibility:private [final,static]' type=kotlinx.coroutines.flow.Flow origin=null + PROPERTY name:topLevelSharedFlow visibility:public modality:FINAL [val] + annotations: + NativeCoroutines + FIELD PROPERTY_BACKING_FIELD name:topLevelSharedFlow type:kotlinx.coroutines.flow.SharedFlow visibility:private [final,static] + EXPRESSION_BODY + CALL 'public final fun apply (: T of kotlin.apply, block: @[ExtensionFunctionType] kotlin.Function1): T of kotlin.apply declared in kotlin' type=kotlinx.coroutines.flow.MutableSharedFlow origin=null + TYPE_ARG T: kotlinx.coroutines.flow.MutableSharedFlow + ARG : CALL 'public final fun MutableSharedFlow (replay: kotlin.Int, extraBufferCapacity: kotlin.Int, onBufferOverflow: kotlinx.coroutines.channels.BufferOverflow): kotlinx.coroutines.flow.MutableSharedFlow declared in kotlinx.coroutines.flow' type=kotlinx.coroutines.flow.MutableSharedFlow origin=null + TYPE_ARG T: kotlin.String + ARG replay: CONST Int type=kotlin.Int value=1 + ARG block: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1, kotlin.Unit> origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL returnType:kotlin.Unit + VALUE_PARAMETER kind:ExtensionReceiver name:$this$apply index:0 type:kotlinx.coroutines.flow.MutableSharedFlow + BLOCK_BODY + TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit + CALL 'public abstract fun tryEmit (value: T of kotlinx.coroutines.flow.MutableSharedFlow): kotlin.Boolean declared in kotlinx.coroutines.flow.MutableSharedFlow' type=kotlin.Boolean origin=null + ARG : GET_VAR '$this$apply: kotlinx.coroutines.flow.MutableSharedFlow declared in .topLevelSharedFlow.' type=kotlinx.coroutines.flow.MutableSharedFlow origin=IMPLICIT_ARGUMENT + ARG value: CONST String type=kotlin.String value="OK2" + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.SharedFlow + correspondingProperty: PROPERTY name:topLevelSharedFlow visibility:public modality:FINAL [val] + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.SharedFlow declared in ' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:topLevelSharedFlow type:kotlinx.coroutines.flow.SharedFlow visibility:private [final,static]' type=kotlinx.coroutines.flow.SharedFlow origin=null + PROPERTY name:topLevelStateFlow visibility:public modality:FINAL [val] + annotations: + NativeCoroutines + FIELD PROPERTY_BACKING_FIELD name:topLevelStateFlow type:kotlinx.coroutines.flow.StateFlow visibility:private [final,static] + EXPRESSION_BODY + CALL 'public final fun MutableStateFlow (value: T of kotlinx.coroutines.flow.MutableStateFlow): kotlinx.coroutines.flow.MutableStateFlow declared in kotlinx.coroutines.flow' type=kotlinx.coroutines.flow.MutableStateFlow origin=null + TYPE_ARG T: kotlin.String + ARG value: CONST String type=kotlin.String value="OK3" + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.StateFlow + correspondingProperty: PROPERTY name:topLevelStateFlow visibility:public modality:FINAL [val] + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.StateFlow declared in ' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:topLevelStateFlow type:kotlinx.coroutines.flow.StateFlow visibility:private [final,static]' type=kotlinx.coroutines.flow.StateFlow origin=null + PROPERTY name:topLevelMutableStateFlow visibility:public modality:FINAL [val] + annotations: + NativeCoroutines + FIELD PROPERTY_BACKING_FIELD name:topLevelMutableStateFlow type:kotlinx.coroutines.flow.MutableStateFlow visibility:private [final,static] + EXPRESSION_BODY + CALL 'public final fun MutableStateFlow (value: T of kotlinx.coroutines.flow.MutableStateFlow): kotlinx.coroutines.flow.MutableStateFlow declared in kotlinx.coroutines.flow' type=kotlinx.coroutines.flow.MutableStateFlow origin=null + TYPE_ARG T: kotlin.String + ARG value: CONST String type=kotlin.String value="OK4" + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.MutableStateFlow + correspondingProperty: PROPERTY name:topLevelMutableStateFlow visibility:public modality:FINAL [val] + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.MutableStateFlow declared in ' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:topLevelMutableStateFlow type:kotlinx.coroutines.flow.MutableStateFlow visibility:private [final,static]' type=kotlinx.coroutines.flow.MutableStateFlow origin=null + PROPERTY name:nullableFlowValue visibility:public modality:FINAL [val] + annotations: + NativeCoroutines + FIELD PROPERTY_BACKING_FIELD name:nullableFlowValue type:kotlinx.coroutines.flow.Flow visibility:private [final,static] + EXPRESSION_BODY + CALL 'public final fun flowOf (value: T of kotlinx.coroutines.flow.flowOf): kotlinx.coroutines.flow.Flow declared in kotlinx.coroutines.flow' type=kotlinx.coroutines.flow.Flow origin=null + TYPE_ARG T: kotlin.String? + ARG value: CONST Null type=kotlin.Nothing? value=null + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.Flow + correspondingProperty: PROPERTY name:nullableFlowValue visibility:public modality:FINAL [val] + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.Flow declared in ' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:nullableFlowValue type:kotlinx.coroutines.flow.Flow visibility:private [final,static]' type=kotlinx.coroutines.flow.Flow origin=null + PROPERTY name:nullableSharedFlowValue visibility:public modality:FINAL [val] + annotations: + NativeCoroutines + FIELD PROPERTY_BACKING_FIELD name:nullableSharedFlowValue type:kotlinx.coroutines.flow.SharedFlow visibility:private [final,static] + EXPRESSION_BODY + CALL 'public final fun apply (: T of kotlin.apply, block: @[ExtensionFunctionType] kotlin.Function1): T of kotlin.apply declared in kotlin' type=kotlinx.coroutines.flow.MutableSharedFlow origin=null + TYPE_ARG T: kotlinx.coroutines.flow.MutableSharedFlow + ARG : CALL 'public final fun MutableSharedFlow (replay: kotlin.Int, extraBufferCapacity: kotlin.Int, onBufferOverflow: kotlinx.coroutines.channels.BufferOverflow): kotlinx.coroutines.flow.MutableSharedFlow declared in kotlinx.coroutines.flow' type=kotlinx.coroutines.flow.MutableSharedFlow origin=null + TYPE_ARG T: kotlin.String? + ARG replay: CONST Int type=kotlin.Int value=1 + ARG block: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1, kotlin.Unit> origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL returnType:kotlin.Unit + VALUE_PARAMETER kind:ExtensionReceiver name:$this$apply index:0 type:kotlinx.coroutines.flow.MutableSharedFlow + BLOCK_BODY + TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit + CALL 'public abstract fun tryEmit (value: T of kotlinx.coroutines.flow.MutableSharedFlow): kotlin.Boolean declared in kotlinx.coroutines.flow.MutableSharedFlow' type=kotlin.Boolean origin=null + ARG : GET_VAR '$this$apply: kotlinx.coroutines.flow.MutableSharedFlow declared in .nullableSharedFlowValue.' type=kotlinx.coroutines.flow.MutableSharedFlow origin=IMPLICIT_ARGUMENT + ARG value: CONST Null type=kotlin.Nothing? value=null + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.SharedFlow + correspondingProperty: PROPERTY name:nullableSharedFlowValue visibility:public modality:FINAL [val] + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.SharedFlow declared in ' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:nullableSharedFlowValue type:kotlinx.coroutines.flow.SharedFlow visibility:private [final,static]' type=kotlinx.coroutines.flow.SharedFlow origin=null + PROPERTY name:nullableStateFlowValue visibility:public modality:FINAL [val] + annotations: + NativeCoroutines + FIELD PROPERTY_BACKING_FIELD name:nullableStateFlowValue type:kotlinx.coroutines.flow.StateFlow visibility:private [final,static] + EXPRESSION_BODY + CALL 'public final fun MutableStateFlow (value: T of kotlinx.coroutines.flow.MutableStateFlow): kotlinx.coroutines.flow.MutableStateFlow declared in kotlinx.coroutines.flow' type=kotlinx.coroutines.flow.MutableStateFlow origin=null + TYPE_ARG T: kotlin.String? + ARG value: CONST Null type=kotlin.Nothing? value=null + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.StateFlow + correspondingProperty: PROPERTY name:nullableStateFlowValue visibility:public modality:FINAL [val] + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.StateFlow declared in ' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:nullableStateFlowValue type:kotlinx.coroutines.flow.StateFlow visibility:private [final,static]' type=kotlinx.coroutines.flow.StateFlow origin=null + PROPERTY name:stateProperty visibility:public modality:FINAL [val] + annotations: + NativeCoroutinesState + FIELD PROPERTY_BACKING_FIELD name:stateProperty type:kotlinx.coroutines.flow.StateFlow visibility:private [final,static] + EXPRESSION_BODY + CALL 'public final fun MutableStateFlow (value: T of kotlinx.coroutines.flow.MutableStateFlow): kotlinx.coroutines.flow.MutableStateFlow declared in kotlinx.coroutines.flow' type=kotlinx.coroutines.flow.MutableStateFlow origin=null + TYPE_ARG T: kotlin.String + ARG value: CONST String type=kotlin.String value="OK23" + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.StateFlow + correspondingProperty: PROPERTY name:stateProperty visibility:public modality:FINAL [val] + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.StateFlow declared in ' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:stateProperty type:kotlinx.coroutines.flow.StateFlow visibility:private [final,static]' type=kotlinx.coroutines.flow.StateFlow origin=null + PROPERTY name:mutableStateProperty visibility:public modality:FINAL [val] + annotations: + NativeCoroutinesState + FIELD PROPERTY_BACKING_FIELD name:mutableStateProperty type:kotlinx.coroutines.flow.MutableStateFlow visibility:private [final,static] + EXPRESSION_BODY + CALL 'public final fun MutableStateFlow (value: T of kotlinx.coroutines.flow.MutableStateFlow): kotlinx.coroutines.flow.MutableStateFlow declared in kotlinx.coroutines.flow' type=kotlinx.coroutines.flow.MutableStateFlow origin=null + TYPE_ARG T: kotlin.String + ARG value: CONST String type=kotlin.String value="OK24" + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.MutableStateFlow + correspondingProperty: PROPERTY name:mutableStateProperty visibility:public modality:FINAL [val] + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.MutableStateFlow declared in ' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:mutableStateProperty type:kotlinx.coroutines.flow.MutableStateFlow visibility:private [final,static]' type=kotlinx.coroutines.flow.MutableStateFlow origin=null + PROPERTY name:refinedFlow visibility:public modality:FINAL [val] + annotations: + NativeCoroutinesRefined + FIELD PROPERTY_BACKING_FIELD name:refinedFlow type:kotlinx.coroutines.flow.Flow visibility:private [final,static] + EXPRESSION_BODY + CALL 'public final fun flowOf (value: T of kotlinx.coroutines.flow.flowOf): kotlinx.coroutines.flow.Flow declared in kotlinx.coroutines.flow' type=kotlinx.coroutines.flow.Flow origin=null + TYPE_ARG T: kotlin.String + ARG value: CONST String type=kotlin.String value="OK25" + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.Flow + correspondingProperty: PROPERTY name:refinedFlow visibility:public modality:FINAL [val] + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.Flow declared in ' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:refinedFlow type:kotlinx.coroutines.flow.Flow visibility:private [final,static]' type=kotlinx.coroutines.flow.Flow origin=null + PROPERTY name:refinedState visibility:public modality:FINAL [val] + annotations: + NativeCoroutinesRefinedState + FIELD PROPERTY_BACKING_FIELD name:refinedState type:kotlinx.coroutines.flow.StateFlow visibility:private [final,static] + EXPRESSION_BODY + CALL 'public final fun MutableStateFlow (value: T of kotlinx.coroutines.flow.MutableStateFlow): kotlinx.coroutines.flow.MutableStateFlow declared in kotlinx.coroutines.flow' type=kotlinx.coroutines.flow.MutableStateFlow origin=null + TYPE_ARG T: kotlin.String + ARG value: CONST String type=kotlin.String value="OK26" + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.StateFlow + correspondingProperty: PROPERTY name:refinedState visibility:public modality:FINAL [val] + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.StateFlow declared in ' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:refinedState type:kotlinx.coroutines.flow.StateFlow visibility:private [final,static]' type=kotlinx.coroutines.flow.StateFlow origin=null + PROPERTY name:mutableNullableStateProperty visibility:public modality:FINAL [val] + annotations: + NativeCoroutinesState + FIELD PROPERTY_BACKING_FIELD name:mutableNullableStateProperty type:kotlinx.coroutines.flow.MutableStateFlow? visibility:private [final,static] + EXPRESSION_BODY + CALL 'public final fun MutableStateFlow (value: T of kotlinx.coroutines.flow.MutableStateFlow): kotlinx.coroutines.flow.MutableStateFlow declared in kotlinx.coroutines.flow' type=kotlinx.coroutines.flow.MutableStateFlow origin=null + TYPE_ARG T: kotlin.String + ARG value: CONST String type=kotlin.String value="OK27" + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.MutableStateFlow? + correspondingProperty: PROPERTY name:mutableNullableStateProperty visibility:public modality:FINAL [val] + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.MutableStateFlow? declared in ' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:mutableNullableStateProperty type:kotlinx.coroutines.flow.MutableStateFlow? visibility:private [final,static]' type=kotlinx.coroutines.flow.MutableStateFlow? origin=null + CLASS CLASS name:MyClass28 modality:FINAL visibility:public superTypes:[.MyInterface28] + thisReceiver: VALUE_PARAMETER INSTANCE_RECEIVER kind:DispatchReceiver name: type:.MyClass28 + PROPERTY name:interfaceFlowValue visibility:public modality:OPEN [val] + annotations: + NativeCoroutines + overridden: + public abstract interfaceFlowValue: kotlinx.coroutines.flow.Flow declared in .MyInterface28 + FIELD PROPERTY_BACKING_FIELD name:interfaceFlowValue type:kotlinx.coroutines.flow.Flow visibility:private [final] + EXPRESSION_BODY + CALL 'public final fun flowOf (value: T of kotlinx.coroutines.flow.flowOf): kotlinx.coroutines.flow.Flow declared in kotlinx.coroutines.flow' type=kotlinx.coroutines.flow.Flow origin=null + TYPE_ARG T: kotlin.String + ARG value: CONST String type=kotlin.String value="OK28" + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:OPEN returnType:kotlinx.coroutines.flow.Flow + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyClass28 + correspondingProperty: PROPERTY name:interfaceFlowValue visibility:public modality:OPEN [val] + overridden: + public abstract fun (): kotlinx.coroutines.flow.Flow declared in .MyInterface28 + BLOCK_BODY + RETURN type=kotlin.Nothing from='public open fun (): kotlinx.coroutines.flow.Flow declared in .MyClass28' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:interfaceFlowValue type:kotlinx.coroutines.flow.Flow visibility:private [final]' type=kotlinx.coroutines.flow.Flow origin=null + receiver: GET_VAR ': .MyClass28 declared in .MyClass28.' type=.MyClass28 origin=null + CONSTRUCTOR visibility:public returnType:.MyClass28 [primary] + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'public constructor () declared in kotlin.Any' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:MyClass28 modality:FINAL visibility:public superTypes:[.MyInterface28]' type=kotlin.Unit + FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN returnType:kotlin.Boolean [fake_override,operator] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + VALUE_PARAMETER kind:Regular name:other index:1 type:kotlin.Any? + overridden: + public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in .MyInterface28 + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN returnType:kotlin.Int [fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + overridden: + public open fun hashCode (): kotlin.Int declared in .MyInterface28 + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN returnType:kotlin.String [fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + overridden: + public open fun toString (): kotlin.String declared in .MyInterface28 + PROPERTY FAKE_OVERRIDE name:interfaceFlowValueNative visibility:public modality:OPEN [fake_override,val] + annotations: + ObjCName(name = "interfaceFlowValue", swiftName = , exact = ) + overridden: + public open interfaceFlowValueNative: kotlinx.coroutines.flow.Flow declared in .MyInterface28 + FUN FAKE_OVERRIDE name: visibility:public modality:OPEN returnType:kotlinx.coroutines.flow.Flow [fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyInterface28 + correspondingProperty: PROPERTY FAKE_OVERRIDE name:interfaceFlowValueNative visibility:public modality:OPEN [fake_override,val] + overridden: + public open fun (): kotlinx.coroutines.flow.Flow declared in .MyInterface28 + CLASS CLASS name:MyFlow29 modality:FINAL visibility:public superTypes:[kotlinx.coroutines.flow.Flow.MyFlow29?>] + thisReceiver: VALUE_PARAMETER INSTANCE_RECEIVER kind:DispatchReceiver name: type:.MyFlow29.MyFlow29, T2 of .MyFlow29> + TYPE_PARAMETER name:T1 index:0 variance: superTypes:[kotlin.Any?] reified:false + TYPE_PARAMETER name:T2 index:1 variance: superTypes:[kotlin.Any?] reified:false + FIELD DELEGATE name:$$delegate_0 type:kotlinx.coroutines.flow.Flow.MyFlow29?> visibility:private [final] + EXPRESSION_BODY + CALL 'public final fun flowOf (value: T of kotlinx.coroutines.flow.flowOf): kotlinx.coroutines.flow.Flow declared in kotlinx.coroutines.flow' type=kotlinx.coroutines.flow.Flow.MyFlow29?> origin=null + TYPE_ARG T: T2 of .MyFlow29? + ARG value: CONST Null type=kotlin.Nothing? value=null + CONSTRUCTOR visibility:public returnType:.MyFlow29.MyFlow29, T2 of .MyFlow29> [primary] + VALUE_PARAMETER kind:Regular name:value1 index:0 type:T1 of .MyFlow29 + VALUE_PARAMETER kind:Regular name:value2 index:1 type:T2 of .MyFlow29 + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'public constructor () declared in kotlin.Any' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:MyFlow29 modality:FINAL visibility:public superTypes:[kotlinx.coroutines.flow.Flow.MyFlow29?>]' type=kotlin.Unit + FUN DELEGATED_MEMBER name:collect visibility:public modality:OPEN returnType:kotlin.Unit [suspend] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyFlow29.MyFlow29, T2 of .MyFlow29> + VALUE_PARAMETER kind:Regular name:collector index:1 type:kotlinx.coroutines.flow.FlowCollector.MyFlow29?> + overridden: + public abstract fun collect (collector: kotlinx.coroutines.flow.FlowCollector): kotlin.Unit declared in kotlinx.coroutines.flow.Flow + BLOCK_BODY + CALL 'public abstract fun collect (collector: kotlinx.coroutines.flow.FlowCollector): kotlin.Unit declared in kotlinx.coroutines.flow.Flow' type=kotlin.Unit origin=null + ARG : GET_FIELD 'FIELD DELEGATE name:$$delegate_0 type:kotlinx.coroutines.flow.Flow.MyFlow29?> visibility:private [final] declared in .MyFlow29' type=kotlinx.coroutines.flow.Flow.MyFlow29?> origin=null + receiver: GET_VAR ': .MyFlow29.MyFlow29, T2 of .MyFlow29> declared in .MyFlow29.collect' type=.MyFlow29.MyFlow29, T2 of .MyFlow29> origin=null + ARG collector: GET_VAR 'collector: kotlinx.coroutines.flow.FlowCollector.MyFlow29?> declared in .MyFlow29.collect' type=kotlinx.coroutines.flow.FlowCollector.MyFlow29?> origin=null + FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN returnType:kotlin.Boolean [fake_override,operator] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + VALUE_PARAMETER kind:Regular name:other index:1 type:kotlin.Any? + overridden: + public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlinx.coroutines.flow.Flow + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN returnType:kotlin.Int [fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + overridden: + public open fun hashCode (): kotlin.Int declared in kotlinx.coroutines.flow.Flow + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN returnType:kotlin.String [fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + overridden: + public open fun toString (): kotlin.String declared in kotlinx.coroutines.flow.Flow + CLASS CLASS name:MyGenericClass1 modality:FINAL visibility:public [data] superTypes:[kotlin.Any] + thisReceiver: VALUE_PARAMETER INSTANCE_RECEIVER kind:DispatchReceiver name: type:.MyGenericClass1.MyGenericClass1> + TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false + PROPERTY name:value visibility:public modality:FINAL [val] + FIELD PROPERTY_BACKING_FIELD name:value type:T of .MyGenericClass1 visibility:private [final] + EXPRESSION_BODY + GET_VAR 'value: T of .MyGenericClass1 declared in .MyGenericClass1.' type=T of .MyGenericClass1 origin=INITIALIZE_PROPERTY_FROM_PARAMETER + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL returnType:T of .MyGenericClass1 + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyGenericClass1.MyGenericClass1> + correspondingProperty: PROPERTY name:value visibility:public modality:FINAL [val] + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): T of .MyGenericClass1 declared in .MyGenericClass1' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:value type:T of .MyGenericClass1 visibility:private [final]' type=T of .MyGenericClass1 origin=null + receiver: GET_VAR ': .MyGenericClass1.MyGenericClass1> declared in .MyGenericClass1.' type=.MyGenericClass1.MyGenericClass1> origin=null + CONSTRUCTOR visibility:public returnType:.MyGenericClass1.MyGenericClass1> [primary] + VALUE_PARAMETER kind:Regular name:value index:0 type:T of .MyGenericClass1 + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'public constructor () declared in kotlin.Any' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:MyGenericClass1 modality:FINAL visibility:public [data] superTypes:[kotlin.Any]' type=kotlin.Unit + FUN GENERATED_DATA_CLASS_MEMBER name:component1 visibility:public modality:FINAL returnType:T of .MyGenericClass1 [operator] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyGenericClass1.MyGenericClass1> + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun component1 (): T of .MyGenericClass1 declared in .MyGenericClass1' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:value type:T of .MyGenericClass1 visibility:private [final]' type=T of .MyGenericClass1 origin=null + receiver: GET_VAR ': .MyGenericClass1.MyGenericClass1> declared in .MyGenericClass1.component1' type=.MyGenericClass1.MyGenericClass1> origin=null + FUN GENERATED_DATA_CLASS_MEMBER name:copy visibility:public modality:FINAL returnType:.MyGenericClass1.MyGenericClass1> + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyGenericClass1.MyGenericClass1> + VALUE_PARAMETER kind:Regular name:value index:1 type:T of .MyGenericClass1 + EXPRESSION_BODY + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:value type:T of .MyGenericClass1 visibility:private [final]' type=T of .MyGenericClass1 origin=null + receiver: GET_VAR ': .MyGenericClass1.MyGenericClass1> declared in .MyGenericClass1.copy' type=.MyGenericClass1.MyGenericClass1> origin=null + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun copy (value: T of .MyGenericClass1): .MyGenericClass1.MyGenericClass1> declared in .MyGenericClass1' + CONSTRUCTOR_CALL 'public constructor (value: T of .MyGenericClass1) declared in .MyGenericClass1' type=.MyGenericClass1.MyGenericClass1> origin=null + TYPE_ARG (of class) T: T of .MyGenericClass1 + ARG value: GET_VAR 'value: T of .MyGenericClass1 declared in .MyGenericClass1.copy' type=T of .MyGenericClass1 origin=null + FUN GENERATED_DATA_CLASS_MEMBER name:equals visibility:public modality:OPEN returnType:kotlin.Boolean [operator] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyGenericClass1.MyGenericClass1> + VALUE_PARAMETER kind:Regular name:other index:1 type:kotlin.Any? + overridden: + public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Any + BLOCK_BODY + WHEN type=kotlin.Unit origin=null + BRANCH + if: CALL 'public final fun EQEQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EQEQEQ + ARG arg0: GET_VAR ': .MyGenericClass1.MyGenericClass1> declared in .MyGenericClass1.equals' type=.MyGenericClass1.MyGenericClass1> origin=null + ARG arg1: GET_VAR 'other: kotlin.Any? declared in .MyGenericClass1.equals' type=kotlin.Any? origin=null + then: RETURN type=kotlin.Nothing from='public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in .MyGenericClass1' + CONST Boolean type=kotlin.Boolean value=true + WHEN type=kotlin.Unit origin=null + BRANCH + if: TYPE_OP type=kotlin.Boolean origin=NOT_INSTANCEOF typeOperand=.MyGenericClass1.MyGenericClass1> + GET_VAR 'other: kotlin.Any? declared in .MyGenericClass1.equals' type=kotlin.Any? origin=null + then: RETURN type=kotlin.Nothing from='public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in .MyGenericClass1' + CONST Boolean type=kotlin.Boolean value=false + VAR IR_TEMPORARY_VARIABLE name:tmp_0 type:.MyGenericClass1.MyGenericClass1> [val] + TYPE_OP type=.MyGenericClass1.MyGenericClass1> origin=IMPLICIT_CAST typeOperand=.MyGenericClass1.MyGenericClass1> + GET_VAR 'other: kotlin.Any? declared in .MyGenericClass1.equals' type=kotlin.Any? origin=null + WHEN type=kotlin.Unit origin=null + BRANCH + if: CALL 'public final fun not (): kotlin.Boolean declared in kotlin.Boolean' type=kotlin.Boolean origin=EXCLEQ + ARG : CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EXCLEQ + ARG arg0: GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:value type:T of .MyGenericClass1 visibility:private [final]' type=T of .MyGenericClass1 origin=null + receiver: GET_VAR ': .MyGenericClass1.MyGenericClass1> declared in .MyGenericClass1.equals' type=.MyGenericClass1.MyGenericClass1> origin=null + ARG arg1: GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:value type:T of .MyGenericClass1 visibility:private [final]' type=T of .MyGenericClass1 origin=null + receiver: GET_VAR 'val tmp_0: .MyGenericClass1.MyGenericClass1> declared in .MyGenericClass1.equals' type=.MyGenericClass1.MyGenericClass1> origin=null + then: RETURN type=kotlin.Nothing from='public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in .MyGenericClass1' + CONST Boolean type=kotlin.Boolean value=false + RETURN type=kotlin.Nothing from='public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in .MyGenericClass1' + CONST Boolean type=kotlin.Boolean value=true + FUN GENERATED_DATA_CLASS_MEMBER name:hashCode visibility:public modality:OPEN returnType:kotlin.Int + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyGenericClass1.MyGenericClass1> + overridden: + public open fun hashCode (): kotlin.Int declared in kotlin.Any + BLOCK_BODY + RETURN type=kotlin.Nothing from='public open fun hashCode (): kotlin.Int declared in .MyGenericClass1' + WHEN type=kotlin.Int origin=null + 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 + ARG arg0: GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:value type:T of .MyGenericClass1 visibility:private [final]' type=T of .MyGenericClass1 origin=null + receiver: GET_VAR ': .MyGenericClass1.MyGenericClass1> declared in .MyGenericClass1.hashCode' type=.MyGenericClass1.MyGenericClass1> origin=null + ARG arg1: CONST Null type=kotlin.Nothing? value=null + then: CONST Int type=kotlin.Int value=0 + BRANCH + if: CONST Boolean type=kotlin.Boolean value=true + then: CALL 'public open fun hashCode (): kotlin.Int declared in kotlin.Any' type=kotlin.Int origin=null + ARG : GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:value type:T of .MyGenericClass1 visibility:private [final]' type=T of .MyGenericClass1 origin=null + receiver: GET_VAR ': .MyGenericClass1.MyGenericClass1> declared in .MyGenericClass1.hashCode' type=.MyGenericClass1.MyGenericClass1> origin=null + FUN GENERATED_DATA_CLASS_MEMBER name:toString visibility:public modality:OPEN returnType:kotlin.String + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyGenericClass1.MyGenericClass1> + overridden: + public open fun toString (): kotlin.String declared in kotlin.Any + BLOCK_BODY + RETURN type=kotlin.Nothing from='public open fun toString (): kotlin.String declared in .MyGenericClass1' + STRING_CONCATENATION type=kotlin.String + CONST String type=kotlin.String value="MyGenericClass1(" + CONST String type=kotlin.String value="value=" + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:value type:T of .MyGenericClass1 visibility:private [final]' type=T of .MyGenericClass1 origin=null + receiver: GET_VAR ': .MyGenericClass1.MyGenericClass1> declared in .MyGenericClass1.toString' type=.MyGenericClass1.MyGenericClass1> origin=null + CONST String type=kotlin.String value=")" + CLASS CLASS name:MyGenericClass2 modality:FINAL visibility:public superTypes:[kotlin.Any] + thisReceiver: VALUE_PARAMETER INSTANCE_RECEIVER kind:DispatchReceiver name: type:.MyGenericClass2.MyGenericClass2> + TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false + PROPERTY name:value visibility:private modality:FINAL [val] + FIELD PROPERTY_BACKING_FIELD name:value type:T of .MyGenericClass2 visibility:private [final] + EXPRESSION_BODY + GET_VAR 'value: T of .MyGenericClass2 declared in .MyGenericClass2.' type=T of .MyGenericClass2 origin=INITIALIZE_PROPERTY_FROM_PARAMETER + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:private modality:FINAL returnType:T of .MyGenericClass2 + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyGenericClass2.MyGenericClass2> + correspondingProperty: PROPERTY name:value visibility:private modality:FINAL [val] + BLOCK_BODY + RETURN type=kotlin.Nothing from='private final fun (): T of .MyGenericClass2 declared in .MyGenericClass2' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:value type:T of .MyGenericClass2 visibility:private [final]' type=T of .MyGenericClass2 origin=null + receiver: GET_VAR ': .MyGenericClass2.MyGenericClass2> declared in .MyGenericClass2.' type=.MyGenericClass2.MyGenericClass2> origin=null + PROPERTY name:genericFlow visibility:public modality:FINAL [val] + annotations: + NativeCoroutines + FIELD PROPERTY_BACKING_FIELD name:genericFlow type:kotlinx.coroutines.flow.Flow.MyGenericClass2> visibility:private [final] + EXPRESSION_BODY + CALL 'public final fun flowOf (value: T of kotlinx.coroutines.flow.flowOf): kotlinx.coroutines.flow.Flow declared in kotlinx.coroutines.flow' type=kotlinx.coroutines.flow.Flow.MyGenericClass2> origin=null + TYPE_ARG T: T of .MyGenericClass2 + ARG value: CALL 'private final fun (): T of .MyGenericClass2 declared in .MyGenericClass2' type=T of .MyGenericClass2 origin=GET_PROPERTY + ARG : GET_VAR ': .MyGenericClass2.MyGenericClass2> declared in .MyGenericClass2' type=.MyGenericClass2.MyGenericClass2> origin=IMPLICIT_ARGUMENT + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.Flow.MyGenericClass2> + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyGenericClass2.MyGenericClass2> + correspondingProperty: PROPERTY name:genericFlow visibility:public modality:FINAL [val] + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.Flow.MyGenericClass2> declared in .MyGenericClass2' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:genericFlow type:kotlinx.coroutines.flow.Flow.MyGenericClass2> visibility:private [final]' type=kotlinx.coroutines.flow.Flow.MyGenericClass2> origin=null + receiver: GET_VAR ': .MyGenericClass2.MyGenericClass2> declared in .MyGenericClass2.' type=.MyGenericClass2.MyGenericClass2> origin=null + PROPERTY name:genericSharedFlow visibility:public modality:FINAL [val] + annotations: + NativeCoroutines + FIELD PROPERTY_BACKING_FIELD name:genericSharedFlow type:kotlinx.coroutines.flow.SharedFlow.MyGenericClass2> visibility:private [final] + EXPRESSION_BODY + CALL 'public final fun apply (: T of kotlin.apply, block: @[ExtensionFunctionType] kotlin.Function1): T of kotlin.apply declared in kotlin' type=kotlinx.coroutines.flow.MutableSharedFlow.MyGenericClass2> origin=null + TYPE_ARG T: kotlinx.coroutines.flow.MutableSharedFlow.MyGenericClass2> + ARG : CALL 'public final fun MutableSharedFlow (replay: kotlin.Int, extraBufferCapacity: kotlin.Int, onBufferOverflow: kotlinx.coroutines.channels.BufferOverflow): kotlinx.coroutines.flow.MutableSharedFlow declared in kotlinx.coroutines.flow' type=kotlinx.coroutines.flow.MutableSharedFlow.MyGenericClass2> origin=null + TYPE_ARG T: T of .MyGenericClass2 + ARG replay: CONST Int type=kotlin.Int value=1 + ARG block: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1.MyGenericClass2>, kotlin.Unit> origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL returnType:kotlin.Unit + VALUE_PARAMETER kind:ExtensionReceiver name:$this$apply index:0 type:kotlinx.coroutines.flow.MutableSharedFlow.MyGenericClass2> + BLOCK_BODY + TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit + CALL 'public abstract fun tryEmit (value: T of kotlinx.coroutines.flow.MutableSharedFlow): kotlin.Boolean declared in kotlinx.coroutines.flow.MutableSharedFlow' type=kotlin.Boolean origin=null + ARG : GET_VAR '$this$apply: kotlinx.coroutines.flow.MutableSharedFlow.MyGenericClass2> declared in .MyGenericClass2.genericSharedFlow.' type=kotlinx.coroutines.flow.MutableSharedFlow.MyGenericClass2> origin=IMPLICIT_ARGUMENT + ARG value: CALL 'private final fun (): T of .MyGenericClass2 declared in .MyGenericClass2' type=T of .MyGenericClass2 origin=GET_PROPERTY + ARG : GET_VAR ': .MyGenericClass2.MyGenericClass2> declared in .MyGenericClass2' type=.MyGenericClass2.MyGenericClass2> origin=IMPLICIT_ARGUMENT + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.SharedFlow.MyGenericClass2> + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyGenericClass2.MyGenericClass2> + correspondingProperty: PROPERTY name:genericSharedFlow visibility:public modality:FINAL [val] + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.SharedFlow.MyGenericClass2> declared in .MyGenericClass2' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:genericSharedFlow type:kotlinx.coroutines.flow.SharedFlow.MyGenericClass2> visibility:private [final]' type=kotlinx.coroutines.flow.SharedFlow.MyGenericClass2> origin=null + receiver: GET_VAR ': .MyGenericClass2.MyGenericClass2> declared in .MyGenericClass2.' type=.MyGenericClass2.MyGenericClass2> origin=null + PROPERTY name:genericStateFlow visibility:public modality:FINAL [val] + annotations: + NativeCoroutines + FIELD PROPERTY_BACKING_FIELD name:genericStateFlow type:kotlinx.coroutines.flow.StateFlow.MyGenericClass2> visibility:private [final] + EXPRESSION_BODY + CALL 'public final fun MutableStateFlow (value: T of kotlinx.coroutines.flow.MutableStateFlow): kotlinx.coroutines.flow.MutableStateFlow declared in kotlinx.coroutines.flow' type=kotlinx.coroutines.flow.MutableStateFlow.MyGenericClass2> origin=null + TYPE_ARG T: T of .MyGenericClass2 + ARG value: CALL 'private final fun (): T of .MyGenericClass2 declared in .MyGenericClass2' type=T of .MyGenericClass2 origin=GET_PROPERTY + ARG : GET_VAR ': .MyGenericClass2.MyGenericClass2> declared in .MyGenericClass2' type=.MyGenericClass2.MyGenericClass2> origin=IMPLICIT_ARGUMENT + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.StateFlow.MyGenericClass2> + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyGenericClass2.MyGenericClass2> + correspondingProperty: PROPERTY name:genericStateFlow visibility:public modality:FINAL [val] + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.StateFlow.MyGenericClass2> declared in .MyGenericClass2' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:genericStateFlow type:kotlinx.coroutines.flow.StateFlow.MyGenericClass2> visibility:private [final]' type=kotlinx.coroutines.flow.StateFlow.MyGenericClass2> origin=null + receiver: GET_VAR ': .MyGenericClass2.MyGenericClass2> declared in .MyGenericClass2.' type=.MyGenericClass2.MyGenericClass2> origin=null + CONSTRUCTOR visibility:public returnType:.MyGenericClass2.MyGenericClass2> [primary] + VALUE_PARAMETER kind:Regular name:value index:0 type:T of .MyGenericClass2 + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'public constructor () declared in kotlin.Any' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:MyGenericClass2 modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit + FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN returnType:kotlin.Boolean [fake_override,operator] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + VALUE_PARAMETER kind:Regular name:other index:1 type:kotlin.Any? + overridden: + public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Any + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN returnType:kotlin.Int [fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + overridden: + public open fun hashCode (): kotlin.Int declared in kotlin.Any + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN returnType:kotlin.String [fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + overridden: + public open fun toString (): kotlin.String declared in kotlin.Any + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:genericFlowNative visibility:public modality:FINAL [val] + annotations: + ObjCName(name = "genericFlow", swiftName = , exact = ) + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.Flow.MyGenericClass2> + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyGenericClass2.MyGenericClass2> + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:genericFlowNative visibility:public modality:FINAL [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_1 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.Flow.MyGenericClass2> declared in .MyGenericClass2' + CALL 'public final fun (): kotlinx.coroutines.flow.Flow.MyGenericClass2> declared in .MyGenericClass2' type=kotlinx.coroutines.flow.Flow.MyGenericClass2> origin=null + ARG : GET_VAR ': .MyGenericClass2.MyGenericClass2> declared in .MyGenericClass2.' type=.MyGenericClass2.MyGenericClass2> origin=null + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:genericSharedFlowNative visibility:public modality:FINAL [val] + annotations: + ObjCName(name = "genericSharedFlow", swiftName = , exact = ) + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.SharedFlow.MyGenericClass2> + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyGenericClass2.MyGenericClass2> + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:genericSharedFlowNative visibility:public modality:FINAL [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_2 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.SharedFlow.MyGenericClass2> declared in .MyGenericClass2' + CALL 'public final fun (): kotlinx.coroutines.flow.SharedFlow.MyGenericClass2> declared in .MyGenericClass2' type=kotlinx.coroutines.flow.SharedFlow.MyGenericClass2> origin=null + ARG : GET_VAR ': .MyGenericClass2.MyGenericClass2> declared in .MyGenericClass2.' type=.MyGenericClass2.MyGenericClass2> origin=null + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:genericSharedFlowReplayCache visibility:public modality:FINAL [val] + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlin.collections.List.MyGenericClass2> + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyGenericClass2.MyGenericClass2> + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:genericSharedFlowReplayCache visibility:public modality:FINAL [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_3 type:kotlinx.coroutines.flow.SharedFlow.MyGenericClass2> [val] + CALL 'public final fun (): kotlinx.coroutines.flow.SharedFlow.MyGenericClass2> declared in .MyGenericClass2' type=kotlinx.coroutines.flow.SharedFlow.MyGenericClass2> origin=null + ARG : GET_VAR ': .MyGenericClass2.MyGenericClass2> declared in .MyGenericClass2.' type=.MyGenericClass2.MyGenericClass2> origin=null + RETURN type=kotlin.Nothing from='public final fun (): kotlin.collections.List.MyGenericClass2> declared in .MyGenericClass2' + CALL 'public abstract fun (): kotlin.collections.List declared in kotlinx.coroutines.flow.SharedFlow' type=T of .MyGenericClass2 origin=null + ARG : GET_VAR 'val tmp_3: kotlinx.coroutines.flow.SharedFlow.MyGenericClass2> declared in .MyGenericClass2.' type=kotlinx.coroutines.flow.SharedFlow.MyGenericClass2> origin=null + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:genericStateFlowNative visibility:public modality:FINAL [val] + annotations: + ObjCName(name = "genericStateFlow", swiftName = , exact = ) + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.StateFlow.MyGenericClass2> + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyGenericClass2.MyGenericClass2> + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:genericStateFlowNative visibility:public modality:FINAL [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_4 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.StateFlow.MyGenericClass2> declared in .MyGenericClass2' + CALL 'public final fun (): kotlinx.coroutines.flow.StateFlow.MyGenericClass2> declared in .MyGenericClass2' type=kotlinx.coroutines.flow.StateFlow.MyGenericClass2> origin=null + ARG : GET_VAR ': .MyGenericClass2.MyGenericClass2> declared in .MyGenericClass2.' type=.MyGenericClass2.MyGenericClass2> origin=null + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:genericStateFlowValue visibility:public modality:FINAL [val] + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:FINAL returnType:T of .MyGenericClass2 + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyGenericClass2.MyGenericClass2> + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:genericStateFlowValue visibility:public modality:FINAL [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_5 type:kotlinx.coroutines.flow.StateFlow.MyGenericClass2> [val] + CALL 'public final fun (): kotlinx.coroutines.flow.StateFlow.MyGenericClass2> declared in .MyGenericClass2' type=kotlinx.coroutines.flow.StateFlow.MyGenericClass2> origin=null + ARG : GET_VAR ': .MyGenericClass2.MyGenericClass2> declared in .MyGenericClass2.' type=.MyGenericClass2.MyGenericClass2> origin=null + RETURN type=kotlin.Nothing from='public final fun (): T of .MyGenericClass2 declared in .MyGenericClass2' + CALL 'public abstract fun (): T of kotlinx.coroutines.flow.StateFlow declared in kotlinx.coroutines.flow.StateFlow' type=T of .MyGenericClass2 origin=null + ARG : GET_VAR 'val tmp_5: kotlinx.coroutines.flow.StateFlow.MyGenericClass2> declared in .MyGenericClass2.' type=kotlinx.coroutines.flow.StateFlow.MyGenericClass2> origin=null + CLASS INTERFACE name:MyInterface28 modality:ABSTRACT visibility:public superTypes:[kotlin.Any] + thisReceiver: VALUE_PARAMETER INSTANCE_RECEIVER kind:DispatchReceiver name: type:.MyInterface28 + FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN returnType:kotlin.Boolean [fake_override,operator] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + VALUE_PARAMETER kind:Regular name:other index:1 type:kotlin.Any? + overridden: + public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Any + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN returnType:kotlin.Int [fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + overridden: + public open fun hashCode (): kotlin.Int declared in kotlin.Any + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN returnType:kotlin.String [fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + overridden: + public open fun toString (): kotlin.String declared in kotlin.Any + PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:interfaceFlowValueNative visibility:public modality:OPEN [val] + annotations: + ObjCName(name = "interfaceFlowValue", swiftName = , exact = ) + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name: visibility:public modality:OPEN returnType:kotlinx.coroutines.flow.Flow + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyInterface28 + correspondingProperty: PROPERTY GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:interfaceFlowValueNative visibility:public modality:OPEN [val] + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_6 type:kotlinx.coroutines.CoroutineScope? [val] + CONST Null type=kotlinx.coroutines.CoroutineScope? value=null + RETURN type=kotlin.Nothing from='public open fun (): kotlinx.coroutines.flow.Flow declared in .MyInterface28' + CALL 'public abstract fun (): kotlinx.coroutines.flow.Flow declared in .MyInterface28' type=kotlinx.coroutines.flow.Flow origin=null + ARG : GET_VAR ': .MyInterface28 declared in .MyInterface28.' type=.MyInterface28 origin=null + PROPERTY name:interfaceFlowValue visibility:public modality:ABSTRACT [val] + annotations: + NativeCoroutines + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:ABSTRACT returnType:kotlinx.coroutines.flow.Flow + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyInterface28 + correspondingProperty: PROPERTY name:interfaceFlowValue visibility:public modality:ABSTRACT [val] + FUN name:box visibility:public modality:FINAL returnType:kotlin.String + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun box (): kotlin.String declared in ' + CALL 'public final fun runBoxTest (action: @[ExtensionFunctionType] kotlin.coroutines.SuspendFunction1): kotlin.String declared in com.rickclephas.kmp.nativecoroutines' type=kotlin.String origin=null + ARG action: FUN_EXPR type=@[ExtensionFunctionType] kotlin.coroutines.SuspendFunction1 origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL returnType:kotlin.Unit [suspend] + VALUE_PARAMETER kind:ExtensionReceiver name:$this$runBoxTest index:0 type:com.rickclephas.kmp.nativecoroutines.BoxTest + BLOCK_BODY + CALL 'public final fun collect (flow: kotlinx.coroutines.flow.Flow, maxValues: kotlin.Int?): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG flow: CALL 'public final fun (): kotlinx.coroutines.flow.Flow declared in ' type=kotlinx.coroutines.flow.Flow origin=GET_PROPERTY + CALL 'public final fun collect (flow: kotlinx.coroutines.flow.Flow, maxValues: kotlin.Int?): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG flow: CALL 'public final fun (): kotlinx.coroutines.flow.SharedFlow declared in ' type=kotlinx.coroutines.flow.SharedFlow origin=GET_PROPERTY + ARG maxValues: CONST Int type=kotlin.Int value=1 + CALL 'public final fun values (values: kotlin.collections.List): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG values: CALL 'public final fun (): kotlin.collections.List declared in ' type=kotlin.collections.List origin=GET_PROPERTY + CALL 'public final fun collect (flow: kotlinx.coroutines.flow.Flow, maxValues: kotlin.Int?): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG flow: CALL 'public final fun (): kotlinx.coroutines.flow.StateFlow declared in ' type=kotlinx.coroutines.flow.StateFlow origin=GET_PROPERTY + ARG maxValues: CONST Int type=kotlin.Int value=1 + CALL 'public final fun value (value: T of com.rickclephas.kmp.nativecoroutines.BoxTest.value): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG value: CALL 'public final fun (): kotlin.String declared in ' type=kotlin.String origin=GET_PROPERTY + CALL 'public final fun collect (flow: kotlinx.coroutines.flow.Flow, maxValues: kotlin.Int?): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG flow: CALL 'public final fun (): kotlinx.coroutines.flow.MutableStateFlow declared in ' type=kotlinx.coroutines.flow.MutableStateFlow origin=GET_PROPERTY + ARG maxValues: CONST Int type=kotlin.Int value=1 + CALL 'public final fun value (value: T of com.rickclephas.kmp.nativecoroutines.BoxTest.value): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG value: CALL 'public final fun (): kotlin.String declared in ' type=kotlin.String origin=GET_PROPERTY + CALL 'public final fun collect (flow: kotlinx.coroutines.flow.Flow, maxValues: kotlin.Int?): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String? + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG flow: CALL 'public final fun (): kotlinx.coroutines.flow.Flow declared in ' type=kotlinx.coroutines.flow.Flow origin=GET_PROPERTY + CALL 'public final fun collect (flow: kotlinx.coroutines.flow.Flow, maxValues: kotlin.Int?): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String? + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG flow: CALL 'public final fun (): kotlinx.coroutines.flow.SharedFlow declared in ' type=kotlinx.coroutines.flow.SharedFlow origin=GET_PROPERTY + ARG maxValues: CONST Int type=kotlin.Int value=1 + CALL 'public final fun values (values: kotlin.collections.List): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String? + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG values: CALL 'public final fun (): kotlin.collections.List declared in ' type=kotlin.collections.List origin=GET_PROPERTY + CALL 'public final fun collect (flow: kotlinx.coroutines.flow.Flow, maxValues: kotlin.Int?): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String? + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG flow: CALL 'public final fun (): kotlinx.coroutines.flow.StateFlow declared in ' type=kotlinx.coroutines.flow.StateFlow origin=GET_PROPERTY + ARG maxValues: CONST Int type=kotlin.Int value=1 + CALL 'public final fun value (value: T of com.rickclephas.kmp.nativecoroutines.BoxTest.value): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String? + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG value: CALL 'public final fun (): kotlin.String? declared in ' type=kotlin.String? origin=GET_PROPERTY + CALL 'public final fun value (value: T of com.rickclephas.kmp.nativecoroutines.BoxTest.value): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlinx.coroutines.flow.Flow? + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG value: CALL 'public final fun (): kotlinx.coroutines.flow.Flow? declared in ' type=kotlinx.coroutines.flow.Flow? origin=GET_PROPERTY + CALL 'public final fun value (value: T of com.rickclephas.kmp.nativecoroutines.BoxTest.value): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlinx.coroutines.flow.SharedFlow? + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG value: CALL 'public final fun (): kotlinx.coroutines.flow.SharedFlow? declared in ' type=kotlinx.coroutines.flow.SharedFlow? origin=GET_PROPERTY + CALL 'public final fun value (value: T of com.rickclephas.kmp.nativecoroutines.BoxTest.value): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.collections.List? + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG value: CALL 'public final fun (): kotlin.collections.List? declared in ' type=kotlin.collections.List? origin=GET_PROPERTY + CALL 'public final fun value (value: T of com.rickclephas.kmp.nativecoroutines.BoxTest.value): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlinx.coroutines.flow.StateFlow? + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG value: CALL 'public final fun (): kotlinx.coroutines.flow.StateFlow? declared in ' type=kotlinx.coroutines.flow.StateFlow? origin=GET_PROPERTY + CALL 'public final fun value (value: T of com.rickclephas.kmp.nativecoroutines.BoxTest.value): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String? + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG value: CALL 'public final fun (): kotlin.String? declared in ' type=kotlin.String? origin=GET_PROPERTY + CALL 'public final fun value (value: T of com.rickclephas.kmp.nativecoroutines.BoxTest.value): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlinx.coroutines.flow.Flow? + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG value: CALL 'public final fun (): kotlinx.coroutines.flow.Flow? declared in ' type=kotlinx.coroutines.flow.Flow? origin=GET_PROPERTY + CALL 'public final fun value (value: T of com.rickclephas.kmp.nativecoroutines.BoxTest.value): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlinx.coroutines.flow.SharedFlow? + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG value: CALL 'public final fun (): kotlinx.coroutines.flow.SharedFlow? declared in ' type=kotlinx.coroutines.flow.SharedFlow? origin=GET_PROPERTY + CALL 'public final fun value (value: T of com.rickclephas.kmp.nativecoroutines.BoxTest.value): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.collections.List? + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG value: CALL 'public final fun (): kotlin.collections.List? declared in ' type=kotlin.collections.List? origin=GET_PROPERTY + CALL 'public final fun value (value: T of com.rickclephas.kmp.nativecoroutines.BoxTest.value): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlinx.coroutines.flow.StateFlow? + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG value: CALL 'public final fun (): kotlinx.coroutines.flow.StateFlow? declared in ' type=kotlinx.coroutines.flow.StateFlow? origin=GET_PROPERTY + CALL 'public final fun value (value: T of com.rickclephas.kmp.nativecoroutines.BoxTest.value): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String? + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG value: CALL 'public final fun (): kotlin.String? declared in ' type=kotlin.String? origin=GET_PROPERTY + CALL 'public final fun collect (flow: kotlinx.coroutines.flow.Flow, maxValues: kotlin.Int?): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG flow: CALL 'public final fun (: .MyGenericClass1.>): kotlinx.coroutines.flow.Flow.> declared in ' type=kotlinx.coroutines.flow.Flow origin=GET_PROPERTY + TYPE_ARG T: kotlin.String + ARG : CONSTRUCTOR_CALL 'public constructor (value: T of .MyGenericClass1) declared in .MyGenericClass1' type=.MyGenericClass1 origin=null + TYPE_ARG (of class) T: kotlin.String + ARG value: CONST String type=kotlin.String value="OK14" + CALL 'public final fun collect (flow: kotlinx.coroutines.flow.Flow, maxValues: kotlin.Int?): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG flow: CALL 'public final fun (: .MyGenericClass1.>): kotlinx.coroutines.flow.SharedFlow.> declared in ' type=kotlinx.coroutines.flow.SharedFlow origin=GET_PROPERTY + TYPE_ARG T: kotlin.String + ARG : CONSTRUCTOR_CALL 'public constructor (value: T of .MyGenericClass1) declared in .MyGenericClass1' type=.MyGenericClass1 origin=null + TYPE_ARG (of class) T: kotlin.String + ARG value: CONST String type=kotlin.String value="OK15" + ARG maxValues: CONST Int type=kotlin.Int value=1 + CALL 'public final fun values (values: kotlin.collections.List): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG values: CALL 'public final fun (: .MyGenericClass1.>): kotlin.collections.List.> declared in ' type=kotlin.collections.List origin=GET_PROPERTY + TYPE_ARG T: kotlin.String + ARG : CONSTRUCTOR_CALL 'public constructor (value: T of .MyGenericClass1) declared in .MyGenericClass1' type=.MyGenericClass1 origin=null + TYPE_ARG (of class) T: kotlin.String + ARG value: CONST String type=kotlin.String value="OK15" + CALL 'public final fun collect (flow: kotlinx.coroutines.flow.Flow, maxValues: kotlin.Int?): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG flow: CALL 'public final fun (: .MyGenericClass1.>): kotlinx.coroutines.flow.StateFlow.> declared in ' type=kotlinx.coroutines.flow.StateFlow origin=GET_PROPERTY + TYPE_ARG T: kotlin.String + ARG : CONSTRUCTOR_CALL 'public constructor (value: T of .MyGenericClass1) declared in .MyGenericClass1' type=.MyGenericClass1 origin=null + TYPE_ARG (of class) T: kotlin.String + ARG value: CONST String type=kotlin.String value="OK16" + ARG maxValues: CONST Int type=kotlin.Int value=1 + CALL 'public final fun value (value: T of com.rickclephas.kmp.nativecoroutines.BoxTest.value): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG value: CALL 'public final fun (: .MyGenericClass1.>): T of . declared in ' type=kotlin.String origin=GET_PROPERTY + TYPE_ARG T: kotlin.String + ARG : CONSTRUCTOR_CALL 'public constructor (value: T of .MyGenericClass1) declared in .MyGenericClass1' type=.MyGenericClass1 origin=null + TYPE_ARG (of class) T: kotlin.String + ARG value: CONST String type=kotlin.String value="OK16" + CALL 'public final fun collect (flow: kotlinx.coroutines.flow.Flow, maxValues: kotlin.Int?): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG flow: CALL 'public final fun (): kotlinx.coroutines.flow.Flow.MyGenericClass2> declared in .MyGenericClass2' type=kotlinx.coroutines.flow.Flow origin=GET_PROPERTY + ARG : CONSTRUCTOR_CALL 'public constructor (value: T of .MyGenericClass2) declared in .MyGenericClass2' type=.MyGenericClass2 origin=null + TYPE_ARG (of class) T: kotlin.String + ARG value: CONST String type=kotlin.String value="OK17" + CALL 'public final fun collect (flow: kotlinx.coroutines.flow.Flow, maxValues: kotlin.Int?): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG flow: CALL 'public final fun (): kotlinx.coroutines.flow.SharedFlow.MyGenericClass2> declared in .MyGenericClass2' type=kotlinx.coroutines.flow.SharedFlow origin=GET_PROPERTY + ARG : CONSTRUCTOR_CALL 'public constructor (value: T of .MyGenericClass2) declared in .MyGenericClass2' type=.MyGenericClass2 origin=null + TYPE_ARG (of class) T: kotlin.String + ARG value: CONST String type=kotlin.String value="OK18" + ARG maxValues: CONST Int type=kotlin.Int value=1 + CALL 'public final fun values (values: kotlin.collections.List): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG values: CALL 'public final fun (): kotlin.collections.List.MyGenericClass2> declared in .MyGenericClass2' type=kotlin.collections.List origin=GET_PROPERTY + ARG : CONSTRUCTOR_CALL 'public constructor (value: T of .MyGenericClass2) declared in .MyGenericClass2' type=.MyGenericClass2 origin=null + TYPE_ARG (of class) T: kotlin.String + ARG value: CONST String type=kotlin.String value="OK18" + CALL 'public final fun collect (flow: kotlinx.coroutines.flow.Flow, maxValues: kotlin.Int?): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG flow: CALL 'public final fun (): kotlinx.coroutines.flow.StateFlow.MyGenericClass2> declared in .MyGenericClass2' type=kotlinx.coroutines.flow.StateFlow origin=GET_PROPERTY + ARG : CONSTRUCTOR_CALL 'public constructor (value: T of .MyGenericClass2) declared in .MyGenericClass2' type=.MyGenericClass2 origin=null + TYPE_ARG (of class) T: kotlin.String + ARG value: CONST String type=kotlin.String value="OK19" + ARG maxValues: CONST Int type=kotlin.Int value=1 + CALL 'public final fun value (value: T of com.rickclephas.kmp.nativecoroutines.BoxTest.value): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG value: CALL 'public final fun (): T of .MyGenericClass2 declared in .MyGenericClass2' type=kotlin.String origin=GET_PROPERTY + ARG : CONSTRUCTOR_CALL 'public constructor (value: T of .MyGenericClass2) declared in .MyGenericClass2' type=.MyGenericClass2 origin=null + TYPE_ARG (of class) T: kotlin.String + ARG value: CONST String type=kotlin.String value="OK19" + CALL 'public final fun collect (flow: kotlinx.coroutines.flow.Flow, maxValues: kotlin.Int?): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG flow: CALL 'public final fun (: kotlin.String): kotlinx.coroutines.flow.Flow declared in ' type=kotlinx.coroutines.flow.Flow origin=GET_PROPERTY + ARG : CONST String type=kotlin.String value="OK20" + CALL 'public final fun collect (flow: kotlinx.coroutines.flow.Flow, maxValues: kotlin.Int?): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG flow: CALL 'public final fun (: kotlin.String): kotlinx.coroutines.flow.SharedFlow declared in ' type=kotlinx.coroutines.flow.SharedFlow origin=GET_PROPERTY + ARG : CONST String type=kotlin.String value="OK21" + ARG maxValues: CONST Int type=kotlin.Int value=1 + CALL 'public final fun values (values: kotlin.collections.List): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG values: CALL 'public final fun (: kotlin.String): kotlin.collections.List declared in ' type=kotlin.collections.List origin=GET_PROPERTY + ARG : CONST String type=kotlin.String value="OK21" + CALL 'public final fun collect (flow: kotlinx.coroutines.flow.Flow, maxValues: kotlin.Int?): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG flow: CALL 'public final fun (: kotlin.String): kotlinx.coroutines.flow.StateFlow declared in ' type=kotlinx.coroutines.flow.StateFlow origin=GET_PROPERTY + ARG : CONST String type=kotlin.String value="OK22" + ARG maxValues: CONST Int type=kotlin.Int value=1 + CALL 'public final fun value (value: T of com.rickclephas.kmp.nativecoroutines.BoxTest.value): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG value: CALL 'public final fun (: kotlin.String): kotlin.String declared in ' type=kotlin.String origin=GET_PROPERTY + ARG : CONST String type=kotlin.String value="OK22" + CALL 'public final fun value (value: T of com.rickclephas.kmp.nativecoroutines.BoxTest.value): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG value: CALL 'public final fun (): kotlin.String declared in ' type=kotlin.String origin=GET_PROPERTY + CALL 'public final fun collect (flow: kotlinx.coroutines.flow.Flow, maxValues: kotlin.Int?): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG flow: CALL 'public final fun (): kotlinx.coroutines.flow.StateFlow declared in ' type=kotlinx.coroutines.flow.StateFlow origin=GET_PROPERTY + ARG maxValues: CONST Int type=kotlin.Int value=1 + CALL 'public final fun value (value: T of com.rickclephas.kmp.nativecoroutines.BoxTest.value): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG value: CALL 'public final fun (): kotlin.String declared in ' type=kotlin.String origin=GET_PROPERTY + CALL 'public final fun collect (flow: kotlinx.coroutines.flow.Flow, maxValues: kotlin.Int?): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG flow: CALL 'public final fun (): kotlinx.coroutines.flow.MutableStateFlow declared in ' type=kotlinx.coroutines.flow.MutableStateFlow origin=GET_PROPERTY + ARG maxValues: CONST Int type=kotlin.Int value=1 + CALL 'public final fun collect (flow: kotlinx.coroutines.flow.Flow, maxValues: kotlin.Int?): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG flow: CALL 'public final fun (): kotlinx.coroutines.flow.Flow declared in ' type=kotlinx.coroutines.flow.Flow origin=GET_PROPERTY + CALL 'public final fun value (value: T of com.rickclephas.kmp.nativecoroutines.BoxTest.value): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG value: CALL 'public final fun (): kotlin.String declared in ' type=kotlin.String origin=GET_PROPERTY + CALL 'public final fun collect (flow: kotlinx.coroutines.flow.Flow, maxValues: kotlin.Int?): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG flow: CALL 'public final fun (): kotlinx.coroutines.flow.StateFlow declared in ' type=kotlinx.coroutines.flow.StateFlow origin=GET_PROPERTY + ARG maxValues: CONST Int type=kotlin.Int value=1 + CALL 'public final fun value (value: T of com.rickclephas.kmp.nativecoroutines.BoxTest.value): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String? + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG value: CALL 'public final fun (): kotlin.String? declared in ' type=kotlin.String? origin=GET_PROPERTY + CALL 'public final fun collect (flow: kotlinx.coroutines.flow.Flow, maxValues: kotlin.Int?): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG flow: CALL 'public final fun CHECK_NOT_NULL (arg0: T0 of kotlin.internal.ir.CHECK_NOT_NULL?): {T0 of kotlin.internal.ir.CHECK_NOT_NULL & Any} declared in kotlin.internal.ir' type=kotlinx.coroutines.flow.MutableStateFlow origin=EXCLEXCL + TYPE_ARG T0: kotlinx.coroutines.flow.MutableStateFlow + ARG arg0: CALL 'public final fun (): kotlinx.coroutines.flow.MutableStateFlow? declared in ' type=kotlinx.coroutines.flow.MutableStateFlow? origin=GET_PROPERTY + ARG maxValues: CONST Int type=kotlin.Int value=1 + CALL 'public final fun collect (flow: kotlinx.coroutines.flow.Flow, maxValues: kotlin.Int?): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG flow: CALL 'public open fun (): kotlinx.coroutines.flow.Flow declared in .MyClass28' type=kotlinx.coroutines.flow.Flow origin=GET_PROPERTY + ARG : CONSTRUCTOR_CALL 'public constructor () declared in .MyClass28' type=.MyClass28 origin=null + CALL 'public final fun collect (flow: kotlinx.coroutines.flow.Flow, maxValues: kotlin.Int?): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String? + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG flow: CALL 'public final fun (): .MyFlow29 declared in ' type=.MyFlow29 origin=GET_PROPERTY + PROPERTY name:customFlowValue visibility:public modality:FINAL [val] + annotations: + NativeCoroutines + FUN name: visibility:public modality:FINAL returnType:.MyFlow29 + correspondingProperty: PROPERTY name:customFlowValue visibility:public modality:FINAL [val] + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): .MyFlow29 declared in ' + CONSTRUCTOR_CALL 'public constructor (value1: T1 of .MyFlow29, value2: T2 of .MyFlow29) declared in .MyFlow29' type=.MyFlow29 origin=null + TYPE_ARG (of class) T1: kotlin.Int + TYPE_ARG (of class) T2: kotlin.String + ARG value1: CONST Int type=kotlin.Int value=29 + ARG value2: CONST String type=kotlin.String value="OK29" + PROPERTY name:extensionFlow visibility:public modality:FINAL [val] + annotations: + NativeCoroutines + FUN name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.Flow + VALUE_PARAMETER kind:ExtensionReceiver name: index:0 type:kotlin.String + correspondingProperty: PROPERTY name:extensionFlow visibility:public modality:FINAL [val] + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (: kotlin.String): kotlinx.coroutines.flow.Flow declared in ' + CALL 'public final fun flowOf (value: T of kotlinx.coroutines.flow.flowOf): kotlinx.coroutines.flow.Flow declared in kotlinx.coroutines.flow' type=kotlinx.coroutines.flow.Flow origin=null + TYPE_ARG T: kotlin.String + ARG value: GET_VAR ': kotlin.String declared in .' type=kotlin.String origin=null + PROPERTY name:extensionSharedFlow visibility:public modality:FINAL [val] + annotations: + NativeCoroutines + FUN name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.SharedFlow + VALUE_PARAMETER kind:ExtensionReceiver name: index:0 type:kotlin.String + correspondingProperty: PROPERTY name:extensionSharedFlow visibility:public modality:FINAL [val] + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (: kotlin.String): kotlinx.coroutines.flow.SharedFlow declared in ' + CALL 'public final fun apply (: T of kotlin.apply, block: @[ExtensionFunctionType] kotlin.Function1): T of kotlin.apply declared in kotlin' type=kotlinx.coroutines.flow.MutableSharedFlow origin=null + TYPE_ARG T: kotlinx.coroutines.flow.MutableSharedFlow + ARG : CALL 'public final fun MutableSharedFlow (replay: kotlin.Int, extraBufferCapacity: kotlin.Int, onBufferOverflow: kotlinx.coroutines.channels.BufferOverflow): kotlinx.coroutines.flow.MutableSharedFlow declared in kotlinx.coroutines.flow' type=kotlinx.coroutines.flow.MutableSharedFlow origin=null + TYPE_ARG T: kotlin.String + ARG replay: CONST Int type=kotlin.Int value=1 + ARG block: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1, kotlin.Unit> origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL returnType:kotlin.Unit + VALUE_PARAMETER kind:ExtensionReceiver name:$this$apply index:0 type:kotlinx.coroutines.flow.MutableSharedFlow + BLOCK_BODY + TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit + CALL 'public abstract fun tryEmit (value: T of kotlinx.coroutines.flow.MutableSharedFlow): kotlin.Boolean declared in kotlinx.coroutines.flow.MutableSharedFlow' type=kotlin.Boolean origin=null + ARG : GET_VAR '$this$apply: kotlinx.coroutines.flow.MutableSharedFlow declared in ..' type=kotlinx.coroutines.flow.MutableSharedFlow origin=IMPLICIT_ARGUMENT + ARG value: GET_VAR ': kotlin.String declared in .' type=kotlin.String origin=null + PROPERTY name:extensionStateFlow visibility:public modality:FINAL [val] + annotations: + NativeCoroutines + FUN name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.StateFlow + VALUE_PARAMETER kind:ExtensionReceiver name: index:0 type:kotlin.String + correspondingProperty: PROPERTY name:extensionStateFlow visibility:public modality:FINAL [val] + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (: kotlin.String): kotlinx.coroutines.flow.StateFlow declared in ' + CALL 'public final fun MutableStateFlow (value: T of kotlinx.coroutines.flow.MutableStateFlow): kotlinx.coroutines.flow.MutableStateFlow declared in kotlinx.coroutines.flow' type=kotlinx.coroutines.flow.MutableStateFlow origin=null + TYPE_ARG T: kotlin.String + ARG value: GET_VAR ': kotlin.String declared in .' type=kotlin.String origin=null + PROPERTY name:genericFlow visibility:public modality:FINAL [val] + annotations: + NativeCoroutines + FUN name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.Flow.> + TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false + VALUE_PARAMETER kind:ExtensionReceiver name: index:0 type:.MyGenericClass1.> + correspondingProperty: PROPERTY name:genericFlow visibility:public modality:FINAL [val] + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (: .MyGenericClass1.>): kotlinx.coroutines.flow.Flow.> declared in ' + CALL 'public final fun flowOf (value: T of kotlinx.coroutines.flow.flowOf): kotlinx.coroutines.flow.Flow declared in kotlinx.coroutines.flow' type=kotlinx.coroutines.flow.Flow.> origin=null + TYPE_ARG T: T of . + ARG value: CALL 'public final fun (): T of .MyGenericClass1 declared in .MyGenericClass1' type=T of . origin=GET_PROPERTY + ARG : GET_VAR ': .MyGenericClass1.> declared in .' type=.MyGenericClass1.> origin=IMPLICIT_ARGUMENT + PROPERTY name:genericSharedFlow visibility:public modality:FINAL [val] + annotations: + NativeCoroutines + FUN name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.SharedFlow.> + TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false + VALUE_PARAMETER kind:ExtensionReceiver name: index:0 type:.MyGenericClass1.> + correspondingProperty: PROPERTY name:genericSharedFlow visibility:public modality:FINAL [val] + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (: .MyGenericClass1.>): kotlinx.coroutines.flow.SharedFlow.> declared in ' + CALL 'public final fun apply (: T of kotlin.apply, block: @[ExtensionFunctionType] kotlin.Function1): T of kotlin.apply declared in kotlin' type=kotlinx.coroutines.flow.MutableSharedFlow.> origin=null + TYPE_ARG T: kotlinx.coroutines.flow.MutableSharedFlow.> + ARG : CALL 'public final fun MutableSharedFlow (replay: kotlin.Int, extraBufferCapacity: kotlin.Int, onBufferOverflow: kotlinx.coroutines.channels.BufferOverflow): kotlinx.coroutines.flow.MutableSharedFlow declared in kotlinx.coroutines.flow' type=kotlinx.coroutines.flow.MutableSharedFlow.> origin=null + TYPE_ARG T: T of . + ARG replay: CONST Int type=kotlin.Int value=1 + ARG block: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1.>, kotlin.Unit> origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL returnType:kotlin.Unit + VALUE_PARAMETER kind:ExtensionReceiver name:$this$apply index:0 type:kotlinx.coroutines.flow.MutableSharedFlow.> + BLOCK_BODY + TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit + CALL 'public abstract fun tryEmit (value: T of kotlinx.coroutines.flow.MutableSharedFlow): kotlin.Boolean declared in kotlinx.coroutines.flow.MutableSharedFlow' type=kotlin.Boolean origin=null + ARG : GET_VAR '$this$apply: kotlinx.coroutines.flow.MutableSharedFlow.> declared in ..' type=kotlinx.coroutines.flow.MutableSharedFlow.> origin=IMPLICIT_ARGUMENT + ARG value: CALL 'public final fun (): T of .MyGenericClass1 declared in .MyGenericClass1' type=T of . origin=GET_PROPERTY + ARG : GET_VAR ': .MyGenericClass1.> declared in .' type=.MyGenericClass1.> origin=IMPLICIT_ARGUMENT + PROPERTY name:genericStateFlow visibility:public modality:FINAL [val] + annotations: + NativeCoroutines + FUN name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.StateFlow.> + TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false + VALUE_PARAMETER kind:ExtensionReceiver name: index:0 type:.MyGenericClass1.> + correspondingProperty: PROPERTY name:genericStateFlow visibility:public modality:FINAL [val] + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (: .MyGenericClass1.>): kotlinx.coroutines.flow.StateFlow.> declared in ' + CALL 'public final fun MutableStateFlow (value: T of kotlinx.coroutines.flow.MutableStateFlow): kotlinx.coroutines.flow.MutableStateFlow declared in kotlinx.coroutines.flow' type=kotlinx.coroutines.flow.MutableStateFlow.> origin=null + TYPE_ARG T: T of . + ARG value: CALL 'public final fun (): T of .MyGenericClass1 declared in .MyGenericClass1' type=T of . origin=GET_PROPERTY + ARG : GET_VAR ': .MyGenericClass1.> declared in .' type=.MyGenericClass1.> origin=IMPLICIT_ARGUMENT + PROPERTY name:nullableFlow visibility:public modality:FINAL [val] + annotations: + NativeCoroutines + FUN name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.Flow? + correspondingProperty: PROPERTY name:nullableFlow visibility:public modality:FINAL [val] + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.Flow? declared in ' + CONST Null type=kotlin.Nothing? value=null + PROPERTY name:nullableFlowAndValue visibility:public modality:FINAL [val] + annotations: + NativeCoroutines + FUN name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.Flow? + correspondingProperty: PROPERTY name:nullableFlowAndValue visibility:public modality:FINAL [val] + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.Flow? declared in ' + CONST Null type=kotlin.Nothing? value=null + PROPERTY name:nullableSharedFlow visibility:public modality:FINAL [val] + annotations: + NativeCoroutines + FUN name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.SharedFlow? + correspondingProperty: PROPERTY name:nullableSharedFlow visibility:public modality:FINAL [val] + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.SharedFlow? declared in ' + CONST Null type=kotlin.Nothing? value=null + PROPERTY name:nullableSharedFlowAndValue visibility:public modality:FINAL [val] + annotations: + NativeCoroutines + FUN name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.SharedFlow? + correspondingProperty: PROPERTY name:nullableSharedFlowAndValue visibility:public modality:FINAL [val] + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.SharedFlow? declared in ' + CONST Null type=kotlin.Nothing? value=null + PROPERTY name:nullableStateFlowAndValue visibility:public modality:FINAL [val] + annotations: + NativeCoroutines + FUN name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.StateFlow? + correspondingProperty: PROPERTY name:nullableStateFlowAndValue visibility:public modality:FINAL [val] + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.StateFlow? declared in ' + CONST Null type=kotlin.Nothing? value=null + PROPERTY name:nullableStateFlowProperty visibility:public modality:FINAL [val] + annotations: + NativeCoroutines + FUN name: visibility:public modality:FINAL returnType:kotlinx.coroutines.flow.StateFlow? + correspondingProperty: PROPERTY name:nullableStateFlowProperty visibility:public modality:FINAL [val] + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): kotlinx.coroutines.flow.StateFlow? declared in ' + CONST Null type=kotlin.Nothing? value=null diff --git a/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/properties.fir.kt.txt b/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/properties.fir.kt.txt new file mode 100644 index 00000000..76bc52f8 --- /dev/null +++ b/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/properties.fir.kt.txt @@ -0,0 +1,660 @@ +// FILE: __GENERATED__CALLABLES__.kt + +var topLevelMutableStateFlowValue: String + get(): String { + val tmp_0: MutableStateFlow = () + return tmp_0.() + } + set(value: String) { + return ().( = value) + } + +@ObjCName(name = "mutableStateProperty") +var mutableStatePropertyValue: String + get(): String { + val tmp_1: MutableStateFlow = () + return tmp_1.() + } + set(value: String) { + return ().( = value) + } + +@ObjCName(name = "customFlowValue") +val customFlowValueNative: MyFlow29 + get(): MyFlow29 { + val tmp_2: CoroutineScope? = null + return () + } + +@ObjCName(name = "extensionFlow") +val String.extensionFlowNative: Flow + get(): Flow { + val tmp_3: CoroutineScope? = null + return (/* = */) + } + +@ObjCName(name = "extensionSharedFlow") +val String.extensionSharedFlowNative: SharedFlow + get(): SharedFlow { + val tmp_4: CoroutineScope? = null + return (/* = */) + } + +val String.extensionSharedFlowReplayCache: List + get(): List { + val tmp_5: SharedFlow = (/* = */) + return tmp_5.() + } + +@ObjCName(name = "extensionStateFlow") +val String.extensionStateFlowNative: StateFlow + get(): StateFlow { + val tmp_6: CoroutineScope? = null + return (/* = */) + } + +val String.extensionStateFlowValue: String + get(): String { + val tmp_7: StateFlow = (/* = */) + return tmp_7.() + } + +@ObjCName(name = "genericFlow") +val MyGenericClass1.genericFlowNative: Flow + get(): Flow { + val tmp_8: CoroutineScope? = null + return (/* = */) + } + +@ObjCName(name = "genericSharedFlow") +val MyGenericClass1.genericSharedFlowNative: SharedFlow + get(): SharedFlow { + val tmp_9: CoroutineScope? = null + return (/* = */) + } + +val MyGenericClass1.genericSharedFlowReplayCache: List + get(): List { + val tmp_10: SharedFlow = (/* = */) + return tmp_10.() + } + +@ObjCName(name = "genericStateFlow") +val MyGenericClass1.genericStateFlowNative: StateFlow + get(): StateFlow { + val tmp_11: CoroutineScope? = null + return (/* = */) + } + +val MyGenericClass1.genericStateFlowValue: T + get(): T { + val tmp_12: StateFlow = (/* = */) + return tmp_12.() + } + +val mutableNullableStatePropertyFlow: MutableStateFlow? + get(): MutableStateFlow? { + val tmp_13: CoroutineScope? = null + return () + } + +@ObjCName(name = "mutableNullableStateProperty") +val mutableNullableStatePropertyValue: String? + get(): String? { + val tmp_14: MutableStateFlow? = () + return when { + EQEQ(arg0 = tmp_14, arg1 = null) -> null + else -> tmp_14.() + } + } + +val mutableStatePropertyFlow: MutableStateFlow + get(): MutableStateFlow { + val tmp_15: CoroutineScope? = null + return () + } + +@ObjCName(name = "nullableFlowAndValue") +val nullableFlowAndValueNative: Flow? + get(): Flow? { + val tmp_16: CoroutineScope? = null + return () + } + +@ObjCName(name = "nullableFlow") +val nullableFlowNative: Flow? + get(): Flow? { + val tmp_17: CoroutineScope? = null + return () + } + +@ObjCName(name = "nullableFlowValue") +val nullableFlowValueNative: Flow + get(): Flow { + val tmp_18: CoroutineScope? = null + return () + } + +@ObjCName(name = "nullableSharedFlowAndValue") +val nullableSharedFlowAndValueNative: SharedFlow? + get(): SharedFlow? { + val tmp_19: CoroutineScope? = null + return () + } + +val nullableSharedFlowAndValueReplayCache: List? + get(): List? { + val tmp_20: SharedFlow? = () + return when { + EQEQ(arg0 = tmp_20, arg1 = null) -> null + else -> tmp_20.() + } + } + +@ObjCName(name = "nullableSharedFlow") +val nullableSharedFlowNative: SharedFlow? + get(): SharedFlow? { + val tmp_21: CoroutineScope? = null + return () + } + +val nullableSharedFlowReplayCache: List? + get(): List? { + val tmp_22: SharedFlow? = () + return when { + EQEQ(arg0 = tmp_22, arg1 = null) -> null + else -> tmp_22.() + } + } + +@ObjCName(name = "nullableSharedFlowValue") +val nullableSharedFlowValueNative: SharedFlow + get(): SharedFlow { + val tmp_23: CoroutineScope? = null + return () + } + +val nullableSharedFlowValueReplayCache: List + get(): List { + val tmp_24: SharedFlow = () + return tmp_24.() + } + +@ObjCName(name = "nullableStateFlowAndValue") +val nullableStateFlowAndValueNative: StateFlow? + get(): StateFlow? { + val tmp_25: CoroutineScope? = null + return () + } + +val nullableStateFlowAndValueValue: String? + get(): String? { + val tmp_26: StateFlow? = () + return when { + EQEQ(arg0 = tmp_26, arg1 = null) -> null + else -> tmp_26.() + } + } + +@ObjCName(name = "nullableStateFlowProperty") +val nullableStateFlowPropertyNative: StateFlow? + get(): StateFlow? { + val tmp_27: CoroutineScope? = null + return () + } + +val nullableStateFlowPropertyValue: String? + get(): String? { + val tmp_28: StateFlow? = () + return when { + EQEQ(arg0 = tmp_28, arg1 = null) -> null + else -> tmp_28.() + } + } + +@ObjCName(name = "nullableStateFlowValue") +val nullableStateFlowValueNative: StateFlow + get(): StateFlow { + val tmp_29: CoroutineScope? = null + return () + } + +val nullableStateFlowValueValue: String? + get(): String? { + val tmp_30: StateFlow = () + return tmp_30.() + } + +@ObjCName(name = "refinedFlow") +@ShouldRefineInSwift +val refinedFlowNative: Flow + get(): Flow { + val tmp_31: CoroutineScope? = null + return () + } + +@ShouldRefineInSwift +val refinedStateFlow: StateFlow + get(): StateFlow { + val tmp_32: CoroutineScope? = null + return () + } + +@ObjCName(name = "refinedState") +@ShouldRefineInSwift +val refinedStateValue: String + get(): String { + val tmp_33: StateFlow = () + return tmp_33.() + } + +val statePropertyFlow: StateFlow + get(): StateFlow { + val tmp_34: CoroutineScope? = null + return () + } + +@ObjCName(name = "stateProperty") +val statePropertyValue: String + get(): String { + val tmp_35: StateFlow = () + return tmp_35.() + } + +@ObjCName(name = "topLevelFlow") +val topLevelFlowNative: Flow + get(): Flow { + val tmp_36: CoroutineScope? = null + return () + } + +@ObjCName(name = "topLevelMutableStateFlow") +val topLevelMutableStateFlowNative: MutableStateFlow + get(): MutableStateFlow { + val tmp_37: CoroutineScope? = null + return () + } + +@ObjCName(name = "topLevelSharedFlow") +val topLevelSharedFlowNative: SharedFlow + get(): SharedFlow { + val tmp_38: CoroutineScope? = null + return () + } + +val topLevelSharedFlowReplayCache: List + get(): List { + val tmp_39: SharedFlow = () + return tmp_39.() + } + +@ObjCName(name = "topLevelStateFlow") +val topLevelStateFlowNative: StateFlow + get(): StateFlow { + val tmp_40: CoroutineScope? = null + return () + } + +val topLevelStateFlowValue: String + get(): String { + val tmp_41: StateFlow = () + return tmp_41.() + } + +// FILE: properties.kt + +@NativeCoroutines +val topLevelFlow: Flow + field = flowOf(value = "OK1") + get + +@NativeCoroutines +val topLevelSharedFlow: SharedFlow + field = apply>(/* = MutableSharedFlow(replay = 1), */ block = local fun MutableSharedFlow.() { + $this$apply.tryEmit(value = "OK2") /*~> Unit */ + } +) + get + +@NativeCoroutines +val topLevelStateFlow: StateFlow + field = MutableStateFlow(value = "OK3") + get + +@NativeCoroutines +val topLevelMutableStateFlow: MutableStateFlow + field = MutableStateFlow(value = "OK4") + get + +@NativeCoroutines +val nullableFlowValue: Flow + field = flowOf(value = null) + get + +@NativeCoroutines +val nullableSharedFlowValue: SharedFlow + field = apply>(/* = MutableSharedFlow(replay = 1), */ block = local fun MutableSharedFlow.() { + $this$apply.tryEmit(value = null) /*~> Unit */ + } +) + get + +@NativeCoroutines +val nullableStateFlowValue: StateFlow + field = MutableStateFlow(value = null) + get + +@NativeCoroutinesState +val stateProperty: StateFlow + field = MutableStateFlow(value = "OK23") + get + +@NativeCoroutinesState +val mutableStateProperty: MutableStateFlow + field = MutableStateFlow(value = "OK24") + get + +@NativeCoroutinesRefined +val refinedFlow: Flow + field = flowOf(value = "OK25") + get + +@NativeCoroutinesRefinedState +val refinedState: StateFlow + field = MutableStateFlow(value = "OK26") + get + +@NativeCoroutinesState +val mutableNullableStateProperty: MutableStateFlow? + field = MutableStateFlow(value = "OK27") + get + +class MyClass28 : MyInterface28 { + @NativeCoroutines + override val interfaceFlowValue: Flow + field = flowOf(value = "OK28") + override get + + constructor() /* primary */ { + super/*Any*/() + /* () */ + + } + +} + +class MyFlow29 : Flow { + private /* final field */ val $$delegate_0: Flow = flowOf(value = null) + constructor(value1: T1, value2: T2) /* primary */ { + super/*Any*/() + /* () */ + + } + + override suspend fun collect(collector: FlowCollector) { + .#$$delegate_0.collect(collector = collector) + } + +} + +data class MyGenericClass1 { + val value: T + field = value + get + + constructor(value: T) /* primary */ { + super/*Any*/() + /* () */ + + } + + operator fun component1(): T { + return .#value + } + + fun copy(value: T = .#value): MyGenericClass1 { + return MyGenericClass1(value = value) + } + + override operator fun equals(other: Any?): Boolean { + when { + EQEQEQ(arg0 = , arg1 = other) -> return true + } + when { + other !is MyGenericClass1 -> return false + } + val tmp_0: MyGenericClass1 = other /*as MyGenericClass1 */ + when { + EQEQ(arg0 = .#value, arg1 = tmp_0.#value).not() -> return false + } + return true + } + + override fun hashCode(): Int { + return when { + EQEQ(arg0 = .#value, arg1 = null) -> 0 + else -> .#value.hashCode() + } + } + + override fun toString(): String { + return "MyGenericClass1(" + "value=" + .#value + ")" + } + +} + +class MyGenericClass2 { + private val value: T + field = value + private get + + @NativeCoroutines + val genericFlow: Flow + field = flowOf(value = .()) + get + + @NativeCoroutines + val genericSharedFlow: SharedFlow + field = apply>(/* = MutableSharedFlow(replay = 1), */ block = local fun MutableSharedFlow.() { + $this$apply.tryEmit(value = .()) /*~> Unit */ + } +) + get + + @NativeCoroutines + val genericStateFlow: StateFlow + field = MutableStateFlow(value = .()) + get + + constructor(value: T) /* primary */ { + super/*Any*/() + /* () */ + + } + + @ObjCName(name = "genericFlow") + val genericFlowNative: Flow + get(): Flow { + val tmp_1: CoroutineScope? = null + return .() + } + + @ObjCName(name = "genericSharedFlow") + val genericSharedFlowNative: SharedFlow + get(): SharedFlow { + val tmp_2: CoroutineScope? = null + return .() + } + + val genericSharedFlowReplayCache: List + get(): List { + val tmp_3: SharedFlow = .() + return tmp_3.() + } + + @ObjCName(name = "genericStateFlow") + val genericStateFlowNative: StateFlow + get(): StateFlow { + val tmp_4: CoroutineScope? = null + return .() + } + + val genericStateFlowValue: T + get(): T { + val tmp_5: StateFlow = .() + return tmp_5.() + } + +} + +interface MyInterface28 { + @ObjCName(name = "interfaceFlowValue") + val interfaceFlowValueNative: Flow + get(): Flow { + val tmp_6: CoroutineScope? = null + return .() + } + + @NativeCoroutines + abstract val interfaceFlowValue: Flow + abstract get + +} + +fun box(): String { + return runBoxTest(action = local suspend fun BoxTest.() { + $this$runBoxTest.collect(flow = ()) + $this$runBoxTest.collect(flow = (), maxValues = 1) + $this$runBoxTest.values(values = ()) + $this$runBoxTest.collect(flow = (), maxValues = 1) + $this$runBoxTest.value(value = ()) + $this$runBoxTest.collect(flow = (), maxValues = 1) + $this$runBoxTest.value(value = ()) + $this$runBoxTest.collect(flow = ()) + $this$runBoxTest.collect(flow = (), maxValues = 1) + $this$runBoxTest.values(values = ()) + $this$runBoxTest.collect(flow = (), maxValues = 1) + $this$runBoxTest.value(value = ()) + $this$runBoxTest.value?>(value = ()) + $this$runBoxTest.value?>(value = ()) + $this$runBoxTest.value?>(value = ()) + $this$runBoxTest.value?>(value = ()) + $this$runBoxTest.value(value = ()) + $this$runBoxTest.value?>(value = ()) + $this$runBoxTest.value?>(value = ()) + $this$runBoxTest.value?>(value = ()) + $this$runBoxTest.value?>(value = ()) + $this$runBoxTest.value(value = ()) + $this$runBoxTest.collect(flow = (/* = MyGenericClass1(value = "OK14") */)) + $this$runBoxTest.collect(flow = (/* = MyGenericClass1(value = "OK15") */), maxValues = 1) + $this$runBoxTest.values(values = (/* = MyGenericClass1(value = "OK15") */)) + $this$runBoxTest.collect(flow = (/* = MyGenericClass1(value = "OK16") */), maxValues = 1) + $this$runBoxTest.value(value = (/* = MyGenericClass1(value = "OK16") */)) + $this$runBoxTest.collect(flow = MyGenericClass2(value = "OK17").()) + $this$runBoxTest.collect(flow = MyGenericClass2(value = "OK18").(), maxValues = 1) + $this$runBoxTest.values(values = MyGenericClass2(value = "OK18").()) + $this$runBoxTest.collect(flow = MyGenericClass2(value = "OK19").(), maxValues = 1) + $this$runBoxTest.value(value = MyGenericClass2(value = "OK19").()) + $this$runBoxTest.collect(flow = (/* = "OK20" */)) + $this$runBoxTest.collect(flow = (/* = "OK21" */), maxValues = 1) + $this$runBoxTest.values(values = (/* = "OK21" */)) + $this$runBoxTest.collect(flow = (/* = "OK22" */), maxValues = 1) + $this$runBoxTest.value(value = (/* = "OK22" */)) + $this$runBoxTest.value(value = ()) + $this$runBoxTest.collect(flow = (), maxValues = 1) + $this$runBoxTest.value(value = ()) + $this$runBoxTest.collect(flow = (), maxValues = 1) + $this$runBoxTest.collect(flow = ()) + $this$runBoxTest.value(value = ()) + $this$runBoxTest.collect(flow = (), maxValues = 1) + $this$runBoxTest.value(value = ()) + $this$runBoxTest.collect(flow = CHECK_NOT_NULL>(arg0 = ()), maxValues = 1) + $this$runBoxTest.collect(flow = MyClass28().()) + $this$runBoxTest.collect(flow = ()) + } +) +} + +@NativeCoroutines +val customFlowValue: MyFlow29 + get(): MyFlow29 { + return MyFlow29(value1 = 29, value2 = "OK29") + } + +@NativeCoroutines +val String.extensionFlow: Flow + get(): Flow { + return flowOf(value = ) + } + +@NativeCoroutines +val String.extensionSharedFlow: SharedFlow + get(): SharedFlow { + return apply>(/* = MutableSharedFlow(replay = 1), */ block = local fun MutableSharedFlow.() { + $this$apply.tryEmit(value = ) /*~> Unit */ + } +) + } + +@NativeCoroutines +val String.extensionStateFlow: StateFlow + get(): StateFlow { + return MutableStateFlow(value = ) + } + +@NativeCoroutines +val MyGenericClass1.genericFlow: Flow + get(): Flow { + return flowOf(value = .()) + } + +@NativeCoroutines +val MyGenericClass1.genericSharedFlow: SharedFlow + get(): SharedFlow { + return apply>(/* = MutableSharedFlow(replay = 1), */ block = local fun MutableSharedFlow.() { + $this$apply.tryEmit(value = .()) /*~> Unit */ + } +) + } + +@NativeCoroutines +val MyGenericClass1.genericStateFlow: StateFlow + get(): StateFlow { + return MutableStateFlow(value = .()) + } + +@NativeCoroutines +val nullableFlow: Flow? + get(): Flow? { + return null + } + +@NativeCoroutines +val nullableFlowAndValue: Flow? + get(): Flow? { + return null + } + +@NativeCoroutines +val nullableSharedFlow: SharedFlow? + get(): SharedFlow? { + return null + } + +@NativeCoroutines +val nullableSharedFlowAndValue: SharedFlow? + get(): SharedFlow? { + return null + } + +@NativeCoroutines +val nullableStateFlowAndValue: StateFlow? + get(): StateFlow? { + return null + } + +@NativeCoroutines +val nullableStateFlowProperty: StateFlow? + get(): StateFlow? { + return null + } diff --git a/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/properties.fir.txt b/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/properties.fir.txt new file mode 100644 index 00000000..20185110 --- /dev/null +++ b/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/properties.fir.txt @@ -0,0 +1,447 @@ +FILE: properties.kt + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final val topLevelFlow: R|kotlinx/coroutines/flow/Flow| = R|kotlinx/coroutines/flow/flowOf|(String(OK1)) + public get(): R|kotlinx/coroutines/flow/Flow| + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final val topLevelSharedFlow: R|kotlinx/coroutines/flow/SharedFlow| = R|kotlinx/coroutines/flow/MutableSharedFlow|(Int(1)).R|kotlin/apply||>( = apply@fun R|kotlinx/coroutines/flow/MutableSharedFlow|.(): R|kotlin/Unit| { + this@R|special/anonymous|.R|SubstitutionOverride|(String(OK2)) + } + ) + public get(): R|kotlinx/coroutines/flow/SharedFlow| + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final val topLevelStateFlow: R|kotlinx/coroutines/flow/StateFlow| = R|kotlinx/coroutines/flow/MutableStateFlow|(String(OK3)) + public get(): R|kotlinx/coroutines/flow/StateFlow| + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final val topLevelMutableStateFlow: R|kotlinx/coroutines/flow/MutableStateFlow| = R|kotlinx/coroutines/flow/MutableStateFlow|(String(OK4)) + public get(): R|kotlinx/coroutines/flow/MutableStateFlow| + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final val nullableFlowValue: R|kotlinx/coroutines/flow/Flow| = R|kotlinx/coroutines/flow/flowOf|(Null(null)) + public get(): R|kotlinx/coroutines/flow/Flow| + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final val nullableSharedFlowValue: R|kotlinx/coroutines/flow/SharedFlow| = R|kotlinx/coroutines/flow/MutableSharedFlow|(Int(1)).R|kotlin/apply||>( = apply@fun R|kotlinx/coroutines/flow/MutableSharedFlow|.(): R|kotlin/Unit| { + this@R|special/anonymous|.R|SubstitutionOverride|(Null(null)) + } + ) + public get(): R|kotlinx/coroutines/flow/SharedFlow| + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final val nullableStateFlowValue: R|kotlinx/coroutines/flow/StateFlow| = R|kotlinx/coroutines/flow/MutableStateFlow|(Null(null)) + public get(): R|kotlinx/coroutines/flow/StateFlow| + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final val nullableFlow: R|kotlinx/coroutines/flow/Flow?| + public get(): R|kotlinx/coroutines/flow/Flow?| { + ^ Null(null) + } + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final val nullableSharedFlow: R|kotlinx/coroutines/flow/SharedFlow?| + public get(): R|kotlinx/coroutines/flow/SharedFlow?| { + ^ Null(null) + } + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final val nullableStateFlowProperty: R|kotlinx/coroutines/flow/StateFlow?| + public get(): R|kotlinx/coroutines/flow/StateFlow?| { + ^ Null(null) + } + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final val nullableFlowAndValue: R|kotlinx/coroutines/flow/Flow?| + public get(): R|kotlinx/coroutines/flow/Flow?| { + ^ Null(null) + } + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final val nullableSharedFlowAndValue: R|kotlinx/coroutines/flow/SharedFlow?| + public get(): R|kotlinx/coroutines/flow/SharedFlow?| { + ^ Null(null) + } + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final val nullableStateFlowAndValue: R|kotlinx/coroutines/flow/StateFlow?| + public get(): R|kotlinx/coroutines/flow/StateFlow?| { + ^ Null(null) + } + public final data class MyGenericClass1 : R|kotlin/Any| { + public constructor(value: R|T|): R|MyGenericClass1| { + super() + } + + public final val value: R|T| = R|/value| + public get(): R|T| + + public final operator fun component1(): R|T| + + public final fun copy(value: R|T| = this@R|/MyGenericClass1|.R|/MyGenericClass1.value|): R|MyGenericClass1| + + } + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final val R|MyGenericClass1|.genericFlow: R|kotlinx/coroutines/flow/Flow| + public get(): R|kotlinx/coroutines/flow/Flow| { + ^ R|kotlinx/coroutines/flow/flowOf|(this@R|/genericFlow|.R|SubstitutionOverride|) + } + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final val R|MyGenericClass1|.genericSharedFlow: R|kotlinx/coroutines/flow/SharedFlow| + public get(): R|kotlinx/coroutines/flow/SharedFlow| { + ^ R|kotlinx/coroutines/flow/MutableSharedFlow|(Int(1)).R|kotlin/apply||>( = apply@fun R|kotlinx/coroutines/flow/MutableSharedFlow|.(): R|kotlin/Unit| { + this@R|special/anonymous|.R|SubstitutionOverride|(this@R|/genericSharedFlow|.R|SubstitutionOverride|) + } + ) + } + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final val R|MyGenericClass1|.genericStateFlow: R|kotlinx/coroutines/flow/StateFlow| + public get(): R|kotlinx/coroutines/flow/StateFlow| { + ^ R|kotlinx/coroutines/flow/MutableStateFlow|(this@R|/genericStateFlow|.R|SubstitutionOverride|) + } + public final class MyGenericClass2 : R|kotlin/Any| { + public constructor(value: R|T|): R|MyGenericClass2| { + super() + } + + private final val value: R|T| = R|/value| + private get(): R|T| + + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final val genericFlow: R|kotlinx/coroutines/flow/Flow| = R|kotlinx/coroutines/flow/flowOf|(this@R|/MyGenericClass2|.R|/MyGenericClass2.value|) + public get(): R|kotlinx/coroutines/flow/Flow| + + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final val genericSharedFlow: R|kotlinx/coroutines/flow/SharedFlow| = R|kotlinx/coroutines/flow/MutableSharedFlow|(Int(1)).R|kotlin/apply||>( = apply@fun R|kotlinx/coroutines/flow/MutableSharedFlow|.(): R|kotlin/Unit| { + this@R|special/anonymous|.R|SubstitutionOverride|(this@R|/MyGenericClass2|.R|/MyGenericClass2.value|) + } + ) + public get(): R|kotlinx/coroutines/flow/SharedFlow| + + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final val genericStateFlow: R|kotlinx/coroutines/flow/StateFlow| = R|kotlinx/coroutines/flow/MutableStateFlow|(this@R|/MyGenericClass2|.R|/MyGenericClass2.value|) + public get(): R|kotlinx/coroutines/flow/StateFlow| + + @R|kotlin/native/ObjCName|(name = String(genericFlow)) public final val genericFlowNative: R|kotlinx/coroutines/flow/Flow| + public get(): R|kotlinx/coroutines/flow/Flow| { + ::R|/MyGenericClass2.genericFlow| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + + @R|kotlin/native/ObjCName|(name = String(genericSharedFlow)) public final val genericSharedFlowNative: R|kotlinx/coroutines/flow/SharedFlow| + public get(): R|kotlinx/coroutines/flow/SharedFlow| { + ::R|/MyGenericClass2.genericSharedFlow| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + + public final val genericSharedFlowReplayCache: R|kotlin/collections/List| + public get(): R|kotlin/collections/List| { + ::R|/MyGenericClass2.genericSharedFlow| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + + @R|kotlin/native/ObjCName|(name = String(genericStateFlow)) public final val genericStateFlowNative: R|kotlinx/coroutines/flow/StateFlow| + public get(): R|kotlinx/coroutines/flow/StateFlow| { + ::R|/MyGenericClass2.genericStateFlow| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + + public final val genericStateFlowValue: R|T| + public get(): R|T| { + ::R|/MyGenericClass2.genericStateFlow| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + + } + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final val R|kotlin/String|.extensionFlow: R|kotlinx/coroutines/flow/Flow| + public get(): R|kotlinx/coroutines/flow/Flow| { + ^ R|kotlinx/coroutines/flow/flowOf|(this@R|/extensionFlow|) + } + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final val R|kotlin/String|.extensionSharedFlow: R|kotlinx/coroutines/flow/SharedFlow| + public get(): R|kotlinx/coroutines/flow/SharedFlow| { + ^ R|kotlinx/coroutines/flow/MutableSharedFlow|(Int(1)).R|kotlin/apply||>( = apply@fun R|kotlinx/coroutines/flow/MutableSharedFlow|.(): R|kotlin/Unit| { + this@R|special/anonymous|.R|SubstitutionOverride|(this@R|/extensionSharedFlow|) + } + ) + } + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final val R|kotlin/String|.extensionStateFlow: R|kotlinx/coroutines/flow/StateFlow| + public get(): R|kotlinx/coroutines/flow/StateFlow| { + ^ R|kotlinx/coroutines/flow/MutableStateFlow|(this@R|/extensionStateFlow|) + } + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutinesState|() public final val stateProperty: R|kotlinx/coroutines/flow/StateFlow| = R|kotlinx/coroutines/flow/MutableStateFlow|(String(OK23)) + public get(): R|kotlinx/coroutines/flow/StateFlow| + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutinesState|() public final val mutableStateProperty: R|kotlinx/coroutines/flow/MutableStateFlow| = R|kotlinx/coroutines/flow/MutableStateFlow|(String(OK24)) + public get(): R|kotlinx/coroutines/flow/MutableStateFlow| + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutinesRefined|() public final val refinedFlow: R|kotlinx/coroutines/flow/Flow| = R|kotlinx/coroutines/flow/flowOf|(String(OK25)) + public get(): R|kotlinx/coroutines/flow/Flow| + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutinesRefinedState|() public final val refinedState: R|kotlinx/coroutines/flow/StateFlow| = R|kotlinx/coroutines/flow/MutableStateFlow|(String(OK26)) + public get(): R|kotlinx/coroutines/flow/StateFlow| + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutinesState|() public final val mutableNullableStateProperty: R|kotlinx/coroutines/flow/MutableStateFlow?| = R|kotlinx/coroutines/flow/MutableStateFlow|(String(OK27)) + public get(): R|kotlinx/coroutines/flow/MutableStateFlow?| + public abstract interface MyInterface28 : R|kotlin/Any| { + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public abstract val interfaceFlowValue: R|kotlinx/coroutines/flow/Flow| + public get(): R|kotlinx/coroutines/flow/Flow| + + @R|kotlin/native/ObjCName|(name = String(interfaceFlowValue)) public open val interfaceFlowValueNative: R|kotlinx/coroutines/flow/Flow| + public get(): R|kotlinx/coroutines/flow/Flow| { + ::R|/MyInterface28.interfaceFlowValue| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + + } + public final class MyClass28 : R|MyInterface28| { + public constructor(): R|MyClass28| { + super() + } + + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public open override val interfaceFlowValue: R|kotlinx/coroutines/flow/Flow| = R|kotlinx/coroutines/flow/flowOf|(String(OK28)) + public get(): R|kotlinx/coroutines/flow/Flow| + + } + public final class MyFlow29 : R|kotlinx/coroutines/flow/Flow| { + public constructor(value1: R|T1|, value2: R|T2|): R|MyFlow29| { + super() + } + + private final field $$delegate_0: R|kotlinx/coroutines/flow/Flow| = R|kotlinx/coroutines/flow/flowOf|(Null(null)) + + } + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final val customFlowValue: R|MyFlow29| + public get(): R|MyFlow29| { + ^ R|/MyFlow29.MyFlow29|(Int(29), String(OK29)) + } + public final fun box(): R|kotlin/String| { + ^box R|com/rickclephas/kmp/nativecoroutines/runBoxTest|( = runBoxTest@fun R|com/rickclephas/kmp/nativecoroutines/BoxTest|.(): R|kotlin/Unit| { + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.collect|(R|/topLevelFlowNative|) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.collect|(R|/topLevelSharedFlowNative|, Int(1)) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.values|(R|/topLevelSharedFlowReplayCache|) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.collect|(R|/topLevelStateFlowNative|, Int(1)) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.value|(R|/topLevelStateFlowValue|) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.collect|(R|/topLevelMutableStateFlowNative|, Int(1)) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.value|(R|/topLevelMutableStateFlowValue|) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.collect|(R|/nullableFlowValueNative|) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.collect|(R|/nullableSharedFlowValueNative|, Int(1)) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.values|(R|/nullableSharedFlowValueReplayCache|) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.collect|(R|/nullableStateFlowValueNative|, Int(1)) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.value|(R|/nullableStateFlowValueValue|) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.value|?|>(R|/nullableFlowNative|) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.value|?|>(R|/nullableSharedFlowNative|) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.value|?|>(R|/nullableSharedFlowReplayCache|) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.value|?|>(R|/nullableStateFlowPropertyNative|) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.value|(R|/nullableStateFlowPropertyValue|) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.value|?|>(R|/nullableFlowAndValueNative|) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.value|?|>(R|/nullableSharedFlowAndValueNative|) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.value|?|>(R|/nullableSharedFlowAndValueReplayCache|) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.value|?|>(R|/nullableStateFlowAndValueNative|) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.value|(R|/nullableStateFlowAndValueValue|) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.collect|(R|/MyGenericClass1.MyGenericClass1|(String(OK14)).R|/genericFlowNative|) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.collect|(R|/MyGenericClass1.MyGenericClass1|(String(OK15)).R|/genericSharedFlowNative|, Int(1)) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.values|(R|/MyGenericClass1.MyGenericClass1|(String(OK15)).R|/genericSharedFlowReplayCache|) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.collect|(R|/MyGenericClass1.MyGenericClass1|(String(OK16)).R|/genericStateFlowNative|, Int(1)) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.value|(R|/MyGenericClass1.MyGenericClass1|(String(OK16)).R|/genericStateFlowValue|) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.collect|(R|/MyGenericClass2.MyGenericClass2|(String(OK17)).R|SubstitutionOverride|>|) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.collect|(R|/MyGenericClass2.MyGenericClass2|(String(OK18)).R|SubstitutionOverride|>|, Int(1)) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.values|(R|/MyGenericClass2.MyGenericClass2|(String(OK18)).R|SubstitutionOverride|>|) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.collect|(R|/MyGenericClass2.MyGenericClass2|(String(OK19)).R|SubstitutionOverride|>|, Int(1)) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.value|(R|/MyGenericClass2.MyGenericClass2|(String(OK19)).R|SubstitutionOverride|) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.collect|(String(OK20).R|/extensionFlowNative|) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.collect|(String(OK21).R|/extensionSharedFlowNative|, Int(1)) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.values|(String(OK21).R|/extensionSharedFlowReplayCache|) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.collect|(String(OK22).R|/extensionStateFlowNative|, Int(1)) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.value|(String(OK22).R|/extensionStateFlowValue|) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.value|(R|/statePropertyValue|) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.collect|(R|/statePropertyFlow|, Int(1)) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.value|(R|/mutableStatePropertyValue|) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.collect|(R|/mutableStatePropertyFlow|, Int(1)) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.collect|(R|/refinedFlowNative|) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.value|(R|/refinedStateValue|) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.collect|(R|/refinedStateFlow|, Int(1)) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.value|(R|/mutableNullableStatePropertyValue|) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.collect|(R|/mutableNullableStatePropertyFlow|!!, Int(1)) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.collect|(R|/MyClass28.MyClass28|().R|/MyInterface28.interfaceFlowValueNative|) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.collect|(R|/customFlowValueNative|) + } + ) + } +FILE: /__GENERATED__CALLABLES__.kt + @R|kotlin/native/ObjCName|(name = String(topLevelFlow)) public final val topLevelFlowNative: R|kotlinx/coroutines/flow/Flow| + public get(): R|kotlinx/coroutines/flow/Flow| { + ::R|/topLevelFlow| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/native/ObjCName|(name = String(topLevelSharedFlow)) public final val topLevelSharedFlowNative: R|kotlinx/coroutines/flow/SharedFlow| + public get(): R|kotlinx/coroutines/flow/SharedFlow| { + ::R|/topLevelSharedFlow| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + public final val topLevelSharedFlowReplayCache: R|kotlin/collections/List| + public get(): R|kotlin/collections/List| { + ::R|/topLevelSharedFlow| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/native/ObjCName|(name = String(topLevelStateFlow)) public final val topLevelStateFlowNative: R|kotlinx/coroutines/flow/StateFlow| + public get(): R|kotlinx/coroutines/flow/StateFlow| { + ::R|/topLevelStateFlow| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + public final val topLevelStateFlowValue: R|kotlin/String| + public get(): R|kotlin/String| { + ::R|/topLevelStateFlow| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/native/ObjCName|(name = String(topLevelMutableStateFlow)) public final val topLevelMutableStateFlowNative: R|kotlinx/coroutines/flow/MutableStateFlow| + public get(): R|kotlinx/coroutines/flow/MutableStateFlow| { + ::R|/topLevelMutableStateFlow| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + public final var topLevelMutableStateFlowValue: R|kotlin/String| + public get(): R|kotlin/String| { + ::R|/topLevelMutableStateFlow| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + public set(value: R|kotlin/String|): R|kotlin/Unit| + @R|kotlin/native/ObjCName|(name = String(nullableFlowValue)) public final val nullableFlowValueNative: R|kotlinx/coroutines/flow/Flow| + public get(): R|kotlinx/coroutines/flow/Flow| { + ::R|/nullableFlowValue| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/native/ObjCName|(name = String(nullableSharedFlowValue)) public final val nullableSharedFlowValueNative: R|kotlinx/coroutines/flow/SharedFlow| + public get(): R|kotlinx/coroutines/flow/SharedFlow| { + ::R|/nullableSharedFlowValue| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + public final val nullableSharedFlowValueReplayCache: R|kotlin/collections/List| + public get(): R|kotlin/collections/List| { + ::R|/nullableSharedFlowValue| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/native/ObjCName|(name = String(nullableStateFlowValue)) public final val nullableStateFlowValueNative: R|kotlinx/coroutines/flow/StateFlow| + public get(): R|kotlinx/coroutines/flow/StateFlow| { + ::R|/nullableStateFlowValue| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + public final val nullableStateFlowValueValue: R|kotlin/String?| + public get(): R|kotlin/String?| { + ::R|/nullableStateFlowValue| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/native/ObjCName|(name = String(nullableFlow)) public final val nullableFlowNative: R|kotlinx/coroutines/flow/Flow?| + public get(): R|kotlinx/coroutines/flow/Flow?| { + ::R|/nullableFlow| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/native/ObjCName|(name = String(nullableSharedFlow)) public final val nullableSharedFlowNative: R|kotlinx/coroutines/flow/SharedFlow?| + public get(): R|kotlinx/coroutines/flow/SharedFlow?| { + ::R|/nullableSharedFlow| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + public final val nullableSharedFlowReplayCache: R|kotlin/collections/List?| + public get(): R|kotlin/collections/List?| { + ::R|/nullableSharedFlow| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/native/ObjCName|(name = String(nullableStateFlowProperty)) public final val nullableStateFlowPropertyNative: R|kotlinx/coroutines/flow/StateFlow?| + public get(): R|kotlinx/coroutines/flow/StateFlow?| { + ::R|/nullableStateFlowProperty| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + public final val nullableStateFlowPropertyValue: R|kotlin/String?| + public get(): R|kotlin/String?| { + ::R|/nullableStateFlowProperty| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/native/ObjCName|(name = String(nullableFlowAndValue)) public final val nullableFlowAndValueNative: R|kotlinx/coroutines/flow/Flow?| + public get(): R|kotlinx/coroutines/flow/Flow?| { + ::R|/nullableFlowAndValue| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/native/ObjCName|(name = String(nullableSharedFlowAndValue)) public final val nullableSharedFlowAndValueNative: R|kotlinx/coroutines/flow/SharedFlow?| + public get(): R|kotlinx/coroutines/flow/SharedFlow?| { + ::R|/nullableSharedFlowAndValue| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + public final val nullableSharedFlowAndValueReplayCache: R|kotlin/collections/List?| + public get(): R|kotlin/collections/List?| { + ::R|/nullableSharedFlowAndValue| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/native/ObjCName|(name = String(nullableStateFlowAndValue)) public final val nullableStateFlowAndValueNative: R|kotlinx/coroutines/flow/StateFlow?| + public get(): R|kotlinx/coroutines/flow/StateFlow?| { + ::R|/nullableStateFlowAndValue| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + public final val nullableStateFlowAndValueValue: R|kotlin/String?| + public get(): R|kotlin/String?| { + ::R|/nullableStateFlowAndValue| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/native/ObjCName|(name = String(genericFlow)) public final val R|MyGenericClass1|.genericFlowNative: R|kotlinx/coroutines/flow/Flow| + public get(): R|kotlinx/coroutines/flow/Flow| { + ::R|/genericFlow| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/native/ObjCName|(name = String(genericSharedFlow)) public final val R|MyGenericClass1|.genericSharedFlowNative: R|kotlinx/coroutines/flow/SharedFlow| + public get(): R|kotlinx/coroutines/flow/SharedFlow| { + ::R|/genericSharedFlow| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + public final val R|MyGenericClass1|.genericSharedFlowReplayCache: R|kotlin/collections/List| + public get(): R|kotlin/collections/List| { + ::R|/genericSharedFlow| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/native/ObjCName|(name = String(genericStateFlow)) public final val R|MyGenericClass1|.genericStateFlowNative: R|kotlinx/coroutines/flow/StateFlow| + public get(): R|kotlinx/coroutines/flow/StateFlow| { + ::R|/genericStateFlow| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + public final val R|MyGenericClass1|.genericStateFlowValue: R|T| + public get(): R|T| { + ::R|/genericStateFlow| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/native/ObjCName|(name = String(extensionFlow)) public final val R|kotlin/String|.extensionFlowNative: R|kotlinx/coroutines/flow/Flow| + public get(): R|kotlinx/coroutines/flow/Flow| { + ::R|/extensionFlow| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/native/ObjCName|(name = String(extensionSharedFlow)) public final val R|kotlin/String|.extensionSharedFlowNative: R|kotlinx/coroutines/flow/SharedFlow| + public get(): R|kotlinx/coroutines/flow/SharedFlow| { + ::R|/extensionSharedFlow| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + public final val R|kotlin/String|.extensionSharedFlowReplayCache: R|kotlin/collections/List| + public get(): R|kotlin/collections/List| { + ::R|/extensionSharedFlow| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/native/ObjCName|(name = String(extensionStateFlow)) public final val R|kotlin/String|.extensionStateFlowNative: R|kotlinx/coroutines/flow/StateFlow| + public get(): R|kotlinx/coroutines/flow/StateFlow| { + ::R|/extensionStateFlow| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + public final val R|kotlin/String|.extensionStateFlowValue: R|kotlin/String| + public get(): R|kotlin/String| { + ::R|/extensionStateFlow| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/native/ObjCName|(name = String(customFlowValue)) public final val customFlowValueNative: R|MyFlow29| + public get(): R|MyFlow29| { + ::R|/customFlowValue| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/native/ObjCName|(name = String(refinedFlow)) @R|kotlin/native/ShouldRefineInSwift|() public final val refinedFlowNative: R|kotlinx/coroutines/flow/Flow| + public get(): R|kotlinx/coroutines/flow/Flow| { + ::R|/refinedFlow| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/native/ObjCName|(name = String(refinedState)) @R|kotlin/native/ShouldRefineInSwift|() public final val refinedStateValue: R|kotlin/String| + public get(): R|kotlin/String| { + ::R|/refinedState| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/native/ShouldRefineInSwift|() public final val refinedStateFlow: R|kotlinx/coroutines/flow/StateFlow| + public get(): R|kotlinx/coroutines/flow/StateFlow| { + ::R|/refinedState| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/native/ObjCName|(name = String(stateProperty)) public final val statePropertyValue: R|kotlin/String| + public get(): R|kotlin/String| { + ::R|/stateProperty| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + public final val statePropertyFlow: R|kotlinx/coroutines/flow/StateFlow| + public get(): R|kotlinx/coroutines/flow/StateFlow| { + ::R|/stateProperty| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/native/ObjCName|(name = String(mutableStateProperty)) public final var mutableStatePropertyValue: R|kotlin/String| + public get(): R|kotlin/String| { + ::R|/mutableStateProperty| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + public set(value: R|kotlin/String|): R|kotlin/Unit| + public final val mutableStatePropertyFlow: R|kotlinx/coroutines/flow/MutableStateFlow| + public get(): R|kotlinx/coroutines/flow/MutableStateFlow| { + ::R|/mutableStateProperty| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/native/ObjCName|(name = String(mutableNullableStateProperty)) public final val mutableNullableStatePropertyValue: R|kotlin/String?| + public get(): R|kotlin/String?| { + ::R|/mutableNullableStateProperty| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + public final val mutableNullableStatePropertyFlow: R|kotlinx/coroutines/flow/MutableStateFlow?| + public get(): R|kotlinx/coroutines/flow/MutableStateFlow?| { + ::R|/mutableNullableStateProperty| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } diff --git a/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/properties.kt b/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/properties.kt new file mode 120000 index 00000000..23f2717d --- /dev/null +++ b/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/properties.kt @@ -0,0 +1 @@ +../properties.kt \ No newline at end of file diff --git a/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/viewmodelscope.box.txt b/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/viewmodelscope.box.txt new file mode 120000 index 00000000..8a49f49f --- /dev/null +++ b/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/viewmodelscope.box.txt @@ -0,0 +1 @@ +../viewmodelscope.box.txt \ No newline at end of file diff --git a/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/viewmodelscope.fir.ir.txt b/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/viewmodelscope.fir.ir.txt new file mode 100644 index 00000000..e1bf9bbd --- /dev/null +++ b/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/viewmodelscope.fir.ir.txt @@ -0,0 +1,460 @@ +FILE fqName: fileName:/__GENERATED__CALLABLES__.kt + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:returnSuspendValue2Native visibility:public modality:FINAL returnType:kotlin.String [suspend] + VALUE_PARAMETER kind:ExtensionReceiver name: index:0 type:.MyAndroidXViewModel1 + annotations: + ObjCName(name = "returnSuspendValue2", swiftName = , exact = ) + Throws(exceptionClasses = [CLASS_REFERENCE 'CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:Exception modality:OPEN visibility:public superTypes:[kotlin.Throwable]' type=kotlin.reflect.KClass] type=kotlin.Array varargElementType=kotlin.Throwable) + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_0 type:kotlinx.coroutines.CoroutineScope [val] + CALL 'public final fun (: androidx.lifecycle.ViewModel): kotlinx.coroutines.CoroutineScope declared in androidx.lifecycle' type=kotlinx.coroutines.CoroutineScope origin=null + ARG : GET_VAR ': .MyAndroidXViewModel1 declared in .returnSuspendValue2Native' type=.MyAndroidXViewModel1 origin=null + RETURN type=kotlin.Nothing from='public final fun returnSuspendValue2Native (: .MyAndroidXViewModel1): kotlin.String declared in ' + CALL 'public final fun returnSuspendValue2 (: .MyAndroidXViewModel1): kotlin.String declared in ' type=kotlin.String origin=null + ARG : GET_VAR ': .MyAndroidXViewModel1 declared in .returnSuspendValue2Native' type=.MyAndroidXViewModel1 origin=null + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:returnSuspendValue2Native visibility:public modality:FINAL returnType:kotlin.String [suspend] + VALUE_PARAMETER kind:ExtensionReceiver name: index:0 type:.MyAndroidXViewModel2 + annotations: + ObjCName(name = "returnSuspendValue2", swiftName = , exact = ) + Throws(exceptionClasses = [CLASS_REFERENCE 'CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:Exception modality:OPEN visibility:public superTypes:[kotlin.Throwable]' type=kotlin.reflect.KClass] type=kotlin.Array varargElementType=kotlin.Throwable) + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_1 type:kotlinx.coroutines.CoroutineScope [val] + CALL 'public final fun (: androidx.lifecycle.ViewModel): kotlinx.coroutines.CoroutineScope declared in androidx.lifecycle' type=kotlinx.coroutines.CoroutineScope origin=null + ARG : GET_VAR ': .MyAndroidXViewModel2 declared in .returnSuspendValue2Native' type=.MyAndroidXViewModel2 origin=null + RETURN type=kotlin.Nothing from='public final fun returnSuspendValue2Native (: .MyAndroidXViewModel2): kotlin.String declared in ' + CALL 'public final fun returnSuspendValue2 (: .MyAndroidXViewModel2): kotlin.String declared in ' type=kotlin.String origin=null + ARG : GET_VAR ': .MyAndroidXViewModel2 declared in .returnSuspendValue2Native' type=.MyAndroidXViewModel2 origin=null + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:returnSuspendValue2Native visibility:public modality:FINAL returnType:kotlin.String [suspend] + VALUE_PARAMETER kind:ExtensionReceiver name: index:0 type:.MyObservableViewModel1 + annotations: + ObjCName(name = "returnSuspendValue2", swiftName = , exact = ) + Throws(exceptionClasses = [CLASS_REFERENCE 'CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:Exception modality:OPEN visibility:public superTypes:[kotlin.Throwable]' type=kotlin.reflect.KClass] type=kotlin.Array varargElementType=kotlin.Throwable) + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_2 type:kotlinx.coroutines.CoroutineScope [val] + CALL 'public final fun (: com.rickclephas.kmp.observableviewmodel.ViewModelScope): kotlinx.coroutines.CoroutineScope declared in com.rickclephas.kmp.observableviewmodel' type=kotlinx.coroutines.CoroutineScope origin=null + ARG : CALL 'public final fun (): com.rickclephas.kmp.observableviewmodel.ViewModelScope declared in com.rickclephas.kmp.observableviewmodel.ViewModel' type=com.rickclephas.kmp.observableviewmodel.ViewModelScope origin=null + ARG : GET_VAR ': .MyObservableViewModel1 declared in .returnSuspendValue2Native' type=.MyObservableViewModel1 origin=null + RETURN type=kotlin.Nothing from='public final fun returnSuspendValue2Native (: .MyObservableViewModel1): kotlin.String declared in ' + CALL 'public final fun returnSuspendValue2 (: .MyObservableViewModel1): kotlin.String declared in ' type=kotlin.String origin=null + ARG : GET_VAR ': .MyObservableViewModel1 declared in .returnSuspendValue2Native' type=.MyObservableViewModel1 origin=null + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:returnSuspendValue2Native visibility:public modality:FINAL returnType:kotlin.String [suspend] + VALUE_PARAMETER kind:ExtensionReceiver name: index:0 type:.MyObservableViewModel2 + annotations: + ObjCName(name = "returnSuspendValue2", swiftName = , exact = ) + Throws(exceptionClasses = [CLASS_REFERENCE 'CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:Exception modality:OPEN visibility:public superTypes:[kotlin.Throwable]' type=kotlin.reflect.KClass] type=kotlin.Array varargElementType=kotlin.Throwable) + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_3 type:kotlinx.coroutines.CoroutineScope [val] + CALL 'public final fun (: com.rickclephas.kmp.observableviewmodel.ViewModelScope): kotlinx.coroutines.CoroutineScope declared in com.rickclephas.kmp.observableviewmodel' type=kotlinx.coroutines.CoroutineScope origin=null + ARG : CALL 'public final fun (): com.rickclephas.kmp.observableviewmodel.ViewModelScope declared in com.rickclephas.kmp.observableviewmodel.ViewModel' type=com.rickclephas.kmp.observableviewmodel.ViewModelScope origin=null + ARG : GET_VAR ': .MyObservableViewModel2 declared in .returnSuspendValue2Native' type=.MyObservableViewModel2 origin=null + RETURN type=kotlin.Nothing from='public final fun returnSuspendValue2Native (: .MyObservableViewModel2): kotlin.String declared in ' + CALL 'public final fun returnSuspendValue2 (: .MyObservableViewModel2): kotlin.String declared in ' type=kotlin.String origin=null + ARG : GET_VAR ': .MyObservableViewModel2 declared in .returnSuspendValue2Native' type=.MyObservableViewModel2 origin=null +FILE fqName:androidx.lifecycle fileName:/androidxviewmodel.kt + CLASS CLASS name:ViewModel modality:OPEN visibility:public superTypes:[kotlin.Any] + thisReceiver: VALUE_PARAMETER INSTANCE_RECEIVER kind:DispatchReceiver name: type:androidx.lifecycle.ViewModel + CONSTRUCTOR visibility:public returnType:androidx.lifecycle.ViewModel [primary] + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'public constructor () declared in kotlin.Any' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:ViewModel modality:OPEN visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit + FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN returnType:kotlin.Boolean [fake_override,operator] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + VALUE_PARAMETER kind:Regular name:other index:1 type:kotlin.Any? + overridden: + public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Any + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN returnType:kotlin.Int [fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + overridden: + public open fun hashCode (): kotlin.Int declared in kotlin.Any + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN returnType:kotlin.String [fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + overridden: + public open fun toString (): kotlin.String declared in kotlin.Any + PROPERTY name:viewModelScope visibility:public modality:FINAL [val] + FUN name: visibility:public modality:FINAL returnType:kotlinx.coroutines.CoroutineScope + VALUE_PARAMETER kind:ExtensionReceiver name: index:0 type:androidx.lifecycle.ViewModel + correspondingProperty: PROPERTY name:viewModelScope visibility:public modality:FINAL [val] + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (: androidx.lifecycle.ViewModel): kotlinx.coroutines.CoroutineScope declared in androidx.lifecycle' + CALL 'public final fun CoroutineScope (context: kotlin.coroutines.CoroutineContext): kotlinx.coroutines.CoroutineScope declared in kotlinx.coroutines' type=kotlinx.coroutines.CoroutineScope origin=null + ARG context: CALL 'public final fun (): kotlinx.coroutines.CoroutineDispatcher declared in kotlinx.coroutines.Dispatchers' type=kotlinx.coroutines.CoroutineDispatcher origin=GET_PROPERTY + ARG : GET_OBJECT 'CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Dispatchers modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlinx.coroutines.Dispatchers +FILE fqName:com.rickclephas.kmp.observableviewmodel fileName:/observableviewmodel.kt + CLASS CLASS name:ViewModel modality:OPEN visibility:public superTypes:[androidx.lifecycle.ViewModel] + thisReceiver: VALUE_PARAMETER INSTANCE_RECEIVER kind:DispatchReceiver name: type:com.rickclephas.kmp.observableviewmodel.ViewModel + PROPERTY name:viewModelScope visibility:public modality:FINAL [val] + FIELD PROPERTY_BACKING_FIELD name:viewModelScope type:com.rickclephas.kmp.observableviewmodel.ViewModelScope visibility:private [final] + EXPRESSION_BODY + CONSTRUCTOR_CALL 'public constructor () declared in com.rickclephas.kmp.observableviewmodel.ViewModelScope' type=com.rickclephas.kmp.observableviewmodel.ViewModelScope origin=null + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL returnType:com.rickclephas.kmp.observableviewmodel.ViewModelScope + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:com.rickclephas.kmp.observableviewmodel.ViewModel + correspondingProperty: PROPERTY name:viewModelScope visibility:public modality:FINAL [val] + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): com.rickclephas.kmp.observableviewmodel.ViewModelScope declared in com.rickclephas.kmp.observableviewmodel.ViewModel' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:viewModelScope type:com.rickclephas.kmp.observableviewmodel.ViewModelScope visibility:private [final]' type=com.rickclephas.kmp.observableviewmodel.ViewModelScope origin=null + receiver: GET_VAR ': com.rickclephas.kmp.observableviewmodel.ViewModel declared in com.rickclephas.kmp.observableviewmodel.ViewModel.' type=com.rickclephas.kmp.observableviewmodel.ViewModel origin=null + CONSTRUCTOR visibility:public returnType:com.rickclephas.kmp.observableviewmodel.ViewModel [primary] + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'public constructor () declared in androidx.lifecycle.ViewModel' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:ViewModel modality:OPEN visibility:public superTypes:[androidx.lifecycle.ViewModel]' type=kotlin.Unit + FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN returnType:kotlin.Boolean [fake_override,operator] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + VALUE_PARAMETER kind:Regular name:other index:1 type:kotlin.Any? + overridden: + public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in androidx.lifecycle.ViewModel + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN returnType:kotlin.Int [fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + overridden: + public open fun hashCode (): kotlin.Int declared in androidx.lifecycle.ViewModel + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN returnType:kotlin.String [fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + overridden: + public open fun toString (): kotlin.String declared in androidx.lifecycle.ViewModel + CLASS CLASS name:ViewModelScope modality:FINAL visibility:public superTypes:[kotlin.Any] + thisReceiver: VALUE_PARAMETER INSTANCE_RECEIVER kind:DispatchReceiver name: type:com.rickclephas.kmp.observableviewmodel.ViewModelScope + CONSTRUCTOR visibility:public returnType:com.rickclephas.kmp.observableviewmodel.ViewModelScope [primary] + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'public constructor () declared in kotlin.Any' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:ViewModelScope modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit + FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN returnType:kotlin.Boolean [fake_override,operator] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + VALUE_PARAMETER kind:Regular name:other index:1 type:kotlin.Any? + overridden: + public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Any + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN returnType:kotlin.Int [fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + overridden: + public open fun hashCode (): kotlin.Int declared in kotlin.Any + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN returnType:kotlin.String [fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + overridden: + public open fun toString (): kotlin.String declared in kotlin.Any + PROPERTY name:coroutineScope visibility:public modality:FINAL [val] + FUN name: visibility:public modality:FINAL returnType:kotlinx.coroutines.CoroutineScope + VALUE_PARAMETER kind:ExtensionReceiver name: index:0 type:com.rickclephas.kmp.observableviewmodel.ViewModelScope + correspondingProperty: PROPERTY name:coroutineScope visibility:public modality:FINAL [val] + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (: com.rickclephas.kmp.observableviewmodel.ViewModelScope): kotlinx.coroutines.CoroutineScope declared in com.rickclephas.kmp.observableviewmodel' + CALL 'public final fun CoroutineScope (context: kotlin.coroutines.CoroutineContext): kotlinx.coroutines.CoroutineScope declared in kotlinx.coroutines' type=kotlinx.coroutines.CoroutineScope origin=null + ARG context: CALL 'public final fun (): kotlinx.coroutines.CoroutineDispatcher declared in kotlinx.coroutines.Dispatchers' type=kotlinx.coroutines.CoroutineDispatcher origin=GET_PROPERTY + ARG : GET_OBJECT 'CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Dispatchers modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlinx.coroutines.Dispatchers +FILE fqName: fileName:/viewmodelscope.kt + PROPERTY name:unusedCoroutineScope visibility:internal modality:FINAL [val] + annotations: + NativeCoroutineScope + FIELD PROPERTY_BACKING_FIELD name:unusedCoroutineScope type:kotlinx.coroutines.CoroutineScope visibility:private [final,static] + EXPRESSION_BODY + CALL 'public final fun CoroutineScope (context: kotlin.coroutines.CoroutineContext): kotlinx.coroutines.CoroutineScope declared in kotlinx.coroutines' type=kotlinx.coroutines.CoroutineScope origin=null + ARG context: CALL 'public final fun (): kotlinx.coroutines.CoroutineDispatcher declared in kotlinx.coroutines.Dispatchers' type=kotlinx.coroutines.CoroutineDispatcher origin=GET_PROPERTY + ARG : GET_OBJECT 'CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Dispatchers modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlinx.coroutines.Dispatchers + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:internal modality:FINAL returnType:kotlinx.coroutines.CoroutineScope + correspondingProperty: PROPERTY name:unusedCoroutineScope visibility:internal modality:FINAL [val] + BLOCK_BODY + RETURN type=kotlin.Nothing from='internal final fun (): kotlinx.coroutines.CoroutineScope declared in ' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:unusedCoroutineScope type:kotlinx.coroutines.CoroutineScope visibility:private [final,static]' type=kotlinx.coroutines.CoroutineScope origin=null + CLASS CLASS name:MyAndroidXViewModel1 modality:FINAL visibility:public superTypes:[androidx.lifecycle.ViewModel] + thisReceiver: VALUE_PARAMETER INSTANCE_RECEIVER kind:DispatchReceiver name: type:.MyAndroidXViewModel1 + CONSTRUCTOR visibility:public returnType:.MyAndroidXViewModel1 [primary] + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'public constructor () declared in androidx.lifecycle.ViewModel' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:MyAndroidXViewModel1 modality:FINAL visibility:public superTypes:[androidx.lifecycle.ViewModel]' type=kotlin.Unit + FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN returnType:kotlin.Boolean [fake_override,operator] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + VALUE_PARAMETER kind:Regular name:other index:1 type:kotlin.Any? + overridden: + public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in androidx.lifecycle.ViewModel + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN returnType:kotlin.Int [fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + overridden: + public open fun hashCode (): kotlin.Int declared in androidx.lifecycle.ViewModel + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN returnType:kotlin.String [fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + overridden: + public open fun toString (): kotlin.String declared in androidx.lifecycle.ViewModel + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:returnSuspendValue1Native visibility:public modality:FINAL returnType:kotlin.String [suspend] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyAndroidXViewModel1 + annotations: + ObjCName(name = "returnSuspendValue1", swiftName = , exact = ) + Throws(exceptionClasses = [CLASS_REFERENCE 'CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:Exception modality:OPEN visibility:public superTypes:[kotlin.Throwable]' type=kotlin.reflect.KClass] type=kotlin.Array varargElementType=kotlin.Throwable) + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_0 type:kotlinx.coroutines.CoroutineScope [val] + CALL 'public final fun (: androidx.lifecycle.ViewModel): kotlinx.coroutines.CoroutineScope declared in androidx.lifecycle' type=kotlinx.coroutines.CoroutineScope origin=null + ARG : GET_VAR ': .MyAndroidXViewModel1 declared in .MyAndroidXViewModel1.returnSuspendValue1Native' type=.MyAndroidXViewModel1 origin=null + RETURN type=kotlin.Nothing from='public final fun returnSuspendValue1Native (): kotlin.String declared in .MyAndroidXViewModel1' + CALL 'public final fun returnSuspendValue1 (): kotlin.String declared in .MyAndroidXViewModel1' type=kotlin.String origin=null + ARG : GET_VAR ': .MyAndroidXViewModel1 declared in .MyAndroidXViewModel1.returnSuspendValue1Native' type=.MyAndroidXViewModel1 origin=null + FUN name:returnSuspendValue1 visibility:public modality:FINAL returnType:kotlin.String [suspend] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyAndroidXViewModel1 + annotations: + NativeCoroutines + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun returnSuspendValue1 (): kotlin.String declared in .MyAndroidXViewModel1' + CONST String type=kotlin.String value="OK1" + CLASS CLASS name:MyAndroidXViewModel2 modality:FINAL visibility:public superTypes:[androidx.lifecycle.ViewModel] + thisReceiver: VALUE_PARAMETER INSTANCE_RECEIVER kind:DispatchReceiver name: type:.MyAndroidXViewModel2 + PROPERTY name:customCoroutineScope visibility:internal modality:FINAL [val] + annotations: + NativeCoroutineScope + FIELD PROPERTY_BACKING_FIELD name:customCoroutineScope type:kotlinx.coroutines.CoroutineScope visibility:private [final] + EXPRESSION_BODY + CALL 'public final fun CoroutineScope (context: kotlin.coroutines.CoroutineContext): kotlinx.coroutines.CoroutineScope declared in kotlinx.coroutines' type=kotlinx.coroutines.CoroutineScope origin=null + ARG context: CALL 'public final fun (): kotlinx.coroutines.CoroutineDispatcher declared in kotlinx.coroutines.Dispatchers' type=kotlinx.coroutines.CoroutineDispatcher origin=GET_PROPERTY + ARG : GET_OBJECT 'CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Dispatchers modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlinx.coroutines.Dispatchers + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:internal modality:FINAL returnType:kotlinx.coroutines.CoroutineScope + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyAndroidXViewModel2 + correspondingProperty: PROPERTY name:customCoroutineScope visibility:internal modality:FINAL [val] + BLOCK_BODY + RETURN type=kotlin.Nothing from='internal final fun (): kotlinx.coroutines.CoroutineScope declared in .MyAndroidXViewModel2' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:customCoroutineScope type:kotlinx.coroutines.CoroutineScope visibility:private [final]' type=kotlinx.coroutines.CoroutineScope origin=null + receiver: GET_VAR ': .MyAndroidXViewModel2 declared in .MyAndroidXViewModel2.' type=.MyAndroidXViewModel2 origin=null + CONSTRUCTOR visibility:public returnType:.MyAndroidXViewModel2 [primary] + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'public constructor () declared in androidx.lifecycle.ViewModel' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:MyAndroidXViewModel2 modality:FINAL visibility:public superTypes:[androidx.lifecycle.ViewModel]' type=kotlin.Unit + FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN returnType:kotlin.Boolean [fake_override,operator] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + VALUE_PARAMETER kind:Regular name:other index:1 type:kotlin.Any? + overridden: + public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in androidx.lifecycle.ViewModel + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN returnType:kotlin.Int [fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + overridden: + public open fun hashCode (): kotlin.Int declared in androidx.lifecycle.ViewModel + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN returnType:kotlin.String [fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + overridden: + public open fun toString (): kotlin.String declared in androidx.lifecycle.ViewModel + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:returnSuspendValue1Native visibility:public modality:FINAL returnType:kotlin.String [suspend] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyAndroidXViewModel2 + annotations: + ObjCName(name = "returnSuspendValue1", swiftName = , exact = ) + Throws(exceptionClasses = [CLASS_REFERENCE 'CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:Exception modality:OPEN visibility:public superTypes:[kotlin.Throwable]' type=kotlin.reflect.KClass] type=kotlin.Array varargElementType=kotlin.Throwable) + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_1 type:kotlinx.coroutines.CoroutineScope [val] + CALL 'internal final fun (): kotlinx.coroutines.CoroutineScope declared in .MyAndroidXViewModel2' type=kotlinx.coroutines.CoroutineScope origin=null + ARG : GET_VAR ': .MyAndroidXViewModel2 declared in .MyAndroidXViewModel2.returnSuspendValue1Native' type=.MyAndroidXViewModel2 origin=null + RETURN type=kotlin.Nothing from='public final fun returnSuspendValue1Native (): kotlin.String declared in .MyAndroidXViewModel2' + CALL 'public final fun returnSuspendValue1 (): kotlin.String declared in .MyAndroidXViewModel2' type=kotlin.String origin=null + ARG : GET_VAR ': .MyAndroidXViewModel2 declared in .MyAndroidXViewModel2.returnSuspendValue1Native' type=.MyAndroidXViewModel2 origin=null + FUN name:returnSuspendValue1 visibility:public modality:FINAL returnType:kotlin.String [suspend] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyAndroidXViewModel2 + annotations: + NativeCoroutines + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun returnSuspendValue1 (): kotlin.String declared in .MyAndroidXViewModel2' + CONST String type=kotlin.String value="OK5" + CLASS CLASS name:MyObservableViewModel1 modality:FINAL visibility:public superTypes:[com.rickclephas.kmp.observableviewmodel.ViewModel] + thisReceiver: VALUE_PARAMETER INSTANCE_RECEIVER kind:DispatchReceiver name: type:.MyObservableViewModel1 + CONSTRUCTOR visibility:public returnType:.MyObservableViewModel1 [primary] + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'public constructor () declared in com.rickclephas.kmp.observableviewmodel.ViewModel' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:MyObservableViewModel1 modality:FINAL visibility:public superTypes:[com.rickclephas.kmp.observableviewmodel.ViewModel]' type=kotlin.Unit + FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN returnType:kotlin.Boolean [fake_override,operator] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + VALUE_PARAMETER kind:Regular name:other index:1 type:kotlin.Any? + overridden: + public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in com.rickclephas.kmp.observableviewmodel.ViewModel + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN returnType:kotlin.Int [fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + overridden: + public open fun hashCode (): kotlin.Int declared in com.rickclephas.kmp.observableviewmodel.ViewModel + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN returnType:kotlin.String [fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + overridden: + public open fun toString (): kotlin.String declared in com.rickclephas.kmp.observableviewmodel.ViewModel + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:returnSuspendValue1Native visibility:public modality:FINAL returnType:kotlin.String [suspend] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyObservableViewModel1 + annotations: + ObjCName(name = "returnSuspendValue1", swiftName = , exact = ) + Throws(exceptionClasses = [CLASS_REFERENCE 'CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:Exception modality:OPEN visibility:public superTypes:[kotlin.Throwable]' type=kotlin.reflect.KClass] type=kotlin.Array varargElementType=kotlin.Throwable) + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_2 type:kotlinx.coroutines.CoroutineScope [val] + CALL 'public final fun (: com.rickclephas.kmp.observableviewmodel.ViewModelScope): kotlinx.coroutines.CoroutineScope declared in com.rickclephas.kmp.observableviewmodel' type=kotlinx.coroutines.CoroutineScope origin=null + ARG : CALL 'public final fun (): com.rickclephas.kmp.observableviewmodel.ViewModelScope declared in com.rickclephas.kmp.observableviewmodel.ViewModel' type=com.rickclephas.kmp.observableviewmodel.ViewModelScope origin=null + ARG : GET_VAR ': .MyObservableViewModel1 declared in .MyObservableViewModel1.returnSuspendValue1Native' type=.MyObservableViewModel1 origin=null + RETURN type=kotlin.Nothing from='public final fun returnSuspendValue1Native (): kotlin.String declared in .MyObservableViewModel1' + CALL 'public final fun returnSuspendValue1 (): kotlin.String declared in .MyObservableViewModel1' type=kotlin.String origin=null + ARG : GET_VAR ': .MyObservableViewModel1 declared in .MyObservableViewModel1.returnSuspendValue1Native' type=.MyObservableViewModel1 origin=null + FUN name:returnSuspendValue1 visibility:public modality:FINAL returnType:kotlin.String [suspend] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyObservableViewModel1 + annotations: + NativeCoroutines + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun returnSuspendValue1 (): kotlin.String declared in .MyObservableViewModel1' + CONST String type=kotlin.String value="OK3" + PROPERTY FAKE_OVERRIDE name:viewModelScope visibility:public modality:FINAL [fake_override,val] + overridden: + public final viewModelScope: com.rickclephas.kmp.observableviewmodel.ViewModelScope declared in com.rickclephas.kmp.observableviewmodel.ViewModel + FUN FAKE_OVERRIDE name: visibility:public modality:FINAL returnType:com.rickclephas.kmp.observableviewmodel.ViewModelScope [fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:com.rickclephas.kmp.observableviewmodel.ViewModel + correspondingProperty: PROPERTY FAKE_OVERRIDE name:viewModelScope visibility:public modality:FINAL [fake_override,val] + overridden: + public final fun (): com.rickclephas.kmp.observableviewmodel.ViewModelScope declared in com.rickclephas.kmp.observableviewmodel.ViewModel + CLASS CLASS name:MyObservableViewModel2 modality:FINAL visibility:public superTypes:[com.rickclephas.kmp.observableviewmodel.ViewModel] + thisReceiver: VALUE_PARAMETER INSTANCE_RECEIVER kind:DispatchReceiver name: type:.MyObservableViewModel2 + PROPERTY name:customCoroutineScope visibility:internal modality:FINAL [val] + annotations: + NativeCoroutineScope + FIELD PROPERTY_BACKING_FIELD name:customCoroutineScope type:kotlinx.coroutines.CoroutineScope visibility:private [final] + EXPRESSION_BODY + CALL 'public final fun CoroutineScope (context: kotlin.coroutines.CoroutineContext): kotlinx.coroutines.CoroutineScope declared in kotlinx.coroutines' type=kotlinx.coroutines.CoroutineScope origin=null + ARG context: CALL 'public final fun (): kotlinx.coroutines.CoroutineDispatcher declared in kotlinx.coroutines.Dispatchers' type=kotlinx.coroutines.CoroutineDispatcher origin=GET_PROPERTY + ARG : GET_OBJECT 'CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Dispatchers modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlinx.coroutines.Dispatchers + FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:internal modality:FINAL returnType:kotlinx.coroutines.CoroutineScope + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyObservableViewModel2 + correspondingProperty: PROPERTY name:customCoroutineScope visibility:internal modality:FINAL [val] + BLOCK_BODY + RETURN type=kotlin.Nothing from='internal final fun (): kotlinx.coroutines.CoroutineScope declared in .MyObservableViewModel2' + GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:customCoroutineScope type:kotlinx.coroutines.CoroutineScope visibility:private [final]' type=kotlinx.coroutines.CoroutineScope origin=null + receiver: GET_VAR ': .MyObservableViewModel2 declared in .MyObservableViewModel2.' type=.MyObservableViewModel2 origin=null + CONSTRUCTOR visibility:public returnType:.MyObservableViewModel2 [primary] + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'public constructor () declared in com.rickclephas.kmp.observableviewmodel.ViewModel' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:MyObservableViewModel2 modality:FINAL visibility:public superTypes:[com.rickclephas.kmp.observableviewmodel.ViewModel]' type=kotlin.Unit + FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN returnType:kotlin.Boolean [fake_override,operator] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + VALUE_PARAMETER kind:Regular name:other index:1 type:kotlin.Any? + overridden: + public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in com.rickclephas.kmp.observableviewmodel.ViewModel + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN returnType:kotlin.Int [fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + overridden: + public open fun hashCode (): kotlin.Int declared in com.rickclephas.kmp.observableviewmodel.ViewModel + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN returnType:kotlin.String [fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:kotlin.Any + overridden: + public open fun toString (): kotlin.String declared in com.rickclephas.kmp.observableviewmodel.ViewModel + FUN GENERATED[com.rickclephas.kmp.nativecoroutines.compiler.fir.utils.NativeCoroutinesDeclarationKey] name:returnSuspendValue1Native visibility:public modality:FINAL returnType:kotlin.String [suspend] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyObservableViewModel2 + annotations: + ObjCName(name = "returnSuspendValue1", swiftName = , exact = ) + Throws(exceptionClasses = [CLASS_REFERENCE 'CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:Exception modality:OPEN visibility:public superTypes:[kotlin.Throwable]' type=kotlin.reflect.KClass] type=kotlin.Array varargElementType=kotlin.Throwable) + BLOCK_BODY + VAR IR_TEMPORARY_VARIABLE name:tmp_3 type:kotlinx.coroutines.CoroutineScope [val] + CALL 'internal final fun (): kotlinx.coroutines.CoroutineScope declared in .MyObservableViewModel2' type=kotlinx.coroutines.CoroutineScope origin=null + ARG : GET_VAR ': .MyObservableViewModel2 declared in .MyObservableViewModel2.returnSuspendValue1Native' type=.MyObservableViewModel2 origin=null + RETURN type=kotlin.Nothing from='public final fun returnSuspendValue1Native (): kotlin.String declared in .MyObservableViewModel2' + CALL 'public final fun returnSuspendValue1 (): kotlin.String declared in .MyObservableViewModel2' type=kotlin.String origin=null + ARG : GET_VAR ': .MyObservableViewModel2 declared in .MyObservableViewModel2.returnSuspendValue1Native' type=.MyObservableViewModel2 origin=null + FUN name:returnSuspendValue1 visibility:public modality:FINAL returnType:kotlin.String [suspend] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:.MyObservableViewModel2 + annotations: + NativeCoroutines + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun returnSuspendValue1 (): kotlin.String declared in .MyObservableViewModel2' + CONST String type=kotlin.String value="OK7" + PROPERTY FAKE_OVERRIDE name:viewModelScope visibility:public modality:FINAL [fake_override,val] + overridden: + public final viewModelScope: com.rickclephas.kmp.observableviewmodel.ViewModelScope declared in com.rickclephas.kmp.observableviewmodel.ViewModel + FUN FAKE_OVERRIDE name: visibility:public modality:FINAL returnType:com.rickclephas.kmp.observableviewmodel.ViewModelScope [fake_override] + VALUE_PARAMETER kind:DispatchReceiver name: index:0 type:com.rickclephas.kmp.observableviewmodel.ViewModel + correspondingProperty: PROPERTY FAKE_OVERRIDE name:viewModelScope visibility:public modality:FINAL [fake_override,val] + overridden: + public final fun (): com.rickclephas.kmp.observableviewmodel.ViewModelScope declared in com.rickclephas.kmp.observableviewmodel.ViewModel + FUN name:box visibility:public modality:FINAL returnType:kotlin.String + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun box (): kotlin.String declared in ' + CALL 'public final fun runBoxTest (action: @[ExtensionFunctionType] kotlin.coroutines.SuspendFunction1): kotlin.String declared in com.rickclephas.kmp.nativecoroutines' type=kotlin.String origin=null + ARG action: FUN_EXPR type=@[ExtensionFunctionType] kotlin.coroutines.SuspendFunction1 origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL returnType:kotlin.Unit [suspend] + VALUE_PARAMETER kind:ExtensionReceiver name:$this$runBoxTest index:0 type:com.rickclephas.kmp.nativecoroutines.BoxTest + BLOCK_BODY + CALL 'public final fun await (result: kotlin.coroutines.SuspendFunction0): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG result: FUN_EXPR type=kotlin.coroutines.SuspendFunction0 origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL returnType:kotlin.String [suspend] + BLOCK_BODY + RETURN type=kotlin.Nothing from='local final fun (): kotlin.String declared in .box.' + CALL 'public final fun returnSuspendValue1Native (): kotlin.String declared in .MyAndroidXViewModel1' type=kotlin.String origin=null + ARG : CONSTRUCTOR_CALL 'public constructor () declared in .MyAndroidXViewModel1' type=.MyAndroidXViewModel1 origin=null + CALL 'public final fun await (result: kotlin.coroutines.SuspendFunction0): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG result: FUN_EXPR type=kotlin.coroutines.SuspendFunction0 origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL returnType:kotlin.String [suspend] + BLOCK_BODY + RETURN type=kotlin.Nothing from='local final fun (): kotlin.String declared in .box.' + CALL 'public final fun returnSuspendValue2Native (: .MyAndroidXViewModel1): kotlin.String declared in ' type=kotlin.String origin=null + ARG : CONSTRUCTOR_CALL 'public constructor () declared in .MyAndroidXViewModel1' type=.MyAndroidXViewModel1 origin=null + CALL 'public final fun await (result: kotlin.coroutines.SuspendFunction0): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG result: FUN_EXPR type=kotlin.coroutines.SuspendFunction0 origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL returnType:kotlin.String [suspend] + BLOCK_BODY + RETURN type=kotlin.Nothing from='local final fun (): kotlin.String declared in .box.' + CALL 'public final fun returnSuspendValue1Native (): kotlin.String declared in .MyObservableViewModel1' type=kotlin.String origin=null + ARG : CONSTRUCTOR_CALL 'public constructor () declared in .MyObservableViewModel1' type=.MyObservableViewModel1 origin=null + CALL 'public final fun await (result: kotlin.coroutines.SuspendFunction0): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG result: FUN_EXPR type=kotlin.coroutines.SuspendFunction0 origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL returnType:kotlin.String [suspend] + BLOCK_BODY + RETURN type=kotlin.Nothing from='local final fun (): kotlin.String declared in .box.' + CALL 'public final fun returnSuspendValue2Native (: .MyObservableViewModel1): kotlin.String declared in ' type=kotlin.String origin=null + ARG : CONSTRUCTOR_CALL 'public constructor () declared in .MyObservableViewModel1' type=.MyObservableViewModel1 origin=null + CALL 'public final fun await (result: kotlin.coroutines.SuspendFunction0): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG result: FUN_EXPR type=kotlin.coroutines.SuspendFunction0 origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL returnType:kotlin.String [suspend] + BLOCK_BODY + RETURN type=kotlin.Nothing from='local final fun (): kotlin.String declared in .box.' + CALL 'public final fun returnSuspendValue1Native (): kotlin.String declared in .MyAndroidXViewModel2' type=kotlin.String origin=null + ARG : CONSTRUCTOR_CALL 'public constructor () declared in .MyAndroidXViewModel2' type=.MyAndroidXViewModel2 origin=null + CALL 'public final fun await (result: kotlin.coroutines.SuspendFunction0): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG result: FUN_EXPR type=kotlin.coroutines.SuspendFunction0 origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL returnType:kotlin.String [suspend] + BLOCK_BODY + RETURN type=kotlin.Nothing from='local final fun (): kotlin.String declared in .box.' + CALL 'public final fun returnSuspendValue2Native (: .MyAndroidXViewModel2): kotlin.String declared in ' type=kotlin.String origin=null + ARG : CONSTRUCTOR_CALL 'public constructor () declared in .MyAndroidXViewModel2' type=.MyAndroidXViewModel2 origin=null + CALL 'public final fun await (result: kotlin.coroutines.SuspendFunction0): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG result: FUN_EXPR type=kotlin.coroutines.SuspendFunction0 origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL returnType:kotlin.String [suspend] + BLOCK_BODY + RETURN type=kotlin.Nothing from='local final fun (): kotlin.String declared in .box.' + CALL 'public final fun returnSuspendValue1Native (): kotlin.String declared in .MyObservableViewModel2' type=kotlin.String origin=null + ARG : CONSTRUCTOR_CALL 'public constructor () declared in .MyObservableViewModel2' type=.MyObservableViewModel2 origin=null + CALL 'public final fun await (result: kotlin.coroutines.SuspendFunction0): kotlin.Unit declared in com.rickclephas.kmp.nativecoroutines.BoxTest' type=kotlin.Unit origin=null + TYPE_ARG T: kotlin.String + ARG : GET_VAR '$this$runBoxTest: com.rickclephas.kmp.nativecoroutines.BoxTest declared in .box.' type=com.rickclephas.kmp.nativecoroutines.BoxTest origin=IMPLICIT_ARGUMENT + ARG result: FUN_EXPR type=kotlin.coroutines.SuspendFunction0 origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL returnType:kotlin.String [suspend] + BLOCK_BODY + RETURN type=kotlin.Nothing from='local final fun (): kotlin.String declared in .box.' + CALL 'public final fun returnSuspendValue2Native (: .MyObservableViewModel2): kotlin.String declared in ' type=kotlin.String origin=null + ARG : CONSTRUCTOR_CALL 'public constructor () declared in .MyObservableViewModel2' type=.MyObservableViewModel2 origin=null + FUN name:returnSuspendValue2 visibility:public modality:FINAL returnType:kotlin.String [suspend] + VALUE_PARAMETER kind:ExtensionReceiver name: index:0 type:.MyAndroidXViewModel1 + annotations: + NativeCoroutines + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun returnSuspendValue2 (: .MyAndroidXViewModel1): kotlin.String declared in ' + CONST String type=kotlin.String value="OK2" + FUN name:returnSuspendValue2 visibility:public modality:FINAL returnType:kotlin.String [suspend] + VALUE_PARAMETER kind:ExtensionReceiver name: index:0 type:.MyAndroidXViewModel2 + annotations: + NativeCoroutines + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun returnSuspendValue2 (: .MyAndroidXViewModel2): kotlin.String declared in ' + CONST String type=kotlin.String value="OK6" + FUN name:returnSuspendValue2 visibility:public modality:FINAL returnType:kotlin.String [suspend] + VALUE_PARAMETER kind:ExtensionReceiver name: index:0 type:.MyObservableViewModel1 + annotations: + NativeCoroutines + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun returnSuspendValue2 (: .MyObservableViewModel1): kotlin.String declared in ' + CONST String type=kotlin.String value="OK4" + FUN name:returnSuspendValue2 visibility:public modality:FINAL returnType:kotlin.String [suspend] + VALUE_PARAMETER kind:ExtensionReceiver name: index:0 type:.MyObservableViewModel2 + annotations: + NativeCoroutines + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun returnSuspendValue2 (: .MyObservableViewModel2): kotlin.String declared in ' + CONST String type=kotlin.String value="OK8" diff --git a/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/viewmodelscope.fir.kt.txt b/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/viewmodelscope.fir.kt.txt new file mode 100644 index 00000000..b0c26446 --- /dev/null +++ b/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/viewmodelscope.fir.kt.txt @@ -0,0 +1,235 @@ +// FILE: __GENERATED__CALLABLES__.kt + +@ObjCName(name = "returnSuspendValue2") +@Throws(exceptionClasses = [Exception::class]) +suspend fun MyAndroidXViewModel1.returnSuspendValue2Native(): String { + val tmp_0: CoroutineScope = (/* = */) + return returnSuspendValue2(/* = */) +} + +@ObjCName(name = "returnSuspendValue2") +@Throws(exceptionClasses = [Exception::class]) +suspend fun MyAndroidXViewModel2.returnSuspendValue2Native(): String { + val tmp_1: CoroutineScope = (/* = */) + return returnSuspendValue2(/* = */) +} + +@ObjCName(name = "returnSuspendValue2") +@Throws(exceptionClasses = [Exception::class]) +suspend fun MyObservableViewModel1.returnSuspendValue2Native(): String { + val tmp_2: CoroutineScope = (/* = .() */) + return returnSuspendValue2(/* = */) +} + +@ObjCName(name = "returnSuspendValue2") +@Throws(exceptionClasses = [Exception::class]) +suspend fun MyObservableViewModel2.returnSuspendValue2Native(): String { + val tmp_3: CoroutineScope = (/* = .() */) + return returnSuspendValue2(/* = */) +} + +// FILE: androidxviewmodel.kt +package androidx.lifecycle + +open class ViewModel { + constructor() /* primary */ { + super/*Any*/() + /* () */ + + } + +} + +val ViewModel.viewModelScope: CoroutineScope + get(): CoroutineScope { + return CoroutineScope(context = Dispatchers.()) + } + +// FILE: observableviewmodel.kt +package com.rickclephas.kmp.observableviewmodel + +open class ViewModel : ViewModel { + val viewModelScope: ViewModelScope + field = ViewModelScope() + get + + constructor() /* primary */ { + super/*ViewModel*/() + /* () */ + + } + +} + +class ViewModelScope { + constructor() /* primary */ { + super/*Any*/() + /* () */ + + } + +} + +val ViewModelScope.coroutineScope: CoroutineScope + get(): CoroutineScope { + return CoroutineScope(context = Dispatchers.()) + } + +// FILE: viewmodelscope.kt + +@NativeCoroutineScope +internal val unusedCoroutineScope: CoroutineScope + field = CoroutineScope(context = Dispatchers.()) + internal get + +class MyAndroidXViewModel1 : ViewModel { + constructor() /* primary */ { + super/*ViewModel*/() + /* () */ + + } + + @ObjCName(name = "returnSuspendValue1") + @Throws(exceptionClasses = [Exception::class]) + suspend fun returnSuspendValue1Native(): String { + val tmp_0: CoroutineScope = (/* = */) + return .returnSuspendValue1() + } + + @NativeCoroutines + suspend fun returnSuspendValue1(): String { + return "OK1" + } + +} + +class MyAndroidXViewModel2 : ViewModel { + @NativeCoroutineScope + internal val customCoroutineScope: CoroutineScope + field = CoroutineScope(context = Dispatchers.()) + internal get + + constructor() /* primary */ { + super/*ViewModel*/() + /* () */ + + } + + @ObjCName(name = "returnSuspendValue1") + @Throws(exceptionClasses = [Exception::class]) + suspend fun returnSuspendValue1Native(): String { + val tmp_1: CoroutineScope = .() + return .returnSuspendValue1() + } + + @NativeCoroutines + suspend fun returnSuspendValue1(): String { + return "OK5" + } + +} + +class MyObservableViewModel1 : ViewModel { + constructor() /* primary */ { + super/*ViewModel*/() + /* () */ + + } + + @ObjCName(name = "returnSuspendValue1") + @Throws(exceptionClasses = [Exception::class]) + suspend fun returnSuspendValue1Native(): String { + val tmp_2: CoroutineScope = (/* = .() */) + return .returnSuspendValue1() + } + + @NativeCoroutines + suspend fun returnSuspendValue1(): String { + return "OK3" + } + +} + +class MyObservableViewModel2 : ViewModel { + @NativeCoroutineScope + internal val customCoroutineScope: CoroutineScope + field = CoroutineScope(context = Dispatchers.()) + internal get + + constructor() /* primary */ { + super/*ViewModel*/() + /* () */ + + } + + @ObjCName(name = "returnSuspendValue1") + @Throws(exceptionClasses = [Exception::class]) + suspend fun returnSuspendValue1Native(): String { + val tmp_3: CoroutineScope = .() + return .returnSuspendValue1() + } + + @NativeCoroutines + suspend fun returnSuspendValue1(): String { + return "OK7" + } + +} + +fun box(): String { + return runBoxTest(action = local suspend fun BoxTest.() { + $this$runBoxTest.await(result = local suspend fun (): String { + return MyAndroidXViewModel1().returnSuspendValue1Native() + } +) + $this$runBoxTest.await(result = local suspend fun (): String { + return returnSuspendValue2Native(/* = MyAndroidXViewModel1() */) + } +) + $this$runBoxTest.await(result = local suspend fun (): String { + return MyObservableViewModel1().returnSuspendValue1Native() + } +) + $this$runBoxTest.await(result = local suspend fun (): String { + return returnSuspendValue2Native(/* = MyObservableViewModel1() */) + } +) + $this$runBoxTest.await(result = local suspend fun (): String { + return MyAndroidXViewModel2().returnSuspendValue1Native() + } +) + $this$runBoxTest.await(result = local suspend fun (): String { + return returnSuspendValue2Native(/* = MyAndroidXViewModel2() */) + } +) + $this$runBoxTest.await(result = local suspend fun (): String { + return MyObservableViewModel2().returnSuspendValue1Native() + } +) + $this$runBoxTest.await(result = local suspend fun (): String { + return returnSuspendValue2Native(/* = MyObservableViewModel2() */) + } +) + } +) +} + +@NativeCoroutines +suspend fun MyAndroidXViewModel1.returnSuspendValue2(): String { + return "OK2" +} + +@NativeCoroutines +suspend fun MyAndroidXViewModel2.returnSuspendValue2(): String { + return "OK6" +} + +@NativeCoroutines +suspend fun MyObservableViewModel1.returnSuspendValue2(): String { + return "OK4" +} + +@NativeCoroutines +suspend fun MyObservableViewModel2.returnSuspendValue2(): String { + return "OK8" +} diff --git a/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/viewmodelscope.fir.txt b/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/viewmodelscope.fir.txt new file mode 100644 index 00000000..45d5c43e --- /dev/null +++ b/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/viewmodelscope.fir.txt @@ -0,0 +1,170 @@ +FILE: androidxviewmodel.kt + package androidx.lifecycle + + public open class ViewModel : R|kotlin/Any| { + public constructor(): R|androidx/lifecycle/ViewModel| { + super() + } + + } + public final val R|androidx/lifecycle/ViewModel|.viewModelScope: R|kotlinx/coroutines/CoroutineScope| + public get(): R|kotlinx/coroutines/CoroutineScope| { + ^ R|kotlinx/coroutines/CoroutineScope|(Q|kotlinx/coroutines/Dispatchers|.R|kotlinx/coroutines/Dispatchers.Default|) + } +FILE: observableviewmodel.kt + package com.rickclephas.kmp.observableviewmodel + + public final class ViewModelScope : R|kotlin/Any| { + public constructor(): R|com/rickclephas/kmp/observableviewmodel/ViewModelScope| { + super() + } + + } + public final val R|com/rickclephas/kmp/observableviewmodel/ViewModelScope|.coroutineScope: R|kotlinx/coroutines/CoroutineScope| + public get(): R|kotlinx/coroutines/CoroutineScope| { + ^ R|kotlinx/coroutines/CoroutineScope|(Q|kotlinx/coroutines/Dispatchers|.R|kotlinx/coroutines/Dispatchers.Default|) + } + public open class ViewModel : R|androidx/lifecycle/ViewModel| { + public constructor(): R|com/rickclephas/kmp/observableviewmodel/ViewModel| { + super() + } + + public final val viewModelScope: R|com/rickclephas/kmp/observableviewmodel/ViewModelScope| = R|com/rickclephas/kmp/observableviewmodel/ViewModelScope.ViewModelScope|() + public get(): R|com/rickclephas/kmp/observableviewmodel/ViewModelScope| + + } +FILE: viewmodelscope.kt + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutineScope|() internal final val unusedCoroutineScope: R|kotlinx/coroutines/CoroutineScope| = R|kotlinx/coroutines/CoroutineScope|(Q|kotlinx/coroutines/Dispatchers|.R|kotlinx/coroutines/Dispatchers.Default|) + internal get(): R|kotlinx/coroutines/CoroutineScope| + public final class MyAndroidXViewModel1 : R|androidx/lifecycle/ViewModel| { + public constructor(): R|MyAndroidXViewModel1| { + super() + } + + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final suspend fun returnSuspendValue1(): R|kotlin/String| { + ^returnSuspendValue1 String(OK1) + } + + @R|kotlin/native/ObjCName|(name = String(returnSuspendValue1)) @R|kotlin/Throws|(exceptionClasses = vararg((Q|kotlin/Exception|))) public final suspend fun returnSuspendValue1Native(): R|kotlin/String| { + ::R|/MyAndroidXViewModel1.returnSuspendValue1| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + + } + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final suspend fun R|MyAndroidXViewModel1|.returnSuspendValue2(): R|kotlin/String| { + ^returnSuspendValue2 String(OK2) + } + public final class MyObservableViewModel1 : R|com/rickclephas/kmp/observableviewmodel/ViewModel| { + public constructor(): R|MyObservableViewModel1| { + super() + } + + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final suspend fun returnSuspendValue1(): R|kotlin/String| { + ^returnSuspendValue1 String(OK3) + } + + @R|kotlin/native/ObjCName|(name = String(returnSuspendValue1)) @R|kotlin/Throws|(exceptionClasses = vararg((Q|kotlin/Exception|))) public final suspend fun returnSuspendValue1Native(): R|kotlin/String| { + ::R|/MyObservableViewModel1.returnSuspendValue1| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + + } + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final suspend fun R|MyObservableViewModel1|.returnSuspendValue2(): R|kotlin/String| { + ^returnSuspendValue2 String(OK4) + } + public final class MyAndroidXViewModel2 : R|androidx/lifecycle/ViewModel| { + public constructor(): R|MyAndroidXViewModel2| { + super() + } + + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutineScope|() internal final val customCoroutineScope: R|kotlinx/coroutines/CoroutineScope| = R|kotlinx/coroutines/CoroutineScope|(Q|kotlinx/coroutines/Dispatchers|.R|kotlinx/coroutines/Dispatchers.Default|) + internal get(): R|kotlinx/coroutines/CoroutineScope| + + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final suspend fun returnSuspendValue1(): R|kotlin/String| { + ^returnSuspendValue1 String(OK5) + } + + @R|kotlin/native/ObjCName|(name = String(returnSuspendValue1)) @R|kotlin/Throws|(exceptionClasses = vararg((Q|kotlin/Exception|))) public final suspend fun returnSuspendValue1Native(): R|kotlin/String| { + ::R|/MyAndroidXViewModel2.returnSuspendValue1| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + + } + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final suspend fun R|MyAndroidXViewModel2|.returnSuspendValue2(): R|kotlin/String| { + ^returnSuspendValue2 String(OK6) + } + public final class MyObservableViewModel2 : R|com/rickclephas/kmp/observableviewmodel/ViewModel| { + public constructor(): R|MyObservableViewModel2| { + super() + } + + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutineScope|() internal final val customCoroutineScope: R|kotlinx/coroutines/CoroutineScope| = R|kotlinx/coroutines/CoroutineScope|(Q|kotlinx/coroutines/Dispatchers|.R|kotlinx/coroutines/Dispatchers.Default|) + internal get(): R|kotlinx/coroutines/CoroutineScope| + + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final suspend fun returnSuspendValue1(): R|kotlin/String| { + ^returnSuspendValue1 String(OK7) + } + + @R|kotlin/native/ObjCName|(name = String(returnSuspendValue1)) @R|kotlin/Throws|(exceptionClasses = vararg((Q|kotlin/Exception|))) public final suspend fun returnSuspendValue1Native(): R|kotlin/String| { + ::R|/MyObservableViewModel2.returnSuspendValue1| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + + } + @R|com/rickclephas/kmp/nativecoroutines/NativeCoroutines|() public final suspend fun R|MyObservableViewModel2|.returnSuspendValue2(): R|kotlin/String| { + ^returnSuspendValue2 String(OK8) + } + public final fun box(): R|kotlin/String| { + ^box R|com/rickclephas/kmp/nativecoroutines/runBoxTest|( = runBoxTest@fun R|com/rickclephas/kmp/nativecoroutines/BoxTest|.(): R|kotlin/Unit| { + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.await|( = await@fun (): R|kotlin/String| { + ^ R|/MyAndroidXViewModel1.MyAndroidXViewModel1|().R|/MyAndroidXViewModel1.returnSuspendValue1Native|() + } + ) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.await|( = await@fun (): R|kotlin/String| { + ^ R|/MyAndroidXViewModel1.MyAndroidXViewModel1|().R|/returnSuspendValue2Native|() + } + ) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.await|( = await@fun (): R|kotlin/String| { + ^ R|/MyObservableViewModel1.MyObservableViewModel1|().R|/MyObservableViewModel1.returnSuspendValue1Native|() + } + ) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.await|( = await@fun (): R|kotlin/String| { + ^ R|/MyObservableViewModel1.MyObservableViewModel1|().R|/returnSuspendValue2Native|() + } + ) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.await|( = await@fun (): R|kotlin/String| { + ^ R|/MyAndroidXViewModel2.MyAndroidXViewModel2|().R|/MyAndroidXViewModel2.returnSuspendValue1Native|() + } + ) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.await|( = await@fun (): R|kotlin/String| { + ^ R|/MyAndroidXViewModel2.MyAndroidXViewModel2|().R|/returnSuspendValue2Native|() + } + ) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.await|( = await@fun (): R|kotlin/String| { + ^ R|/MyObservableViewModel2.MyObservableViewModel2|().R|/MyObservableViewModel2.returnSuspendValue1Native|() + } + ) + this@R|special/anonymous|.R|com/rickclephas/kmp/nativecoroutines/BoxTest.await|( = await@fun (): R|kotlin/String| { + ^ R|/MyObservableViewModel2.MyObservableViewModel2|().R|/returnSuspendValue2Native|() + } + ) + } + ) + } +FILE: /__GENERATED__CALLABLES__.kt + @R|kotlin/native/ObjCName|(name = String(returnSuspendValue2)) @R|kotlin/Throws|(exceptionClasses = vararg((Q|kotlin/Exception|))) public final suspend fun R|MyAndroidXViewModel1|.returnSuspendValue2Native(): R|kotlin/String| { + ::R|/returnSuspendValue2| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/native/ObjCName|(name = String(returnSuspendValue2)) @R|kotlin/Throws|(exceptionClasses = vararg((Q|kotlin/Exception|))) public final suspend fun R|MyObservableViewModel1|.returnSuspendValue2Native(): R|kotlin/String| { + ::R|/returnSuspendValue2| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/native/ObjCName|(name = String(returnSuspendValue2)) @R|kotlin/Throws|(exceptionClasses = vararg((Q|kotlin/Exception|))) public final suspend fun R|MyAndroidXViewModel2|.returnSuspendValue2Native(): R|kotlin/String| { + ::R|/returnSuspendValue2| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } + @R|kotlin/native/ObjCName|(name = String(returnSuspendValue2)) @R|kotlin/Throws|(exceptionClasses = vararg((Q|kotlin/Exception|))) public final suspend fun R|MyObservableViewModel2|.returnSuspendValue2Native(): R|kotlin/String| { + ::R|/returnSuspendValue2| + R|kotlin/TODO|(String(KMP-NativeCoroutines generated declaration must be implemented in IR)) + } diff --git a/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/viewmodelscope.kt b/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/viewmodelscope.kt new file mode 120000 index 00000000..eb585a5e --- /dev/null +++ b/kmp-nativecoroutines-compiler/src/testData/codegen/swift5/viewmodelscope.kt @@ -0,0 +1 @@ +../viewmodelscope.kt \ No newline at end of file diff --git a/kmp-nativecoroutines-core/src/compilerTestMain/kotlin/com/rickclephas/kmp/nativecoroutines/BoxTest.kt b/kmp-nativecoroutines-core/src/compilerTestMain/kotlin/com/rickclephas/kmp/nativecoroutines/BoxTest.kt index 1001ac0e..59717dd2 100644 --- a/kmp-nativecoroutines-core/src/compilerTestMain/kotlin/com/rickclephas/kmp/nativecoroutines/BoxTest.kt +++ b/kmp-nativecoroutines-core/src/compilerTestMain/kotlin/com/rickclephas/kmp/nativecoroutines/BoxTest.kt @@ -106,6 +106,16 @@ public class BoxTest internal constructor() { collect(nativeFlow, maxValues) } + @OptIn(ExperimentalTypeInference::class) + @OverloadResolutionByLambdaReturnType + @JvmName("awaitAndCollectNativeFlow") + public suspend fun awaitAndCollect( + maxValues: Int? = null, + nativeFlow: suspend () -> NativeFlow + ) { + collect(nativeFlow(), maxValues) + } + @OptIn(ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType public suspend fun awaitAndCollect( @@ -123,6 +133,15 @@ public class BoxTest internal constructor() { await?>(nativeSuspend) } + @OptIn(ExperimentalTypeInference::class) + @OverloadResolutionByLambdaReturnType + @JvmName("awaitAndCollectNullNativeFlow") + public suspend fun awaitAndCollectNull( + nativeFlow: suspend () -> NativeFlow? + ) { + await?>(nativeFlow) + } + @OptIn(ExperimentalTypeInference::class) @OverloadResolutionByLambdaReturnType public suspend fun awaitAndCollectNull( diff --git a/kmp-nativecoroutines-gradle-plugin/src/main/kotlin/com/rickclephas/kmp/nativecoroutines/gradle/KmpNativeCoroutinesExtension.kt b/kmp-nativecoroutines-gradle-plugin/src/main/kotlin/com/rickclephas/kmp/nativecoroutines/gradle/KmpNativeCoroutinesExtension.kt index 6fa71b96..d7c82938 100644 --- a/kmp-nativecoroutines-gradle-plugin/src/main/kotlin/com/rickclephas/kmp/nativecoroutines/gradle/KmpNativeCoroutinesExtension.kt +++ b/kmp-nativecoroutines-gradle-plugin/src/main/kotlin/com/rickclephas/kmp/nativecoroutines/gradle/KmpNativeCoroutinesExtension.kt @@ -44,7 +44,7 @@ public open class KmpNativeCoroutinesExtension { /** * The compatibility version of Swift export used by the plugin. */ - public val swiftExportVersion: Long = 0b11 + public val swiftExportVersion: Long = 0b101 } public enum class ExposedSeverity { diff --git a/sample/Async/AsyncFunctionIntegrationTests.swift b/sample/Async/AsyncFunctionIntegrationTests.swift index 8cfe67d4..355f6ca1 100644 --- a/sample/Async/AsyncFunctionIntegrationTests.swift +++ b/sample/Async/AsyncFunctionIntegrationTests.swift @@ -8,6 +8,9 @@ import XCTest import KMPNativeCoroutinesAsync import NativeCoroutinesSampleShared +#if NATIVE_COROUTINES_SWIFT_EXPORT +import KotlinRuntimeSupport +#endif class AsyncFunctionIntegrationTests: XCTestCase { @@ -35,44 +38,61 @@ class AsyncFunctionIntegrationTests: XCTestCase { await assertJobCompleted(integrationTests) } - #if !NATIVE_COROUTINES_SWIFT_EXPORT - /// Exception throwing isn't supported yet, see https://youtrack.jetbrains.com/issue/KT-80971 func testExceptionReceived() async { - let integrationTests = SuspendIntegrationTests() + let integrationTests = KotlinSuspendIntegrationTests() let sendMessage = randomString() do { + #if NATIVE_COROUTINES_SWIFT_EXPORT + _ = try await asyncFunction(for: integrationTests.throwExceptionNative(message: sendMessage, delay: 1000)) + #else _ = try await asyncFunction(for: integrationTests.throwException(message: sendMessage, delay: 1000)) + #endif XCTFail("Function should complete with an error") } catch { + #if NATIVE_COROUTINES_SWIFT_EXPORT + XCTAssertTrue(error is KotlinError, "Error isn't a KotlinError") + let error = error as! KotlinError + XCTAssertEqual(error.description, sendMessage, "Error has incorrect description") + // TODO: Get actual Kotlin Exception + #else let error = error as NSError XCTAssertEqual(error.localizedDescription, sendMessage, "Error has incorrect localizedDescription") let exception = error.userInfo["KotlinException"] XCTAssertTrue(exception is KotlinException, "Error doesn't contain the Kotlin exception") + #endif } await assertJobCompleted(integrationTests) } - #endif #if !NATIVE_COROUTINES_SWIFT_EXPORT - /// Exception throwing isn't supported yet, see https://youtrack.jetbrains.com/issue/KT-80971 + /// Error throwing isn't supported yet, see https://youtrack.jetbrains.com/issue/KT-83389 func testErrorReceived() async { - let integrationTests = SuspendIntegrationTests() + let integrationTests = KotlinSuspendIntegrationTests() let sendMessage = randomString() do { + #if NATIVE_COROUTINES_SWIFT_EXPORT + _ = try await asyncFunction(for: integrationTests.throwErrorNative(message: sendMessage, delay: 1000)) + #else _ = try await asyncFunction(for: integrationTests.throwError(message: sendMessage, delay: 1000)) + #endif XCTFail("Function should complete with an error") } catch { + #if NATIVE_COROUTINES_SWIFT_EXPORT + XCTAssertTrue(error is KotlinError, "Error isn't a KotlinError") + let error = error as! KotlinError + XCTAssertEqual(error.description, sendMessage, "Error has incorrect description") + // TODO: Get actual Kotlin Error + #else let error = error as NSError XCTAssertEqual(error.localizedDescription, sendMessage, "Error has incorrect localizedDescription") let exception = error.userInfo["KotlinException"] XCTAssertTrue(exception is KotlinThrowable, "Error doesn't contain the Kotlin error") + #endif } await assertJobCompleted(integrationTests) } #endif - #if !NATIVE_COROUTINES_SWIFT_EXPORT - /// Cancellation isn't supported yet, see https://youtrack.jetbrains.com/issue/KT-80970 func testCancellation() async { let integrationTests = KotlinSuspendIntegrationTests() let handle = Task { @@ -102,7 +122,6 @@ class AsyncFunctionIntegrationTests: XCTestCase { XCTFail("Function should fail with an error") } } - #endif #if !NATIVE_COROUTINES_SWIFT_EXPORT /// Suspend functions returning Unit aren't supported yet, see https://youtrack.jetbrains.com/issue/KT-81593 diff --git a/sample/Async/AsyncResultIntegrationTests.swift b/sample/Async/AsyncResultIntegrationTests.swift index 96aefbab..f1ffe567 100644 --- a/sample/Async/AsyncResultIntegrationTests.swift +++ b/sample/Async/AsyncResultIntegrationTests.swift @@ -8,6 +8,9 @@ import XCTest import KMPNativeCoroutinesAsync import NativeCoroutinesSampleShared +#if NATIVE_COROUTINES_SWIFT_EXPORT +import KotlinRuntimeSupport +#endif class AsyncResultIntegrationTests: XCTestCase { @@ -15,7 +18,7 @@ class AsyncResultIntegrationTests: XCTestCase { let integrationTests = KotlinSuspendIntegrationTests() let sendValue = randomInt() #if NATIVE_COROUTINES_SWIFT_EXPORT - let result = await asyncResult(for: await integrationTests.returnValueNative(value: sendValue, delay: 1000)) + let result = await asyncResult(for: try await integrationTests.returnValueNative(value: sendValue, delay: 1000)) #else let result = await asyncResult(for: integrationTests.returnValue(value: sendValue, delay: 1000)) #endif @@ -34,7 +37,7 @@ class AsyncResultIntegrationTests: XCTestCase { func testNilValueReceived() async { let integrationTests = KotlinSuspendIntegrationTests() #if NATIVE_COROUTINES_SWIFT_EXPORT - let result = await asyncResult(for: await integrationTests.returnNullNative(delay: 1000)) + let result = await asyncResult(for: try await integrationTests.returnNullNative(delay: 1000)) #else let result = await asyncResult(for: integrationTests.returnNull(delay: 1000)) #endif @@ -46,54 +49,80 @@ class AsyncResultIntegrationTests: XCTestCase { await assertJobCompleted(integrationTests) } - #if !NATIVE_COROUTINES_SWIFT_EXPORT - /// Exception throwing isn't supported yet, see https://youtrack.jetbrains.com/issue/KT-80971 func testExceptionReceived() async { - let integrationTests = SuspendIntegrationTests() + let integrationTests = KotlinSuspendIntegrationTests() let sendMessage = randomString() + #if NATIVE_COROUTINES_SWIFT_EXPORT + let result = await asyncResult(for: try await integrationTests.throwExceptionNative(message: sendMessage, delay: 1000)) + #else let result = await asyncResult(for: integrationTests.throwException(message: sendMessage, delay: 1000)) + #endif guard case let .failure(error) = result else { XCTFail("Function should complete with an error") return } + #if NATIVE_COROUTINES_SWIFT_EXPORT + XCTAssertTrue(error is KotlinError, "Error isn't a KotlinError") + let kotlinError = error as! KotlinError + XCTAssertEqual(kotlinError.description, sendMessage, "Error has incorrect description") + // TODO: Get actual Kotlin Exception + #else let nsError = error as NSError XCTAssertEqual(nsError.localizedDescription, sendMessage, "Error has incorrect localizedDescription") let exception = nsError.userInfo["KotlinException"] XCTAssertTrue(exception is KotlinException, "Error doesn't contain the Kotlin exception") + #endif await assertJobCompleted(integrationTests) } - #endif #if !NATIVE_COROUTINES_SWIFT_EXPORT - /// Exception throwing isn't supported yet, see https://youtrack.jetbrains.com/issue/KT-80971 + /// Error throwing isn't supported yet, see https://youtrack.jetbrains.com/issue/KT-83389 func testErrorReceived() async { - let integrationTests = SuspendIntegrationTests() + let integrationTests = KotlinSuspendIntegrationTests() let sendMessage = randomString() + #if NATIVE_COROUTINES_SWIFT_EXPORT + let result = await asyncResult(for: try await integrationTests.throwErrorNative(message: sendMessage, delay: 1000)) + #else let result = await asyncResult(for: integrationTests.throwError(message: sendMessage, delay: 1000)) + #endif guard case let .failure(error) = result else { XCTFail("Function should complete with an error") return } + #if NATIVE_COROUTINES_SWIFT_EXPORT + XCTAssertTrue(error is KotlinError, "Error isn't a KotlinError") + let kotlinError = error as! KotlinError + XCTAssertEqual(kotlinError.description, sendMessage, "Error has incorrect description") + // TODO: Get actual Kotlin Error + #else let nsError = error as NSError XCTAssertEqual(nsError.localizedDescription, sendMessage, "Error has incorrect localizedDescription") let exception = nsError.userInfo["KotlinException"] XCTAssertTrue(exception is KotlinThrowable, "Error doesn't contain the Kotlin error") + #endif await assertJobCompleted(integrationTests) } #endif - #if !NATIVE_COROUTINES_SWIFT_EXPORT - /// Cancellation isn't supported yet, see https://youtrack.jetbrains.com/issue/KT-80970 func testCancellation() async { - let integrationTests = SuspendIntegrationTests() + let integrationTests = KotlinSuspendIntegrationTests() let handle = Task { + #if NATIVE_COROUTINES_SWIFT_EXPORT + return await asyncResult(for: try await integrationTests.returnFromCallbackNative(delay: 3000) { + XCTFail("Callback shouldn't be invoked") + return 1 + }) + #else return await asyncResult(for: integrationTests.returnFromCallback(delay: 3000) { XCTFail("Callback shouldn't be invoked") return KotlinInt(int: 1) }) + #endif } DispatchQueue.global().asyncAfter(deadline: .now() + 1) { + #if !NATIVE_COROUTINES_SWIFT_EXPORT XCTAssertEqual(integrationTests.activeJobCount, 1, "There should be 1 active job") + #endif handle.cancel() } let handleResult = await handle.result @@ -108,7 +137,6 @@ class AsyncResultIntegrationTests: XCTestCase { XCTFail("Function should fail with an error") } } - #endif #if !NATIVE_COROUTINES_SWIFT_EXPORT /// Suspend functions returning Unit aren't supported yet, see https://youtrack.jetbrains.com/issue/KT-81593 diff --git a/sample/Combine/CombineFutureIntegrationTests.swift b/sample/Combine/CombineFutureIntegrationTests.swift index e3e20da4..cbb9d038 100644 --- a/sample/Combine/CombineFutureIntegrationTests.swift +++ b/sample/Combine/CombineFutureIntegrationTests.swift @@ -8,6 +8,9 @@ import XCTest import KMPNativeCoroutinesCombine import NativeCoroutinesSampleShared +#if NATIVE_COROUTINES_SWIFT_EXPORT +import KotlinRuntimeSupport +#endif class CombineFutureIntegrationTests: XCTestCase { @@ -15,7 +18,7 @@ class CombineFutureIntegrationTests: XCTestCase { let integrationTests = KotlinSuspendIntegrationTests() let sendValue = randomInt() #if NATIVE_COROUTINES_SWIFT_EXPORT - let future = createFuture(for: { await integrationTests.returnValueNative(value: sendValue, delay: 1000) }) + let future = createFuture(for: { try await integrationTests.returnValueNative(value: sendValue, delay: 1000) }) #else let future = createFuture(for: integrationTests.returnValue(value: sendValue, delay: 1000)) #endif @@ -46,7 +49,7 @@ class CombineFutureIntegrationTests: XCTestCase { func testNilValueReceived() { let integrationTests = KotlinSuspendIntegrationTests() #if NATIVE_COROUTINES_SWIFT_EXPORT - let future = createFuture(for: { await integrationTests.returnNullNative(delay: 1000) }) + let future = createFuture(for: { try await integrationTests.returnNullNative(delay: 1000) }) #else let future = createFuture(for: integrationTests.returnNull(delay: 1000)) #endif @@ -70,21 +73,30 @@ class CombineFutureIntegrationTests: XCTestCase { XCTAssertEqual(integrationTests.uncompletedJobCount, 0, "The job should have completed by now") } - #if !NATIVE_COROUTINES_SWIFT_EXPORT - /// Exception throwing isn't supported yet, see https://youtrack.jetbrains.com/issue/KT-80971 func testExceptionReceived() { - let integrationTests = SuspendIntegrationTests() + let integrationTests = KotlinSuspendIntegrationTests() let sendMessage = randomString() + #if NATIVE_COROUTINES_SWIFT_EXPORT + let future = createFuture(for: { try await integrationTests.throwExceptionNative(message: sendMessage, delay: 1000) }) + #else let future = createFuture(for: integrationTests.throwException(message: sendMessage, delay: 1000)) + #endif let valueExpectation = expectation(description: "Waiting for no value") valueExpectation.isInverted = true let completionExpectation = expectation(description: "Waiting for completion") let cancellable = future.sink { completion in if case let .failure(error) = completion { + #if NATIVE_COROUTINES_SWIFT_EXPORT + XCTAssertTrue(error is KotlinError, "Error isn't a KotlinError") + let error = error as! KotlinError + XCTAssertEqual(error.description, sendMessage, "Error has incorrect description") + // TODO: Get actual Kotlin Exception + #else let error = error as NSError XCTAssertEqual(error.localizedDescription, sendMessage, "Error has incorrect localizedDescription") let exception = error.userInfo["KotlinException"] XCTAssertTrue(exception is KotlinException, "Error doesn't contain the Kotlin exception") + #endif } else { XCTFail("Future should complete with an error") } @@ -93,27 +105,39 @@ class CombineFutureIntegrationTests: XCTestCase { valueExpectation.fulfill() } _ = cancellable // This is just to remove the unused variable warning + #if !NATIVE_COROUTINES_SWIFT_EXPORT XCTAssertEqual(integrationTests.uncompletedJobCount, 1, "There should be 1 uncompleted job") + #endif wait(for: [valueExpectation, completionExpectation], timeout: 3) XCTAssertEqual(integrationTests.uncompletedJobCount, 0, "The job should have completed by now") } - #endif #if !NATIVE_COROUTINES_SWIFT_EXPORT - /// Exception throwing isn't supported yet, see https://youtrack.jetbrains.com/issue/KT-80971 + /// Error throwing isn't supported yet, see https://youtrack.jetbrains.com/issue/KT-83389 func testErrorReceived() { - let integrationTests = SuspendIntegrationTests() + let integrationTests = KotlinSuspendIntegrationTests() let sendMessage = randomString() + #if NATIVE_COROUTINES_SWIFT_EXPORT + let future = createFuture(for: { try await integrationTests.throwErrorNative(message: sendMessage, delay: 1000) }) + #else let future = createFuture(for: integrationTests.throwError(message: sendMessage, delay: 1000)) + #endif let valueExpectation = expectation(description: "Waiting for no value") valueExpectation.isInverted = true let completionExpectation = expectation(description: "Waiting for completion") let cancellable = future.sink { completion in if case let .failure(error) = completion { + #if NATIVE_COROUTINES_SWIFT_EXPORT + XCTAssertTrue(error is KotlinError, "Error isn't a KotlinError") + let error = error as! KotlinError + XCTAssertEqual(error.description, sendMessage, "Error has incorrect description") + // TODO: Get actual Kotlin Error + #else let error = error as NSError XCTAssertEqual(error.localizedDescription, sendMessage, "Error has incorrect localizedDescription") let exception = error.userInfo["KotlinException"] XCTAssertTrue(exception is KotlinThrowable, "Error doesn't contain the Kotlin error") + #endif } else { XCTFail("Future should complete with an error") } @@ -122,7 +146,9 @@ class CombineFutureIntegrationTests: XCTestCase { valueExpectation.fulfill() } _ = cancellable // This is just to remove the unused variable warning + #if !NATIVE_COROUTINES_SWIFT_EXPORT XCTAssertEqual(integrationTests.uncompletedJobCount, 1, "There should be 1 uncompleted job") + #endif wait(for: [valueExpectation, completionExpectation], timeout: 3) XCTAssertEqual(integrationTests.uncompletedJobCount, 0, "The job should have completed by now") } @@ -131,7 +157,7 @@ class CombineFutureIntegrationTests: XCTestCase { func testNotOnMainThread() { let integrationTests = KotlinSuspendIntegrationTests() #if NATIVE_COROUTINES_SWIFT_EXPORT - let future = createFuture(for: { await integrationTests.returnValueNative(value: 1, delay: 1000) }) + let future = createFuture(for: { try await integrationTests.returnValueNative(value: 1, delay: 1000) }) #else let future = createFuture(for: integrationTests.returnValue(value: 1, delay: 1000)) #endif @@ -149,16 +175,21 @@ class CombineFutureIntegrationTests: XCTestCase { wait(for: [valueExpectation, completionExpectation], timeout: 3) } - #if !NATIVE_COROUTINES_SWIFT_EXPORT - /// Cancellation isn't supported yet, see https://youtrack.jetbrains.com/issue/KT-80970 func testCancellation() { - let integrationTests = SuspendIntegrationTests() + let integrationTests = KotlinSuspendIntegrationTests() let callbackExpectation = expectation(description: "Waiting for callback not to get called") callbackExpectation.isInverted = true + #if NATIVE_COROUTINES_SWIFT_EXPORT + let future = createFuture(for: { try await integrationTests.returnFromCallbackNative(delay: 3000) { + callbackExpectation.fulfill() + return 1 + }}) + #else let future = createFuture(for: integrationTests.returnFromCallback(delay: 3000) { callbackExpectation.fulfill() return KotlinInt(int: 1) }) + #endif let valueExpectation = expectation(description: "Waiting for value") valueExpectation.isInverted = true let completionExpectation = expectation(description: "Waiting for completion") @@ -168,15 +199,18 @@ class CombineFutureIntegrationTests: XCTestCase { } receiveValue: { _ in valueExpectation.fulfill() } + #if !NATIVE_COROUTINES_SWIFT_EXPORT XCTAssertEqual(integrationTests.uncompletedJobCount, 1, "There should be 1 uncompleted job") + #endif delay(1) + #if !NATIVE_COROUTINES_SWIFT_EXPORT XCTAssertEqual(integrationTests.activeJobCount, 1, "There should be 1 active job") + #endif cancellable.cancel() XCTAssertEqual(integrationTests.activeJobCount, 0, "The job shouldn't be active anymore") wait(for: [callbackExpectation, valueExpectation, completionExpectation], timeout: 3) XCTAssertEqual(integrationTests.uncompletedJobCount, 0, "The job should have completed by now") } - #endif #if !NATIVE_COROUTINES_SWIFT_EXPORT func testValuesReceived() { diff --git a/sample/Combine/RandomLettersCombineViewModel.swift b/sample/Combine/RandomLettersCombineViewModel.swift index f92d1b15..8107a602 100644 --- a/sample/Combine/RandomLettersCombineViewModel.swift +++ b/sample/Combine/RandomLettersCombineViewModel.swift @@ -23,7 +23,7 @@ class RandomLettersCombineViewModel: RandomLettersViewModel { isLoading = true result = nil #if NATIVE_COROUTINES_SWIFT_EXPORT - let future = createFuture(for: { await self.randomLettersGenerator.getRandomLettersNative(throwException: throwException) }) + let future = createFuture(for: { try await self.randomLettersGenerator.getRandomLettersNative(throwException: throwException) }) #else let future = createFuture(for: randomLettersGenerator.getRandomLetters(throwException: throwException)) #endif diff --git a/sample/RxSwift/RandomLettersRxSwiftViewModel.swift b/sample/RxSwift/RandomLettersRxSwiftViewModel.swift index 114c28bd..cdb71115 100644 --- a/sample/RxSwift/RandomLettersRxSwiftViewModel.swift +++ b/sample/RxSwift/RandomLettersRxSwiftViewModel.swift @@ -22,7 +22,7 @@ class RandomLettersRxSwiftViewModel: RandomLettersViewModel { isLoading = true result = nil #if NATIVE_COROUTINES_SWIFT_EXPORT - let single = createSingle(for: { await self.randomLettersGenerator.getRandomLettersNative(throwException: throwException) }) + let single = createSingle(for: { try await self.randomLettersGenerator.getRandomLettersNative(throwException: throwException) }) #else let single = createSingle(for: randomLettersGenerator.getRandomLetters(throwException: throwException)) #endif diff --git a/sample/RxSwift/RxSwiftSingleIntegrationTests.swift b/sample/RxSwift/RxSwiftSingleIntegrationTests.swift index 52c4692e..9a089e02 100644 --- a/sample/RxSwift/RxSwiftSingleIntegrationTests.swift +++ b/sample/RxSwift/RxSwiftSingleIntegrationTests.swift @@ -8,6 +8,9 @@ import XCTest import KMPNativeCoroutinesRxSwift import NativeCoroutinesSampleShared +#if NATIVE_COROUTINES_SWIFT_EXPORT +import KotlinRuntimeSupport +#endif class RxSwiftSingleIntegrationTests: XCTestCase { @@ -15,7 +18,7 @@ class RxSwiftSingleIntegrationTests: XCTestCase { let integrationTests = KotlinSuspendIntegrationTests() let sendValue = randomInt() #if NATIVE_COROUTINES_SWIFT_EXPORT - let single = createSingle(for: { await integrationTests.returnValueNative(value: sendValue, delay: 1000) }) + let single = createSingle(for: { try await integrationTests.returnValueNative(value: sendValue, delay: 1000) }) #else let single = createSingle(for: integrationTests.returnValue(value: sendValue, delay: 1000)) #endif @@ -45,7 +48,7 @@ class RxSwiftSingleIntegrationTests: XCTestCase { func testNilValueReceived() { let integrationTests = KotlinSuspendIntegrationTests() #if NATIVE_COROUTINES_SWIFT_EXPORT - let single = createSingle(for: { await integrationTests.returnNullNative(delay: 1000) }) + let single = createSingle(for: { try await integrationTests.returnNullNative(delay: 1000) }) #else let single = createSingle(for: integrationTests.returnNull(delay: 1000)) #endif @@ -68,12 +71,14 @@ class RxSwiftSingleIntegrationTests: XCTestCase { XCTAssertEqual(integrationTests.uncompletedJobCount, 0, "The job should have completed by now") } - #if !NATIVE_COROUTINES_SWIFT_EXPORT - /// Exception throwing isn't supported yet, see https://youtrack.jetbrains.com/issue/KT-80971 func testExceptionReceived() { - let integrationTests = SuspendIntegrationTests() + let integrationTests = KotlinSuspendIntegrationTests() let sendMessage = randomString() + #if NATIVE_COROUTINES_SWIFT_EXPORT + let single = createSingle(for: { try await integrationTests.throwExceptionNative(message: sendMessage, delay: 1000) }) + #else let single = createSingle(for: integrationTests.throwException(message: sendMessage, delay: 1000)) + #endif let valueExpectation = expectation(description: "Waiting for no value") valueExpectation.isInverted = true let errorExpectation = expectation(description: "Waiting for error") @@ -81,27 +86,39 @@ class RxSwiftSingleIntegrationTests: XCTestCase { let disposable = single.subscribe(onSuccess: { _ in valueExpectation.fulfill() }, onFailure: { error in + #if NATIVE_COROUTINES_SWIFT_EXPORT + XCTAssertTrue(error is KotlinError, "Error isn't a KotlinError") + let error = error as! KotlinError + XCTAssertEqual(error.description, sendMessage, "Error has incorrect description") + // TODO: Get actual Kotlin Exception + #else let error = error as NSError XCTAssertEqual(error.localizedDescription, sendMessage, "Error has incorrect localizedDescription") let exception = error.userInfo["KotlinException"] XCTAssertTrue(exception is KotlinException, "Error doesn't contain the Kotlin exception") + #endif errorExpectation.fulfill() }, onDisposed: { disposedExpectation.fulfill() }) _ = disposable // This is just to remove the unused variable warning + #if !NATIVE_COROUTINES_SWIFT_EXPORT XCTAssertEqual(integrationTests.uncompletedJobCount, 1, "There should be 1 uncompleted job") + #endif wait(for: [valueExpectation, errorExpectation, disposedExpectation], timeout: 3) XCTAssertEqual(integrationTests.uncompletedJobCount, 0, "The job should have completed by now") } - #endif #if !NATIVE_COROUTINES_SWIFT_EXPORT - /// Exception throwing isn't supported yet, see https://youtrack.jetbrains.com/issue/KT-80971 + /// Error throwing isn't supported yet, see https://youtrack.jetbrains.com/issue/KT-83389 func testErrorReceived() { - let integrationTests = SuspendIntegrationTests() + let integrationTests = KotlinSuspendIntegrationTests() let sendMessage = randomString() + #if NATIVE_COROUTINES_SWIFT_EXPORT + let single = createSingle(for: { try await integrationTests.throwErrorNative(message: sendMessage, delay: 1000) }) + #else let single = createSingle(for: integrationTests.throwError(message: sendMessage, delay: 1000)) + #endif let valueExpectation = expectation(description: "Waiting for no value") valueExpectation.isInverted = true let errorExpectation = expectation(description: "Waiting for error") @@ -109,16 +126,25 @@ class RxSwiftSingleIntegrationTests: XCTestCase { let disposable = single.subscribe(onSuccess: { _ in valueExpectation.fulfill() }, onFailure: { error in + #if NATIVE_COROUTINES_SWIFT_EXPORT + XCTAssertTrue(error is KotlinError, "Error isn't a KotlinError") + let error = error as! KotlinError + XCTAssertEqual(error.description, sendMessage, "Error has incorrect description") + // TODO: Get actual Kotlin Error + #else let error = error as NSError XCTAssertEqual(error.localizedDescription, sendMessage, "Error has incorrect localizedDescription") let exception = error.userInfo["KotlinException"] XCTAssertTrue(exception is KotlinThrowable, "Error doesn't contain the Kotlin error") + #endif errorExpectation.fulfill() }, onDisposed: { disposedExpectation.fulfill() }) _ = disposable // This is just to remove the unused variable warning + #if !NATIVE_COROUTINES_SWIFT_EXPORT XCTAssertEqual(integrationTests.uncompletedJobCount, 1, "There should be 1 uncompleted job") + #endif wait(for: [valueExpectation, errorExpectation, disposedExpectation], timeout: 3) XCTAssertEqual(integrationTests.uncompletedJobCount, 0, "The job should have completed by now") } @@ -127,7 +153,7 @@ class RxSwiftSingleIntegrationTests: XCTestCase { func testNotOnMainThread() { let integrationTests = KotlinSuspendIntegrationTests() #if NATIVE_COROUTINES_SWIFT_EXPORT - let single = createSingle(for: { await integrationTests.returnValueNative(value: 1, delay: 1000) }) + let single = createSingle(for: { try await integrationTests.returnValueNative(value: 1, delay: 1000) }) #else let single = createSingle(for: integrationTests.returnValue(value: 1, delay: 1000)) #endif @@ -145,16 +171,21 @@ class RxSwiftSingleIntegrationTests: XCTestCase { wait(for: [valueExpectation, disposedExpectation], timeout: 3) } - #if !NATIVE_COROUTINES_SWIFT_EXPORT - /// Cancellation isn't supported yet, see https://youtrack.jetbrains.com/issue/KT-80970 func testCancellation() { - let integrationTests = SuspendIntegrationTests() + let integrationTests = KotlinSuspendIntegrationTests() let callbackExpectation = expectation(description: "Waiting for callback not to get called") callbackExpectation.isInverted = true + #if NATIVE_COROUTINES_SWIFT_EXPORT + let single = createSingle(for: { try await integrationTests.returnFromCallbackNative(delay: 3000) { + callbackExpectation.fulfill() + return 1 + }}) + #else let single = createSingle(for: integrationTests.returnFromCallback(delay: 3000) { callbackExpectation.fulfill() return KotlinInt(int: 1) }) + #endif let valueExpectation = expectation(description: "Waiting for value") valueExpectation.isInverted = true let errorExpectation = expectation(description: "Waiting for error") @@ -167,15 +198,18 @@ class RxSwiftSingleIntegrationTests: XCTestCase { }, onDisposed: { disposedExpectation.fulfill() }) + #if !NATIVE_COROUTINES_SWIFT_EXPORT XCTAssertEqual(integrationTests.uncompletedJobCount, 1, "There should be 1 uncompleted job") + #endif delay(1) + #if !NATIVE_COROUTINES_SWIFT_EXPORT XCTAssertEqual(integrationTests.activeJobCount, 1, "There should be 1 active job") + #endif disposable.dispose() XCTAssertEqual(integrationTests.activeJobCount, 0, "The job shouldn't be active anymore") wait(for: [callbackExpectation, valueExpectation, errorExpectation, disposedExpectation], timeout: 3) XCTAssertEqual(integrationTests.uncompletedJobCount, 0, "The job should have completed by now") } - #endif #if !NATIVE_COROUTINES_SWIFT_EXPORT func testValuesReceived() {