JS: drop "-kjsm" flag, merge logic with "-meta-info"

#KT-16049 Fixed
This commit is contained in:
Alexander Udalov
2017-01-26 13:44:55 +03:00
parent 17b0b7704f
commit e5680565b3
18 changed files with 30 additions and 78 deletions
+1 -2
View File
@@ -420,7 +420,7 @@
</src>
</new-kotlin2js>
<new-kotlin2js output="${js.stdlib.output.dir}/tmp/kotlin.js" additionalOptions="-meta-info -kjsm">
<new-kotlin2js output="${js.stdlib.output.dir}/tmp/kotlin.js" additionalOptions="-meta-info">
<src>
<union>
<fileset refid="kotlin.builtin.files"/>
@@ -1119,7 +1119,6 @@
<arg value="${output}/classes/kotlin-test-js/kotlin-test.js"/>
<arg value="-version"/>
<arg value="-meta-info"/>
<arg value="-kjsm"/>
<arg line="-main noCall"/>
<arg line="-module-kind umd"/>
<arg value="-Xmulti-platform"/>
@@ -44,13 +44,9 @@ public class K2JSCompilerArguments extends CommonCompilerArguments {
public boolean sourceMap;
@GradleOption(DefaultValues.BooleanTrueDefault.class)
@Argument(value = "meta-info", description = "Generate metadata")
@Argument(value = "meta-info", description = "Generate .meta.js and .kjsm files with metadata. Use to create a library")
public boolean metaInfo;
@GradleOption(DefaultValues.BooleanTrueDefault.class)
@Argument(value = "kjsm", description = "Generate kjsm-files (for creating libraries)")
public boolean kjsm;
@GradleOption(DefaultValues.JsEcmaVersions.class)
@Argument(value = "target", description = "Generate JS files for specific ECMA version")
@ValueDescription("{ v5 }")
@@ -275,9 +275,6 @@ public class K2JSCompiler extends CLICompiler<K2JSCompilerArguments> {
if (arguments.metaInfo) {
configuration.put(JSConfigurationKeys.META_INFO, true);
}
if (arguments.kjsm) {
configuration.put(JSConfigurationKeys.KJSM, true);
}
List<String> libraryFiles = new SmartList<String>();
if (!arguments.noStdlib) {
-5
View File
@@ -1,5 +0,0 @@
compiler/testData/integration/ant/js/simpleWithoutStdlibAndFolderAsAnotherLib/jslib-example/LibraryExample.kt
-no-stdlib
-kjsm
-output
$TEMP_DIR$/jslib-example.js
-1
View File
@@ -1 +0,0 @@
OK
-2
View File
@@ -1,2 +0,0 @@
// EXISTS: jslib-example.js
// EXISTS: jslib-example/library/sample/ClassA.kjsm
-1
View File
@@ -1,6 +1,5 @@
compiler/testData/integration/ant/js/simpleWithoutStdlibAndFolderAsAnotherLib/jslib-example/LibraryExample.kt
-no-stdlib
-meta-info
-kjsm
-output
$TEMP_DIR$/jslib-example.js
+1 -1
View File
@@ -1,3 +1,3 @@
// EXISTS: jslib-example.meta.js
// EXISTS: jslib-example.js
// EXISTS: jslib-example/library/sample/ClassA.kjsm
// EXISTS: jslib-example/library/sample/sample.kjsm
+1 -2
View File
@@ -4,8 +4,7 @@ where possible options include:
-no-stdlib Don't use bundled Kotlin stdlib
-library-files <path[,]> Path to zipped library sources or kotlin files separated by commas
-source-map Generate source map
-meta-info Generate metadata
-kjsm Generate kjsm-files (for creating libraries)
-meta-info Generate .meta.js and .kjsm files with metadata. Use to create a library
-target { v5 } Generate JS files for specific ECMA version
-module-kind { plain, amd, commonjs, umd }
Kind of a module generated by compiler
@@ -21,7 +21,6 @@ import com.intellij.openapi.util.text.StringUtil;
import com.intellij.util.ArrayUtil;
import com.intellij.util.io.ZipUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.kotlin.cli.common.ExitCode;
import org.jetbrains.kotlin.cli.js.K2JSCompiler;
import org.jetbrains.kotlin.cli.jvm.K2JVMCompiler;
@@ -135,7 +134,7 @@ public class MockLibraryUtil {
}
@NotNull
public static File compileJsLibraryToJar(
private static File compileJsLibraryToJar(
@NotNull String sourcesPath,
@NotNull String jarName,
boolean addSources
@@ -145,8 +144,7 @@ public class MockLibraryUtil {
File outDir = new File(contentDir, "out");
File outputFile = new File(outDir, jarName + ".js");
File outputMetaFile = new File(outDir, jarName + ".meta.js");
compileKotlin2JS(sourcesPath, outputFile, outputMetaFile, true);
compileKotlin2JS(sourcesPath, outputFile);
return createJarFile(contentDir, outDir, sourcesPath, jarName, addSources);
}
@@ -221,15 +219,10 @@ public class MockLibraryUtil {
runJvmCompiler(args);
}
public static void compileKotlin2JS(@NotNull String sourcesPath, @NotNull File outputFile, @Nullable File metaFile, boolean kjsm) {
private static void compileKotlin2JS(@NotNull String sourcesPath, @NotNull File outputFile) {
List<String> args = new ArrayList<String>();
if (metaFile != null) {
args.add("-meta-info");
}
if (kjsm) {
args.add("-kjsm");
}
args.add("-meta-info");
args.add("-output");
args.add(outputFile.getAbsolutePath());
@@ -407,12 +407,6 @@ public class CliTestGenerated extends AbstractCliTest {
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/cli/js"), Pattern.compile("^(.+)\\.args$"), TargetBackend.ANY, false);
}
@TestMetadata("createKjsm.args")
public void testCreateKjsm() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/js/createKjsm.args");
doJsTest(fileName);
}
@TestMetadata("createMetadata.args")
public void testCreateMetadata() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/js/createMetadata.args");
@@ -89,15 +89,22 @@ class KotlinJpsBuildTest : AbstractKotlinJpsBuildTestCase() {
"$PROJECT_NAME.js",
"$PROJECT_NAME.meta.js",
"lib/kotlin.js",
"lib/kotlin.meta.js"
"lib/kotlin.meta.js",
"$PROJECT_NAME/root-package.kjsm"
)
private val EXPECTED_JS_FILES_IN_OUTPUT_FOR_MODULE_STDLIB_ONLY = hashSetOf(
"$ADDITIONAL_MODULE_NAME.js",
"$ADDITIONAL_MODULE_NAME.meta.js",
"lib/kotlin.js",
"lib/kotlin.meta.js"
"lib/kotlin.meta.js",
"$ADDITIONAL_MODULE_NAME/module2/module2.kjsm"
)
private val EXPECTED_JS_FILES_IN_OUTPUT_NO_COPY = hashSetOf(
"$PROJECT_NAME.js",
"$PROJECT_NAME.meta.js",
"$PROJECT_NAME/root-package.kjsm",
"$PROJECT_NAME/library/sample/sample.kjsm"
)
private val EXPECTED_JS_FILES_IN_OUTPUT_NO_COPY = hashSetOf("$PROJECT_NAME.js", "$PROJECT_NAME.meta.js")
private val EXPECTED_JS_FILES_IN_OUTPUT_WITH_ADDITIONAL_LIB_AND_DEFAULT_DIR = hashSetOf(
"$PROJECT_NAME.js",
"$PROJECT_NAME.meta.js",
@@ -108,7 +115,9 @@ class KotlinJpsBuildTest : AbstractKotlinJpsBuildTestCase() {
"lib/dir/file1.js",
"lib/META-INF-ex/file2.js",
"lib/res0.js",
"lib/resdir/res1.js"
"lib/resdir/res1.js",
"$PROJECT_NAME/root-package.kjsm",
"$PROJECT_NAME/library/sample/sample.kjsm"
)
private val EXPECTED_JS_FILES_IN_OUTPUT_WITH_ADDITIONAL_LIB_AND_CUSTOM_DIR = hashSetOf(
"$PROJECT_NAME.js",
@@ -120,7 +129,9 @@ class KotlinJpsBuildTest : AbstractKotlinJpsBuildTestCase() {
"custom/dir/file1.js",
"custom/META-INF-ex/file2.js",
"custom/res0.js",
"custom/resdir/res1.js"
"custom/resdir/res1.js",
"$PROJECT_NAME/root-package.kjsm",
"$PROJECT_NAME/library/sample/sample.kjsm"
)
private fun k2jsOutput(vararg moduleNames: String): Array<String> {
@@ -28,9 +28,7 @@ public class JSConfigurationKeys {
public static final CompilerConfigurationKey<Boolean> SOURCE_MAP =
CompilerConfigurationKey.create("generate source map");
public static final CompilerConfigurationKey<Boolean> META_INFO =
CompilerConfigurationKey.create("generate metadata");
public static final CompilerConfigurationKey<Boolean> KJSM =
CompilerConfigurationKey.create("generate .kjsm files");
CompilerConfigurationKey.create("generate .meta.js and .kjsm files");
public static final CompilerConfigurationKey<EcmaVersion> TARGET =
CompilerConfigurationKey.create("ECMA version target");
@@ -16,18 +16,18 @@
package org.jetbrains.kotlin.js.facade
import org.jetbrains.kotlin.js.backend.ast.JsProgram
import org.jetbrains.kotlin.js.util.TextOutput
import org.jetbrains.kotlin.js.util.TextOutputImpl
import com.intellij.openapi.util.text.StringUtil
import com.intellij.openapi.vfs.VfsUtilCore
import org.jetbrains.kotlin.backend.common.output.*
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
import org.jetbrains.kotlin.js.backend.ast.JsProgram
import org.jetbrains.kotlin.js.config.JSConfigurationKeys
import org.jetbrains.kotlin.js.config.JsConfig
import org.jetbrains.kotlin.js.sourceMap.JsSourceGenerationVisitor
import org.jetbrains.kotlin.js.sourceMap.SourceMap3Builder
import org.jetbrains.kotlin.js.sourceMap.SourceMapBuilder
import org.jetbrains.kotlin.js.util.TextOutput
import org.jetbrains.kotlin.js.util.TextOutputImpl
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.diagnostics.Diagnostics
@@ -86,9 +86,7 @@ abstract class TranslationResult protected constructor(val diagnostics: Diagnost
val sourceFilesForMetaFile = ArrayList(sourceFiles)
val jsMetaFile = SimpleOutputFile(sourceFilesForMetaFile, metaFileName, metaFileContent)
outputFiles.add(jsMetaFile)
}
if (config.configuration.getBoolean(JSConfigurationKeys.KJSM)) {
KotlinJavascriptSerializationUtil.toContentMap(bindingContext, moduleDescriptor).forEach {
// TODO Add correct source files
outputFiles.add(SimpleOutputBinaryFile(emptyList(), config.moduleId + VfsUtilCore.VFS_SEPARATOR_CHAR + it.key, it.value))
-4
View File
@@ -38,7 +38,6 @@
<arg>-Xmulti-platform</arg>
</args>
<moduleKind>umd</moduleKind>
<kjsm>true</kjsm>
<metaInfo>true</metaInfo>
</configuration>
@@ -77,9 +76,6 @@
<include>**/*.js</include>
<include>**/*.js.map</include>
<include>**/*.kjsm</include>
<include>**/*.kotlin_classes</include>
<include>**/*.kotlin_string_table</include>
<include>**/*.kotlin_file_table</include>
</includes>
<archive>
<forced />
@@ -4,12 +4,6 @@ package org.jetbrains.kotlin.gradle.dsl
interface KotlinJsOptions : org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions {
/**
* Generate kjsm-files (for creating libraries)
* Default value: true
*/
var kjsm: kotlin.Boolean
/**
* Whether a main function should be called
* Possible values: "call", "noCall"
@@ -18,7 +12,7 @@ interface KotlinJsOptions : org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions
var main: kotlin.String
/**
* Generate metadata
* Generate .meta.js and .kjsm files with metadata. Use to create a library
* Default value: true
*/
var metaInfo: kotlin.Boolean
@@ -24,11 +24,6 @@ internal abstract class KotlinJsOptionsBase : org.jetbrains.kotlin.gradle.dsl.Ko
get() = verboseField ?: false
set(value) { verboseField = value }
private var kjsmField: kotlin.Boolean? = null
override var kjsm: kotlin.Boolean
get() = kjsmField ?: true
set(value) { kjsmField = value }
private var mainField: kotlin.String? = null
override var main: kotlin.String
get() = mainField ?: "call"
@@ -69,7 +64,6 @@ internal abstract class KotlinJsOptionsBase : org.jetbrains.kotlin.gradle.dsl.Ko
languageVersionField?.let { args.languageVersion = it }
suppressWarningsField?.let { args.suppressWarnings = it }
verboseField?.let { args.verbose = it }
kjsmField?.let { args.kjsm = it }
mainField?.let { args.main = it }
metaInfoField?.let { args.metaInfo = it }
moduleKindField?.let { args.moduleKind = it }
@@ -85,7 +79,6 @@ internal fun org.jetbrains.kotlin.cli.common.arguments.K2JSCompilerArguments.fil
languageVersion = "1.1"
suppressWarnings = false
verbose = false
kjsm = true
main = "call"
metaInfo = true
moduleKind = "plain"
@@ -58,17 +58,11 @@ public class K2JSCompilerMojo extends KotlinCompileMojoBase<K2JSCompilerArgument
private String outputFile;
/**
* Flag enables or disables metafile generation
* Flag enables or disables .meta.js and .kjsm files generation, used to create libraries
*/
@Parameter(defaultValue = "true")
private boolean metaInfo;
/**
* Flag enables or disables kjsm generation
*/
@Parameter(defaultValue = "true")
private boolean kjsm;
/**
* Flags enables or disable source map generation
*/
@@ -95,7 +89,6 @@ public class K2JSCompilerMojo extends KotlinCompileMojoBase<K2JSCompilerArgument
arguments.outputFile = outputFile;
arguments.noStdlib = true;
arguments.metaInfo = metaInfo;
arguments.kjsm = kjsm;
arguments.moduleKind = moduleKind;
List<String> libraries = null;