JS: move processing metaInfo to TranslationResult

This commit is contained in:
Michael Nedzelsky
2015-03-25 14:57:28 +03:00
parent dbe59190ed
commit 5a73bd19c5
5 changed files with 28 additions and 22 deletions
@@ -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
}
+1
View File
@@ -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())