Skip to content

Commit

Permalink
Rename DescriptorModificationPhase.
Browse files Browse the repository at this point in the history
  • Loading branch information
FilipDolnik committed Apr 18, 2024
1 parent 03a2f8e commit 680bb0e
Show file tree
Hide file tree
Showing 20 changed files with 73 additions and 73 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package co.touchlab.skie.phases

interface DescriptorModificationPhase : ForegroundPhase<DescriptorModificationPhase.Context> {
interface FrontendIrPhase : ForegroundPhase<FrontendIrPhase.Context> {

interface Context : ForegroundPhase.Context {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ internal class ObjCExportPhaseInterceptor : SameTypePhaseInterceptor<KonanContex
override fun getInterceptedPhase(): Any = objCExportPhase

override fun intercept(context: KonanContext, input: Unit, next: (KonanContext, Unit) -> Unit) {
EntrypointUtils.runDescriptorModificationPhases(context.config.configuration.mainSkieContext)
EntrypointUtils.runFrontendIrPhases(context.config.configuration.mainSkieContext)

next(context, input)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ internal class ProduceObjCExportInterfacePhaseInterceptor :

EntrypointUtils.runClassExportPhases(mainSkieContext)

EntrypointUtils.runDescriptorModificationPhases(mainSkieContext)
EntrypointUtils.runFrontendIrPhases(mainSkieContext)

return next(context, input)
}
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package co.touchlab.skie.context

import co.touchlab.skie.kir.irbuilder.impl.DeclarationBuilderImpl
import co.touchlab.skie.phases.FrontendIrPhase

class FrontendIrPhaseContext(
mainSkieContext: MainSkieContext,
) : FrontendIrPhase.Context, ForegroundPhaseCompilerContext by mainSkieContext {

override val context: FrontendIrPhaseContext = this

val declarationBuilder: DeclarationBuilderImpl = mainSkieContext.declarationBuilder
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ package co.touchlab.skie.entrypoint

import co.touchlab.skie.compilerinject.compilerplugin.mainSkieContext
import co.touchlab.skie.context.ClassExportPhaseContext
import co.touchlab.skie.context.DescriptorModificationPhaseContext
import co.touchlab.skie.context.FrontendIrPhaseContext
import co.touchlab.skie.context.InitPhaseContext
import co.touchlab.skie.context.KirPhaseContext
import co.touchlab.skie.context.KotlinIrPhaseContext
Expand Down Expand Up @@ -54,12 +54,12 @@ internal object EntrypointUtils {
}
}

fun runDescriptorModificationPhases(
fun runFrontendIrPhases(
mainSkieContext: MainSkieContext,
) {
with(mainSkieContext) {
skiePhaseScheduler.runDescriptorModificationPhases {
DescriptorModificationPhaseContext(mainSkieContext)
skiePhaseScheduler.runFrontendIrPhases {
FrontendIrPhaseContext(mainSkieContext)
}
}
}
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package co.touchlab.skie.phases

import co.touchlab.skie.context.FrontendIrPhaseContext
import co.touchlab.skie.kir.irbuilder.DeclarationBuilder

val FrontendIrPhase.Context.declarationBuilder: DeclarationBuilder
get() = typedContext.declarationBuilder

private val FrontendIrPhase.Context.typedContext: FrontendIrPhaseContext
get() = context as FrontendIrPhaseContext
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ class SkiePhaseScheduler {
)
}

val descriptorModificationPhases = SkiePhaseGroup<DescriptorModificationPhase, DescriptorModificationPhase.Context> { context ->
val frontendIrPhases = SkiePhaseGroup<FrontendIrPhase, FrontendIrPhase.Context> { context ->
addAll(
DefaultArgumentGenerator(context),
SuspendGenerator,
Expand Down Expand Up @@ -263,8 +263,8 @@ class SkiePhaseScheduler {
}

context(ScheduledPhase.Context)
fun runDescriptorModificationPhases(contextFactory: () -> DescriptorModificationPhase.Context) {
descriptorModificationPhases.run(contextFactory)
fun runFrontendIrPhases(contextFactory: () -> FrontendIrPhase.Context) {
frontendIrPhases.run(contextFactory)
}

context(ScheduledPhase.Context)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package co.touchlab.skie.phases.features.defaultarguments

import co.touchlab.skie.phases.DescriptorModificationPhase
import co.touchlab.skie.phases.FrontendIrPhase
import co.touchlab.skie.phases.features.defaultarguments.delegate.ClassMethodsDefaultArgumentGeneratorDelegate
import co.touchlab.skie.phases.features.defaultarguments.delegate.ConstructorsDefaultArgumentGeneratorDelegate
import co.touchlab.skie.phases.features.defaultarguments.delegate.ExtensionFunctionDefaultArgumentGeneratorDelegate
Expand All @@ -10,8 +10,8 @@ import co.touchlab.skie.phases.util.StatefulSirPhase
import co.touchlab.skie.util.SharedCounter

class DefaultArgumentGenerator(
private val context: DescriptorModificationPhase.Context,
) : DescriptorModificationPhase {
private val context: FrontendIrPhase.Context,
) : FrontendIrPhase {

private val sharedCounter = SharedCounter()

Expand All @@ -22,7 +22,7 @@ class DefaultArgumentGenerator(
::ExtensionFunctionDefaultArgumentGeneratorDelegate,
).map { it(context, sharedCounter) }

context(DescriptorModificationPhase.Context)
context(FrontendIrPhase.Context)
override suspend fun execute() {
delegates.forEach {
it.generate()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import co.touchlab.skie.configuration.SkieConfigurationFlag
import co.touchlab.skie.configuration.provider.descriptor.configuration
import co.touchlab.skie.kir.descriptor.DescriptorProvider
import co.touchlab.skie.kir.irbuilder.DeclarationBuilder
import co.touchlab.skie.phases.DescriptorModificationPhase
import co.touchlab.skie.phases.FrontendIrPhase
import co.touchlab.skie.phases.declarationBuilder
import co.touchlab.skie.phases.descriptorProvider
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
Expand All @@ -20,7 +20,7 @@ import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.resolve.descriptorUtil.declaresOrInheritsDefaultValue

abstract class BaseDefaultArgumentGeneratorDelegate(
val context: DescriptorModificationPhase.Context,
val context: FrontendIrPhase.Context,
) : DefaultArgumentGeneratorDelegate {

protected val descriptorProvider: DescriptorProvider = context.descriptorProvider
Expand All @@ -35,13 +35,13 @@ abstract class BaseDefaultArgumentGeneratorDelegate(
private val isInteropEnabledForExternalModules: Boolean =
SkieConfigurationFlag.Feature_DefaultArgumentsInExternalLibraries in context.rootConfiguration.enabledFlags

context(DescriptorModificationPhase.Context)
context(FrontendIrPhase.Context)
protected val FunctionDescriptor.isInteropEnabled: Boolean
get() = this.configuration[DefaultArgumentInterop.Enabled] &&
this.satisfiesMaximumDefaultArgumentCount &&
(descriptorProvider.isFromLocalModule(this) || isInteropEnabledForExternalModules)

context(DescriptorModificationPhase.Context)
context(FrontendIrPhase.Context)
private val FunctionDescriptor.satisfiesMaximumDefaultArgumentCount: Boolean
get() = this.defaultArgumentCount <= this.configuration[DefaultArgumentInterop.MaximumDefaultArgumentCount]

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import co.touchlab.skie.kir.irbuilder.createFunction
import co.touchlab.skie.kir.irbuilder.getNamespace
import co.touchlab.skie.kir.irbuilder.util.copyIndexing
import co.touchlab.skie.kir.irbuilder.util.copyWithoutDefaultValue
import co.touchlab.skie.phases.DescriptorModificationPhase
import co.touchlab.skie.phases.FrontendIrPhase
import co.touchlab.skie.phases.KotlinIrPhase
import co.touchlab.skie.phases.descriptorKirProvider
import co.touchlab.skie.phases.features.defaultarguments.DefaultArgumentGenerator
Expand All @@ -32,11 +32,11 @@ import org.jetbrains.kotlin.types.TypeSubstitutor
import org.jetbrains.kotlin.types.Variance

abstract class BaseFunctionDefaultArgumentGeneratorDelegate(
context: DescriptorModificationPhase.Context,
context: FrontendIrPhase.Context,
private val sharedCounter: SharedCounter,
) : BaseDefaultArgumentGeneratorDelegate(context) {

context(DescriptorModificationPhase.Context)
context(FrontendIrPhase.Context)
override fun generate() {
descriptorProvider.allSupportedFunctions()
.filter { it.isInteropEnabled }
Expand All @@ -49,14 +49,14 @@ abstract class BaseFunctionDefaultArgumentGeneratorDelegate(

protected abstract fun DescriptorProvider.allSupportedFunctions(): List<SimpleFunctionDescriptor>

context(DescriptorModificationPhase.Context)
context(FrontendIrPhase.Context)
private fun generateOverloads(function: SimpleFunctionDescriptor) {
function.forEachDefaultArgumentOverload { overloadParameters ->
generateOverload(function, overloadParameters)
}
}

context(DescriptorModificationPhase.Context)
context(FrontendIrPhase.Context)
private fun generateOverload(
function: SimpleFunctionDescriptor,
parameters: List<ValueParameterDescriptor>,
Expand All @@ -68,7 +68,7 @@ abstract class BaseFunctionDefaultArgumentGeneratorDelegate(
removeManglingOfOverload(newFunction, function)
}

context(DescriptorModificationPhase.Context)
context(FrontendIrPhase.Context)
private fun generateOverloadWithUniqueName(
function: SimpleFunctionDescriptor,
parameters: List<ValueParameterDescriptor>,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
package co.touchlab.skie.phases.features.defaultarguments.delegate

import co.touchlab.skie.kir.descriptor.DescriptorProvider
import co.touchlab.skie.phases.DescriptorModificationPhase
import co.touchlab.skie.phases.FrontendIrPhase
import co.touchlab.skie.util.SharedCounter
import org.jetbrains.kotlin.descriptors.ClassDescriptor
import org.jetbrains.kotlin.descriptors.ClassKind
import org.jetbrains.kotlin.descriptors.SimpleFunctionDescriptor

class ClassMethodsDefaultArgumentGeneratorDelegate(
context: DescriptorModificationPhase.Context,
context: FrontendIrPhase.Context,
sharedCounter: SharedCounter,
) : BaseFunctionDefaultArgumentGeneratorDelegate(context, sharedCounter) {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import co.touchlab.skie.kir.descriptor.DescriptorProvider
import co.touchlab.skie.kir.irbuilder.createSecondaryConstructor
import co.touchlab.skie.kir.irbuilder.getNamespace
import co.touchlab.skie.kir.irbuilder.util.copyWithoutDefaultValue
import co.touchlab.skie.phases.DescriptorModificationPhase
import co.touchlab.skie.phases.FrontendIrPhase
import co.touchlab.skie.phases.KotlinIrPhase
import co.touchlab.skie.phases.descriptorKirProvider
import co.touchlab.skie.phases.features.defaultarguments.DefaultArgumentGenerator
Expand All @@ -29,11 +29,11 @@ import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.resolve.calls.components.hasDefaultValue

class ConstructorsDefaultArgumentGeneratorDelegate(
context: DescriptorModificationPhase.Context,
context: FrontendIrPhase.Context,
private val sharedCounter: SharedCounter,
) : BaseDefaultArgumentGeneratorDelegate(context) {

context(DescriptorModificationPhase.Context)
context(FrontendIrPhase.Context)
override fun generate() {
descriptorProvider.allSupportedClasses.forEach { classDescriptor ->
classDescriptor.allSupportedConstructors.forEach {
Expand All @@ -48,13 +48,13 @@ class ConstructorsDefaultArgumentGeneratorDelegate(
private val ClassDescriptor.isSupported: Boolean
get() = this.kind == ClassKind.CLASS

context(DescriptorModificationPhase.Context)
context(FrontendIrPhase.Context)
private val ClassDescriptor.allSupportedConstructors: List<ClassConstructorDescriptor>
get() = descriptorProvider.getExposedConstructors(this)
.filter { it.isInteropEnabled }
.filter { it.hasDefaultArguments }

context(DescriptorModificationPhase.Context)
context(FrontendIrPhase.Context)
private fun generateOverloads(constructor: ClassConstructorDescriptor, classDescriptor: ClassDescriptor) {
constructor.forEachDefaultArgumentOverload { overloadParameters ->
if (overloadParameters.isNotEmpty() || classDescriptor.generateOverloadWithNoParameters) {
Expand All @@ -70,14 +70,14 @@ class ConstructorsDefaultArgumentGeneratorDelegate(
private val ClassConstructorDescriptor.hasNoParametersIgnoringDefaultArguments: Boolean
get() = this.valueParameters.count { !it.hasDefaultValue() } == 0

context(DescriptorModificationPhase.Context)
context(FrontendIrPhase.Context)
private fun generateOverload(constructor: ClassConstructorDescriptor, parameters: List<ValueParameterDescriptor>) {
val overload = generateOverloadWithUniqueName(constructor, parameters)

registerOverload(overload, constructor)
}

context(DescriptorModificationPhase.Context)
context(FrontendIrPhase.Context)
private fun generateOverloadWithUniqueName(
constructor: ClassConstructorDescriptor,
parameters: List<ValueParameterDescriptor>,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package co.touchlab.skie.phases.features.defaultarguments.delegate

import co.touchlab.skie.phases.DescriptorModificationPhase
import co.touchlab.skie.phases.FrontendIrPhase

interface DefaultArgumentGeneratorDelegate {

context(DescriptorModificationPhase.Context)
context(FrontendIrPhase.Context)
fun generate()
}
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
package co.touchlab.skie.phases.features.defaultarguments.delegate

import co.touchlab.skie.kir.descriptor.DescriptorProvider
import co.touchlab.skie.phases.DescriptorModificationPhase
import co.touchlab.skie.phases.FrontendIrPhase
import co.touchlab.skie.util.SharedCounter
import org.jetbrains.kotlin.descriptors.SimpleFunctionDescriptor

class ExtensionFunctionDefaultArgumentGeneratorDelegate(
context: DescriptorModificationPhase.Context,
context: FrontendIrPhase.Context,
sharedCounter: SharedCounter,
) : BaseFunctionDefaultArgumentGeneratorDelegate(context, sharedCounter) {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
package co.touchlab.skie.phases.features.defaultarguments.delegate

import co.touchlab.skie.kir.descriptor.DescriptorProvider
import co.touchlab.skie.phases.DescriptorModificationPhase
import co.touchlab.skie.phases.FrontendIrPhase
import co.touchlab.skie.util.SharedCounter
import org.jetbrains.kotlin.descriptors.SimpleFunctionDescriptor

class TopLevelFunctionDefaultArgumentGeneratorDelegate(
context: DescriptorModificationPhase.Context,
context: FrontendIrPhase.Context,
sharedCounter: SharedCounter,
) : BaseFunctionDefaultArgumentGeneratorDelegate(context, sharedCounter) {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import co.touchlab.skie.kir.irbuilder.createFunction
import co.touchlab.skie.kir.irbuilder.util.copyIndexing
import co.touchlab.skie.kir.irbuilder.util.copyWithoutDefaultValue
import co.touchlab.skie.kir.irbuilder.util.createValueParameter
import co.touchlab.skie.phases.DescriptorModificationPhase
import co.touchlab.skie.phases.FrontendIrPhase
import co.touchlab.skie.phases.KirPhase
import co.touchlab.skie.phases.declarationBuilder
import co.touchlab.skie.phases.descriptorKirProvider
Expand Down Expand Up @@ -35,7 +35,7 @@ import org.jetbrains.kotlin.types.TypeSubstitutor
import org.jetbrains.kotlin.types.Variance

class KotlinSuspendGeneratorDelegate(
private val context: DescriptorModificationPhase.Context,
private val context: FrontendIrPhase.Context,
) {

private var nextBridgingFunctionIndex = 0
Expand All @@ -46,7 +46,7 @@ class KotlinSuspendGeneratorDelegate(

private val bodyGenerator = SuspendKotlinBridgeBodyGenerator(suspendHandlerDescriptor)

context(DescriptorModificationPhase.Context)
context(FrontendIrPhase.Context)
fun generateKotlinBridgingFunction(functionDescriptor: FunctionDescriptor): FunctionDescriptor {
val bridgingFunctionDescriptor = createBridgingFunction(functionDescriptor)

Expand All @@ -56,7 +56,7 @@ class KotlinSuspendGeneratorDelegate(
return bridgingFunctionDescriptor
}

context(DescriptorModificationPhase.Context)
context(FrontendIrPhase.Context)
private fun FunctionDescriptor.changeSkieConfiguration(originalFunctionDescriptor: FunctionDescriptor) {
this.configuration.useDefaultsForSkieRuntime = true

Expand Down
Loading

0 comments on commit 680bb0e

Please sign in to comment.