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