[JS IR] add a flag which prepends a custom prefix to the per-module .js files
This commit is contained in:
committed by
TeamCityServer
parent
7bd9462ffb
commit
6e40c814c8
+3
@@ -157,6 +157,9 @@ class K2JSCompilerArguments : CommonCompilerArguments() {
|
||||
@Argument(value = "-Xir-per-module", description = "Splits generated .js per-module")
|
||||
var irPerModule: Boolean by FreezableVar(false)
|
||||
|
||||
@Argument(value = "-Xir-per-module-prefix", description = "Adds a custom prefix to the splitted js files")
|
||||
var irPerModulePrefix: String? by NullableStringFreezableVar(null)
|
||||
|
||||
@Argument(
|
||||
value = "-Xinclude",
|
||||
valueDescription = "<path>",
|
||||
|
||||
@@ -274,6 +274,7 @@ class K2JsIrCompiler : CLICompiler<K2JSCompilerArguments>() {
|
||||
relativeRequirePath = true,
|
||||
propertyLazyInitialization = arguments.irPropertyLazyInitialization,
|
||||
legacyPropertyAccess = arguments.irLegacyPropertyAccess,
|
||||
irPerModulePrefix = arguments.irPerModulePrefix
|
||||
)
|
||||
|
||||
val jsCode = if (arguments.irDce && !arguments.irDceDriven) compiledModule.dceJsCode!! else compiledModule.jsCode!!
|
||||
|
||||
@@ -53,6 +53,7 @@ fun compile(
|
||||
relativeRequirePath: Boolean = false,
|
||||
propertyLazyInitialization: Boolean,
|
||||
legacyPropertyAccess: Boolean = false,
|
||||
irPerModulePrefix: String? = null,
|
||||
): CompilerResult {
|
||||
val (moduleFragment: IrModuleFragment, dependencyModules, irBuiltIns, symbolTable, deserializer, moduleToName) =
|
||||
loadIr(project, mainModule, analyzer, configuration, allDependencies, friendDependencies, irFactory)
|
||||
@@ -111,6 +112,7 @@ fun compile(
|
||||
multiModule = multiModule,
|
||||
relativeRequirePath = relativeRequirePath,
|
||||
moduleToName = moduleToName,
|
||||
irPerModulePrefix = irPerModulePrefix,
|
||||
)
|
||||
return transformer.generateModule(allModules)
|
||||
} else {
|
||||
@@ -123,6 +125,7 @@ fun compile(
|
||||
multiModule = multiModule,
|
||||
relativeRequirePath = relativeRequirePath,
|
||||
moduleToName = moduleToName,
|
||||
irPerModulePrefix = irPerModulePrefix,
|
||||
)
|
||||
return transformer.generateModule(allModules)
|
||||
}
|
||||
|
||||
+8
-3
@@ -32,7 +32,8 @@ class IrModuleToJsTransformer(
|
||||
private val dceJs: Boolean = false,
|
||||
private val multiModule: Boolean = false,
|
||||
private val relativeRequirePath: Boolean = false,
|
||||
private val moduleToName: Map<IrModuleFragment, String> = emptyMap()
|
||||
private val moduleToName: Map<IrModuleFragment, String> = emptyMap(),
|
||||
private val irPerModulePrefix: String? = null,
|
||||
) {
|
||||
private val generateRegionComments = backendContext.configuration.getBoolean(JSConfigurationKeys.GENERATE_REGION_COMMENTS)
|
||||
|
||||
@@ -92,7 +93,7 @@ class IrModuleToJsTransformer(
|
||||
)
|
||||
|
||||
val dependencies = others.mapIndexed { index, module ->
|
||||
val moduleName = moduleToName[module] ?: sanitizeName(module.safeName)
|
||||
val moduleName = module.externalModuleName()
|
||||
|
||||
val exportedDeclarations = ExportModelGenerator(backendContext).let { module.files.flatMap { file -> it.generateExport(file) } }
|
||||
|
||||
@@ -191,6 +192,10 @@ class IrModuleToJsTransformer(
|
||||
return program.toString()
|
||||
}
|
||||
|
||||
private fun IrModuleFragment.externalModuleName(): String {
|
||||
return (irPerModulePrefix ?: "") + (moduleToName[this] ?: sanitizeName(safeName))
|
||||
}
|
||||
|
||||
private fun generateCrossModuleImports(
|
||||
namerWithImports: IrNamerWithImports,
|
||||
currentModules: Iterable<IrModuleFragment>,
|
||||
@@ -207,7 +212,7 @@ class IrModuleToJsTransformer(
|
||||
}
|
||||
|
||||
val moduleName = declareFreshGlobal(module.safeName)
|
||||
modules += JsImportedModule(moduleToName[module] ?: moduleName.ident, moduleName, moduleName.makeRef(), relativeRequirePath)
|
||||
modules += JsImportedModule(module.externalModuleName(), moduleName, moduleName.makeRef(), relativeRequirePath)
|
||||
|
||||
names.forEach {
|
||||
imports += JsVars(JsVars.JsVar(JsName(it), JsNameRef(it, JsNameRef("\$crossModule\$", moduleName.makeRef()))))
|
||||
|
||||
Reference in New Issue
Block a user