kgp_1.8.20..2.0.0__Main.co.touchlab.skie.entrypoint.CreateObjCExportCodeSpecPhaseInterceptor.kgp_1.8.20.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of kotlin-compiler-linker-plugin-kgp_1.9.20 Show documentation
Show all versions of kotlin-compiler-linker-plugin-kgp_1.9.20 Show documentation
Kotlin compiler plugin that improves Swift interface of a Kotlin Multiplatform framework.
The newest version!
@file:Suppress("invisible_reference", "invisible_member")
package co.touchlab.skie.entrypoint
import co.touchlab.skie.compilerinject.compilerplugin.mainSkieContext
import co.touchlab.skie.compilerinject.interceptor.PhaseInterceptor
import co.touchlab.skie.kir.descriptor.ObjCExportedInterfaceProvider
import org.jetbrains.kotlin.backend.konan.driver.phases.CreateObjCExportCodeSpecPhase
import org.jetbrains.kotlin.backend.konan.driver.phases.PsiToIrContext
import org.jetbrains.kotlin.backend.konan.objcexport.ObjCExportCodeSpec
import org.jetbrains.kotlin.backend.konan.objcexport.ObjCExportedInterface
internal class CreateObjCExportCodeSpecPhaseInterceptor : PhaseInterceptor {
override fun getInterceptedPhase(): Any = CreateObjCExportCodeSpecPhase
override fun intercept(
context: PsiToIrContext,
input: ObjCExportedInterface,
next: (PsiToIrContext, ObjCExportedInterface) -> ObjCExportCodeSpec,
): ObjCExportCodeSpec {
val mainSkieContext = context.config.configuration.mainSkieContext
EntrypointUtils.runSymbolTablePhases(
mainSkieContext = mainSkieContext,
symbolTable = context.symbolTable!!,
)
EntrypointUtils.runKirPhases(
mainSkieContext = mainSkieContext,
objCExportedInterfaceProvider = ObjCExportedInterfaceProvider(input),
)
EntrypointUtils.runSirPhases(mainSkieContext)
return next(context, input)
}
}