Skip to content

Commit 90bcf8b

Browse files
tihonovcoreromanart
authored andcommitted
[JS BE] add es6LoweringPhase
1 parent fd25a5b commit 90bcf8b

File tree

2 files changed

+91
-2
lines changed

2 files changed

+91
-2
lines changed

compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsLoweringPhases.kt

Lines changed: 89 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -709,6 +709,86 @@ val loweringList = listOf<Lowering>(
709709
validateIrAfterLowering
710710
)
711711

712+
val es6LoweringList = listOf<Lowering>(
713+
scriptRemoveReceiverLowering,
714+
validateIrBeforeLowering,
715+
testGenerationPhase,
716+
expectDeclarationsRemovingPhase,
717+
stripTypeAliasDeclarationsPhase,
718+
arrayConstructorPhase,
719+
lateinitNullableFieldsPhase,
720+
lateinitDeclarationLoweringPhase,
721+
lateinitUsageLoweringPhase,
722+
sharedVariablesLoweringPhase,
723+
localClassesInInlineLambdasPhase,
724+
localClassesInInlineFunctionsPhase,
725+
localClassesExtractionFromInlineFunctionsPhase,
726+
functionInliningPhase,
727+
copyInlineFunctionBodyLoweringPhase,
728+
createScriptFunctionsPhase,
729+
callableReferenceLowering,
730+
singleAbstractMethodPhase,
731+
tailrecLoweringPhase,
732+
enumClassConstructorLoweringPhase,
733+
enumClassConstructorBodyLoweringPhase,
734+
localDelegatedPropertiesLoweringPhase,
735+
localDeclarationsLoweringPhase,
736+
localClassExtractionPhase,
737+
innerClassesLoweringPhase,
738+
innerClassesMemberBodyLoweringPhase,
739+
innerClassConstructorCallsLoweringPhase,
740+
propertiesLoweringPhase,
741+
primaryConstructorLoweringPhase,
742+
delegateToPrimaryConstructorLoweringPhase,
743+
annotationConstructorLowering,
744+
initializersLoweringPhase,
745+
initializersCleanupLoweringPhase,
746+
kotlinNothingValueExceptionPhase,
747+
// Common prefix ends
748+
enumEntryInstancesLoweringPhase,
749+
enumEntryInstancesBodyLoweringPhase,
750+
enumClassCreateInitializerLoweringPhase,
751+
enumEntryCreateGetInstancesFunsLoweringPhase,
752+
enumSyntheticFunsLoweringPhase,
753+
enumUsageLoweringPhase,
754+
enumEntryRemovalLoweringPhase,
755+
suspendFunctionsLoweringPhase,
756+
propertyReferenceLoweringPhase,
757+
interopCallableReferenceLoweringPhase,
758+
returnableBlockLoweringPhase,
759+
forLoopsLoweringPhase,
760+
primitiveCompanionLoweringPhase,
761+
propertyAccessorInlinerLoweringPhase,
762+
foldConstantLoweringPhase,
763+
privateMembersLoweringPhase,
764+
privateMemberUsagesLoweringPhase,
765+
defaultArgumentStubGeneratorPhase,
766+
defaultArgumentPatchOverridesPhase,
767+
defaultParameterInjectorPhase,
768+
defaultParameterCleanerPhase,
769+
jsDefaultCallbackGeneratorPhase,
770+
removeInlineFunctionsWithReifiedTypeParametersLoweringPhase,
771+
throwableSuccessorsLoweringPhase,
772+
es6AddInternalParametersToConstructorPhase,
773+
es6ConstructorLowering,
774+
varargLoweringPhase,
775+
multipleCatchesLoweringPhase,
776+
bridgesConstructionPhase,
777+
typeOperatorLoweringPhase,
778+
secondaryFactoryInjectorLoweringPhase,
779+
classReferenceLoweringPhase,
780+
inlineClassDeclarationLoweringPhase,
781+
inlineClassUsageLoweringPhase,
782+
autoboxingTransformerPhase,
783+
blockDecomposerLoweringPhase,
784+
constLoweringPhase,
785+
objectDeclarationLoweringPhase,
786+
objectUsageLoweringPhase,
787+
callsLoweringPhase,
788+
cleanupLoweringPhase,
789+
validateIrAfterLowering
790+
)
791+
712792
// TODO comment? Eliminate MouduleLowering's? Don't filter them here?
713793
val pirLowerings = loweringList.filter { it is DeclarationLowering || it is BodyLowering } + staticMembersLoweringPhase
714794

@@ -719,4 +799,12 @@ val jsPhases = namedIrModulePhase(
719799
lower = loweringList.drop(1).fold(loweringList[0].modulePhase) { acc: CompilerPhase<JsIrBackendContext, IrModuleFragment, IrModuleFragment>, lowering ->
720800
acc.then(lowering.modulePhase)
721801
}
722-
)
802+
)
803+
804+
val jsEs6Phases = namedIrModulePhase(
805+
name = "ES6IrModuleLowering",
806+
description = "ES6 IR module lowering",
807+
lower = es6LoweringList.drop(1).fold(es6LoweringList[0].modulePhase) { acc: CompilerPhase<JsIrBackendContext, IrModuleFragment, IrModuleFragment>, lowering ->
808+
acc.then(lowering.modulePhase)
809+
}
810+
)

compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/compiler.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,8 @@ fun compile(
9898
val transformer = IrModuleToJsTransformer(context, mainFunction, mainArguments)
9999
return transformer.generateModule(moduleFragment, fullJs = true, dceJs = false)
100100
} else {
101-
jsPhases.invokeToplevel(phaseConfig, context, moduleFragment)
101+
val phases = if (es6mode) jsEs6Phases else jsPhases
102+
phases.invokeToplevel(phaseConfig, context, moduleFragment)
102103
val transformer = IrModuleToJsTransformer(context, mainFunction, mainArguments)
103104
return transformer.generateModule(moduleFragment, generateFullJs, generateDceJs)
104105
}

0 commit comments

Comments
 (0)