[K/N] Enable CopyDefaultValuesToActualPhase in dynamic driver
diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/DynamicCompilerDriver.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/DynamicCompilerDriver.kt
index 39c68b9..fad0c64 100644
--- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/DynamicCompilerDriver.kt
+++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/DynamicCompilerDriver.kt
@@ -56,11 +56,13 @@
             // TODO: Invalidate properly in PsiToIrContextImpl.dispose
             val symbolTable = SymbolTable(KonanIdSignaturer(KonanManglerDesc), IrFactoryImpl)
             val psiToIrContext = PsiToIrContextImpl(config, frontendResult.moduleDescriptor, frontendResult.bindingContext, symbolTable)
-            engine.useContext(psiToIrContext) { psiToIrEngine ->
+            val psiToIrResult = engine.useContext(psiToIrContext) { psiToIrEngine ->
                 val result = psiToIrEngine.runPsiToIr(frontendResult, isProducingLibrary = true)
                 psiToIrEngine.runSpecialBackendChecks(result)
                 result
             }
+            engine.runPhase(engine.context, CopyDefaultValuesToActualPhase, psiToIrResult.irModule)
+            psiToIrResult
         } else null
         val serializerResult = engine.runSerializer(frontendResult.moduleDescriptor, psiToIrResult)
         engine.writeKlib(serializerResult)
diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/BackendChecks.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/BackendPhases.kt
similarity index 64%
rename from kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/BackendChecks.kt
rename to kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/BackendPhases.kt
index 31b2262..7105ac4 100644
--- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/BackendChecks.kt
+++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/BackendPhases.kt
@@ -9,8 +9,11 @@
 import org.jetbrains.kotlin.backend.common.phaser.PhaseConfigurationService
 import org.jetbrains.kotlin.backend.common.phaser.PhaserState
 import org.jetbrains.kotlin.backend.common.phaser.SimpleNamedCompilerPhase
+import org.jetbrains.kotlin.backend.konan.driver.PhaseContext
 import org.jetbrains.kotlin.backend.konan.driver.PhaseEngine
+import org.jetbrains.kotlin.backend.konan.lower.ExpectToActualDefaultValueCopier
 import org.jetbrains.kotlin.backend.konan.lower.SpecialBackendChecksTraversal
+import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
 
 internal val SpecialBackendChecksPhase = object : SimpleNamedCompilerPhase<PsiToIrContext, PsiToIrResult, Unit>(
         "SpecialBackendChecks",
@@ -25,6 +28,18 @@
     }
 }
 
+
+internal val CopyDefaultValuesToActualPhase = object : SimpleNamedCompilerPhase<PhaseContext, IrModuleFragment, Unit>(
+        name = "CopyDefaultValuesToActual",
+        description = "Copy default values from expect to actual declarations"
+) {
+    override fun outputIfNotEnabled(phaseConfig: PhaseConfigurationService, phaserState: PhaserState<IrModuleFragment>, context: PhaseContext, input: IrModuleFragment) {}
+
+    override fun phaseBody(context: PhaseContext, input: IrModuleFragment) {
+        ExpectToActualDefaultValueCopier(input).process()
+    }
+}
+
 internal fun <T : PsiToIrContext> PhaseEngine<T>.runSpecialBackendChecks(psiToIrResult: PsiToIrResult) {
     runPhase(context, SpecialBackendChecksPhase, psiToIrResult)
 }
\ No newline at end of file