Support "-module-name" argument for common code compiler

#KT-20892 Fixed
This commit is contained in:
Alexander Udalov
2017-11-02 18:57:08 +01:00
parent 3ede503042
commit c5c4c9cfcc
9 changed files with 35 additions and 1 deletions
@@ -31,4 +31,7 @@ class K2MetadataCompilerArguments : CommonCompilerArguments() {
description = "Paths where to find library .kotlin_metadata files"
)
var classpath: String? by FreezableVar(null)
@Argument(value = "-module-name", valueDescription = "<name>", description = "Name of the generated .kotlin_module file")
var moduleName: String? by FreezableVar(null)
}
@@ -64,7 +64,7 @@ class K2MetadataCompiler : CLICompiler<K2MetadataCompilerArguments>() {
configuration.addJvmClasspathRoots(arguments.classpath!!.split(File.pathSeparatorChar).map(::File))
}
configuration.put(CommonConfigurationKeys.MODULE_NAME, JvmAbi.DEFAULT_MODULE_NAME)
configuration.put(CommonConfigurationKeys.MODULE_NAME, arguments.moduleName ?: JvmAbi.DEFAULT_MODULE_NAME)
val destination = arguments.destination
if (destination != null) {
+5
View File
@@ -0,0 +1,5 @@
$TESTDATA_DIR$/moduleName.kt
-d
$TEMP_DIR$
-module-name
foo
+3
View File
@@ -0,0 +1,3 @@
package test
expect fun bar()
+1
View File
@@ -0,0 +1 @@
OK
+1
View File
@@ -0,0 +1 @@
// EXISTS: META-INF/foo.kotlin_module
@@ -29,6 +29,7 @@ import org.jetbrains.kotlin.cli.common.ExitCode;
import org.jetbrains.kotlin.cli.js.K2JSCompiler;
import org.jetbrains.kotlin.cli.js.dce.K2JSDce;
import org.jetbrains.kotlin.cli.jvm.K2JVMCompiler;
import org.jetbrains.kotlin.cli.metadata.K2MetadataCompiler;
import org.jetbrains.kotlin.config.KotlinCompilerVersion;
import org.jetbrains.kotlin.load.kotlin.JvmMetadataVersion;
import org.jetbrains.kotlin.test.CompilerTestUtil;
@@ -195,6 +196,10 @@ public abstract class AbstractCliTest extends TestCaseWithTmpdir {
doTest(fileName, new K2JSDce());
}
protected void doMetadataTest(@NotNull String fileName) {
doTest(fileName, new K2MetadataCompiler());
}
public static String removePerfOutput(String output) {
String[] lines = StringUtil.splitByLinesKeepSeparators(output);
StringBuilder result = new StringBuilder();
@@ -818,4 +818,19 @@ public class CliTestGenerated extends AbstractCliTest {
doJsDceTest(fileName);
}
}
@TestMetadata("compiler/testData/cli/metadata")
@TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)
public static class Metadata extends AbstractCliTest {
public void testAllFilesPresentInMetadata() throws Exception {
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/cli/metadata"), Pattern.compile("^(.+)\\.args$"), TargetBackend.ANY, false);
}
@TestMetadata("moduleName.args")
public void testModuleName() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/metadata/moduleName.args");
doMetadataTest(fileName);
}
}
}
@@ -284,6 +284,7 @@ fun main(args: Array<String>) {
model("cli/jvm", extension = "args", testMethod = "doJvmTest", recursive = false)
model("cli/js", extension = "args", testMethod = "doJsTest", recursive = false)
model("cli/js-dce", extension = "args", testMethod = "doJsDceTest", recursive = false)
model("cli/metadata", extension = "args", testMethod = "doMetadataTest", recursive = false)
}
testClass<AbstractReplInterpreterTest> {