JS: move processing metaInfo to TranslationResult
This commit is contained in:
@@ -192,10 +192,6 @@ public class K2JSCompiler extends CLICompiler<K2JSCompilerArguments> {
|
||||
}
|
||||
OutputUtilsPackage.writeAll(outputFiles, outputDir, messageCollector);
|
||||
|
||||
if (arguments.metaInfo != null) {
|
||||
new KotlinJavaScriptSerializer().serialize(config.getModuleId(), analysisResult.getModuleDescriptor(), new File(arguments.metaInfo));
|
||||
}
|
||||
|
||||
return OK;
|
||||
}
|
||||
|
||||
|
||||
@@ -410,8 +410,9 @@ public class KotlinJpsBuildTest extends AbstractKotlinJpsBuildTestCase {
|
||||
@NotNull
|
||||
private static String[] k2jsOutput(String moduleName) {
|
||||
String outputDir = "out/production/" + moduleName;
|
||||
String[] result = new String[1];
|
||||
String[] result = new String[2];
|
||||
result[0] = outputDir + "/" + moduleName + ".js";
|
||||
result[1] = outputDir + "/" + moduleName + ".meta.js";
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -560,7 +561,7 @@ public class KotlinJpsBuildTest extends AbstractKotlinJpsBuildTestCase {
|
||||
return klass(moduleName, AsmUtil.internalNameByFqNameWithoutInnerClasses(packagePartFqName));
|
||||
}
|
||||
|
||||
private static enum Operation {
|
||||
private enum Operation {
|
||||
CHANGE, DELETE
|
||||
}
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
<orderEntry type="module" module-name="js.frontend" exported="" />
|
||||
<orderEntry type="module" module-name="js.inliner" exported="" />
|
||||
<orderEntry type="module" module-name="js.parser" />
|
||||
<orderEntry type="module" module-name="js.serializer" />
|
||||
<orderEntry type="module" module-name="util" />
|
||||
</component>
|
||||
</module>
|
||||
@@ -79,6 +79,6 @@ public final class K2JSTranslator {
|
||||
JsProgram program = JsInliner.process(context);
|
||||
if (hasError(diagnostics)) return new TranslationResult.Fail(diagnostics);
|
||||
|
||||
return new TranslationResult.Success(config, files, program, diagnostics);
|
||||
return new TranslationResult.Success(config, files, program, diagnostics, moduleDescriptor);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,26 +16,25 @@
|
||||
|
||||
package org.jetbrains.kotlin.js.facade
|
||||
|
||||
import org.jetbrains.kotlin.resolve.diagnostics.Diagnostics
|
||||
import com.google.dart.compiler.backend.js.ast.JsProgram
|
||||
import kotlin.properties.Delegates
|
||||
import org.jetbrains.kotlin.js.sourceMap.SourceMapBuilder
|
||||
import com.google.dart.compiler.util.TextOutput
|
||||
import com.google.dart.compiler.util.TextOutputImpl
|
||||
import org.jetbrains.kotlin.js.config.Config
|
||||
import org.jetbrains.kotlin.backend.common.output.OutputFile
|
||||
import com.intellij.openapi.util.text.StringUtil
|
||||
import com.intellij.openapi.vfs.VfsUtilCore
|
||||
import org.jetbrains.kotlin.backend.common.output.OutputFileCollection
|
||||
import org.jetbrains.kotlin.backend.common.output.SimpleOutputFile
|
||||
import org.jetbrains.kotlin.backend.common.output.SimpleOutputFileCollection
|
||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||
import org.jetbrains.kotlin.js.config.Config
|
||||
import org.jetbrains.kotlin.js.sourceMap.JsSourceGenerationVisitor
|
||||
import org.jetbrains.kotlin.js.sourceMap.SourceMap3Builder
|
||||
import com.google.dart.compiler.util.TextOutput
|
||||
import java.io.File
|
||||
import org.jetbrains.kotlin.utils.fileUtils.readTextOrEmpty
|
||||
import com.intellij.util.containers.ContainerUtil
|
||||
import org.jetbrains.kotlin.js.sourceMap.SourceMapBuilder
|
||||
import org.jetbrains.kotlin.psi.JetFile
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import com.intellij.openapi.vfs.VfsUtilCore
|
||||
import org.jetbrains.kotlin.backend.common.output.SimpleOutputFile
|
||||
import com.intellij.openapi.util.text.StringUtil
|
||||
import org.jetbrains.kotlin.backend.common.output.SimpleOutputFileCollection
|
||||
import org.jetbrains.kotlin.resolve.diagnostics.Diagnostics
|
||||
import org.jetbrains.kotlin.utils.fileUtils.readTextOrEmpty
|
||||
import org.jetbrains.kotlin.utils.serializer.KotlinJavaScriptSerializer
|
||||
import java.io.File
|
||||
import java.util.ArrayList
|
||||
|
||||
public abstract class TranslationResult protected (public val diagnostics: Diagnostics) {
|
||||
|
||||
@@ -45,7 +44,8 @@ public abstract class TranslationResult protected (public val diagnostics: Diagn
|
||||
private val config: Config,
|
||||
private val files: List<JetFile>,
|
||||
public val program: JsProgram,
|
||||
diagnostics: Diagnostics
|
||||
diagnostics: Diagnostics,
|
||||
private val moduleDescriptor: ModuleDescriptor
|
||||
) : TranslationResult(diagnostics) {
|
||||
public fun getCode(): String = getCode(TextOutputImpl(), sourceMapBuilder = null)
|
||||
|
||||
@@ -71,6 +71,14 @@ public abstract class TranslationResult protected (public val diagnostics: Diagn
|
||||
val jsFile = SimpleOutputFile(sourceFiles, outputFile.getName(), prefix + code + postfix)
|
||||
val outputFiles = arrayListOf(jsFile)
|
||||
|
||||
config.getMetaInfo()?.let {
|
||||
val metaFile = File(it)
|
||||
val metaFileContent = KotlinJavaScriptSerializer.metadataAsString(config.getModuleId(), moduleDescriptor)
|
||||
val sourceFilesForMetaFile = ArrayList<File>(sourceFiles)
|
||||
val jsMetaFile = SimpleOutputFile(sourceFilesForMetaFile, metaFile.getName(), metaFileContent)
|
||||
outputFiles.add(jsMetaFile)
|
||||
}
|
||||
|
||||
if (sourceMapBuilder != null) {
|
||||
sourceMapBuilder.skipLinesAtBeginning(StringUtil.getLineBreakCount(prefix))
|
||||
val sourceMapFile = SimpleOutputFile(sourceFiles, sourceMapBuilder.getOutFile().getName(), sourceMapBuilder.build())
|
||||
|
||||
Reference in New Issue
Block a user