[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