in src/main/kotlin/com/compiler/server/compiler/components/KotlinToJSTranslator.kt [81:111]
fun doTranslateWithIr(
files: List<ProjectFile>,
arguments: List<String>,
userCompilerArguments: JsCompilerArguments): CompilationResult<String> =
usingTempDirectory { inputDir ->
usingTempDirectory { outputDir ->
val ioFiles = files.writeToIoFiles(inputDir)
val k2JSCompiler = K2JSCompiler()
val filePaths = ioFiles.map { it.toFile().canonicalPath }
val klibPath = (outputDir / "klib").toFile().canonicalPath
val additionalCompilerArgumentsForKLib =
compilerArgumentsUtil.convertCompilerArgumentsToCompilationString(
jsCompilerArguments,
compilerArgumentsUtil.PREDEFINED_JS_FIRST_PHASE_ARGUMENTS,
userCompilerArguments.firstPhase
) + "-ir-output-dir=$klibPath"
k2JSCompiler.tryCompilation(inputDir, ioFiles, filePaths + additionalCompilerArgumentsForKLib)
.flatMap {
val secondPhaseArguments =
compilerArgumentsUtil.convertCompilerArgumentsToCompilationString(
jsCompilerArguments,
compilerArgumentsUtil.PREDEFINED_JS_SECOND_PHASE_ARGUMENTS,
userCompilerArguments.secondPhase
) + "-ir-output-dir=${(outputDir / "js").toFile().canonicalPath}" + "-Xinclude=$klibPath"
k2JSCompiler.tryCompilation(inputDir, ioFiles, secondPhaseArguments)
}
.map { (outputDir / "js" / "$JS_DEFAULT_MODULE_NAME.js").readText() }
.map { it.withMainArgumentsIr(arguments) }
.map(::redirectOutput)
}
}