[JS BE] add es6LoweringPhase
This commit is contained in:
@@ -709,6 +709,86 @@ val loweringList = listOf<Lowering>(
|
|||||||
validateIrAfterLowering
|
validateIrAfterLowering
|
||||||
)
|
)
|
||||||
|
|
||||||
|
val es6LoweringList = listOf<Lowering>(
|
||||||
|
scriptRemoveReceiverLowering,
|
||||||
|
validateIrBeforeLowering,
|
||||||
|
testGenerationPhase,
|
||||||
|
expectDeclarationsRemovingPhase,
|
||||||
|
stripTypeAliasDeclarationsPhase,
|
||||||
|
arrayConstructorPhase,
|
||||||
|
lateinitNullableFieldsPhase,
|
||||||
|
lateinitDeclarationLoweringPhase,
|
||||||
|
lateinitUsageLoweringPhase,
|
||||||
|
sharedVariablesLoweringPhase,
|
||||||
|
localClassesInInlineLambdasPhase,
|
||||||
|
localClassesInInlineFunctionsPhase,
|
||||||
|
localClassesExtractionFromInlineFunctionsPhase,
|
||||||
|
functionInliningPhase,
|
||||||
|
copyInlineFunctionBodyLoweringPhase,
|
||||||
|
createScriptFunctionsPhase,
|
||||||
|
callableReferenceLowering,
|
||||||
|
singleAbstractMethodPhase,
|
||||||
|
tailrecLoweringPhase,
|
||||||
|
enumClassConstructorLoweringPhase,
|
||||||
|
enumClassConstructorBodyLoweringPhase,
|
||||||
|
localDelegatedPropertiesLoweringPhase,
|
||||||
|
localDeclarationsLoweringPhase,
|
||||||
|
localClassExtractionPhase,
|
||||||
|
innerClassesLoweringPhase,
|
||||||
|
innerClassesMemberBodyLoweringPhase,
|
||||||
|
innerClassConstructorCallsLoweringPhase,
|
||||||
|
propertiesLoweringPhase,
|
||||||
|
primaryConstructorLoweringPhase,
|
||||||
|
delegateToPrimaryConstructorLoweringPhase,
|
||||||
|
annotationConstructorLowering,
|
||||||
|
initializersLoweringPhase,
|
||||||
|
initializersCleanupLoweringPhase,
|
||||||
|
kotlinNothingValueExceptionPhase,
|
||||||
|
// Common prefix ends
|
||||||
|
enumEntryInstancesLoweringPhase,
|
||||||
|
enumEntryInstancesBodyLoweringPhase,
|
||||||
|
enumClassCreateInitializerLoweringPhase,
|
||||||
|
enumEntryCreateGetInstancesFunsLoweringPhase,
|
||||||
|
enumSyntheticFunsLoweringPhase,
|
||||||
|
enumUsageLoweringPhase,
|
||||||
|
enumEntryRemovalLoweringPhase,
|
||||||
|
suspendFunctionsLoweringPhase,
|
||||||
|
propertyReferenceLoweringPhase,
|
||||||
|
interopCallableReferenceLoweringPhase,
|
||||||
|
returnableBlockLoweringPhase,
|
||||||
|
forLoopsLoweringPhase,
|
||||||
|
primitiveCompanionLoweringPhase,
|
||||||
|
propertyAccessorInlinerLoweringPhase,
|
||||||
|
foldConstantLoweringPhase,
|
||||||
|
privateMembersLoweringPhase,
|
||||||
|
privateMemberUsagesLoweringPhase,
|
||||||
|
defaultArgumentStubGeneratorPhase,
|
||||||
|
defaultArgumentPatchOverridesPhase,
|
||||||
|
defaultParameterInjectorPhase,
|
||||||
|
defaultParameterCleanerPhase,
|
||||||
|
jsDefaultCallbackGeneratorPhase,
|
||||||
|
removeInlineFunctionsWithReifiedTypeParametersLoweringPhase,
|
||||||
|
throwableSuccessorsLoweringPhase,
|
||||||
|
es6AddInternalParametersToConstructorPhase,
|
||||||
|
es6ConstructorLowering,
|
||||||
|
varargLoweringPhase,
|
||||||
|
multipleCatchesLoweringPhase,
|
||||||
|
bridgesConstructionPhase,
|
||||||
|
typeOperatorLoweringPhase,
|
||||||
|
secondaryFactoryInjectorLoweringPhase,
|
||||||
|
classReferenceLoweringPhase,
|
||||||
|
inlineClassDeclarationLoweringPhase,
|
||||||
|
inlineClassUsageLoweringPhase,
|
||||||
|
autoboxingTransformerPhase,
|
||||||
|
blockDecomposerLoweringPhase,
|
||||||
|
constLoweringPhase,
|
||||||
|
objectDeclarationLoweringPhase,
|
||||||
|
objectUsageLoweringPhase,
|
||||||
|
callsLoweringPhase,
|
||||||
|
cleanupLoweringPhase,
|
||||||
|
validateIrAfterLowering
|
||||||
|
)
|
||||||
|
|
||||||
// TODO comment? Eliminate MouduleLowering's? Don't filter them here?
|
// TODO comment? Eliminate MouduleLowering's? Don't filter them here?
|
||||||
val pirLowerings = loweringList.filter { it is DeclarationLowering || it is BodyLowering } + staticMembersLoweringPhase
|
val pirLowerings = loweringList.filter { it is DeclarationLowering || it is BodyLowering } + staticMembersLoweringPhase
|
||||||
|
|
||||||
@@ -720,3 +800,11 @@ val jsPhases = namedIrModulePhase(
|
|||||||
acc.then(lowering.modulePhase)
|
acc.then(lowering.modulePhase)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
val jsEs6Phases = namedIrModulePhase(
|
||||||
|
name = "ES6IrModuleLowering",
|
||||||
|
description = "ES6 IR module lowering",
|
||||||
|
lower = es6LoweringList.drop(1).fold(es6LoweringList[0].modulePhase) { acc: CompilerPhase<JsIrBackendContext, IrModuleFragment, IrModuleFragment>, lowering ->
|
||||||
|
acc.then(lowering.modulePhase)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|||||||
@@ -98,7 +98,8 @@ fun compile(
|
|||||||
val transformer = IrModuleToJsTransformer(context, mainFunction, mainArguments)
|
val transformer = IrModuleToJsTransformer(context, mainFunction, mainArguments)
|
||||||
return transformer.generateModule(moduleFragment, fullJs = true, dceJs = false)
|
return transformer.generateModule(moduleFragment, fullJs = true, dceJs = false)
|
||||||
} else {
|
} else {
|
||||||
jsPhases.invokeToplevel(phaseConfig, context, moduleFragment)
|
val phases = if (es6mode) jsEs6Phases else jsPhases
|
||||||
|
phases.invokeToplevel(phaseConfig, context, moduleFragment)
|
||||||
val transformer = IrModuleToJsTransformer(context, mainFunction, mainArguments)
|
val transformer = IrModuleToJsTransformer(context, mainFunction, mainArguments)
|
||||||
return transformer.generateModule(moduleFragment, generateFullJs, generateDceJs)
|
return transformer.generateModule(moduleFragment, generateFullJs, generateDceJs)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user