From 5a73bd19c5f0ae391c7e0450a95749a2fb31ec36 Mon Sep 17 00:00:00 2001 From: Michael Nedzelsky Date: Wed, 25 Mar 2015 14:57:28 +0300 Subject: [PATCH] JS: move processing metaInfo to TranslationResult --- .../jetbrains/kotlin/cli/js/K2JSCompiler.java | 4 -- .../kotlin/jps/build/KotlinJpsBuildTest.java | 5 ++- js/js.translator/js.translator.iml | 1 + .../kotlin/js/facade/K2JSTranslator.java | 2 +- .../kotlin/js/facade/TranslationResult.kt | 38 +++++++++++-------- 5 files changed, 28 insertions(+), 22 deletions(-) diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/js/K2JSCompiler.java b/compiler/cli/src/org/jetbrains/kotlin/cli/js/K2JSCompiler.java index 93b99e696ef..acaf36deb04 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/js/K2JSCompiler.java +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/js/K2JSCompiler.java @@ -192,10 +192,6 @@ public class K2JSCompiler extends CLICompiler { } OutputUtilsPackage.writeAll(outputFiles, outputDir, messageCollector); - if (arguments.metaInfo != null) { - new KotlinJavaScriptSerializer().serialize(config.getModuleId(), analysisResult.getModuleDescriptor(), new File(arguments.metaInfo)); - } - return OK; } diff --git a/jps-plugin/test/org/jetbrains/kotlin/jps/build/KotlinJpsBuildTest.java b/jps-plugin/test/org/jetbrains/kotlin/jps/build/KotlinJpsBuildTest.java index 5131a3f8caf..fd6643afb0f 100644 --- a/jps-plugin/test/org/jetbrains/kotlin/jps/build/KotlinJpsBuildTest.java +++ b/jps-plugin/test/org/jetbrains/kotlin/jps/build/KotlinJpsBuildTest.java @@ -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 } diff --git a/js/js.translator/js.translator.iml b/js/js.translator/js.translator.iml index 1bb3169fa32..6163c47e65b 100644 --- a/js/js.translator/js.translator.iml +++ b/js/js.translator/js.translator.iml @@ -14,6 +14,7 @@ + \ No newline at end of file diff --git a/js/js.translator/src/org/jetbrains/kotlin/js/facade/K2JSTranslator.java b/js/js.translator/src/org/jetbrains/kotlin/js/facade/K2JSTranslator.java index 3ad81c0e764..7c8d6bc9115 100644 --- a/js/js.translator/src/org/jetbrains/kotlin/js/facade/K2JSTranslator.java +++ b/js/js.translator/src/org/jetbrains/kotlin/js/facade/K2JSTranslator.java @@ -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); } } diff --git a/js/js.translator/src/org/jetbrains/kotlin/js/facade/TranslationResult.kt b/js/js.translator/src/org/jetbrains/kotlin/js/facade/TranslationResult.kt index 1dcec41f037..b273c576a10 100644 --- a/js/js.translator/src/org/jetbrains/kotlin/js/facade/TranslationResult.kt +++ b/js/js.translator/src/org/jetbrains/kotlin/js/facade/TranslationResult.kt @@ -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, 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(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())