From c5c4c9cfcc3e15e9b815e03dc9ef19ce72f5e94b Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Thu, 2 Nov 2017 18:57:08 +0100 Subject: [PATCH] Support "-module-name" argument for common code compiler #KT-20892 Fixed --- .../arguments/K2MetadataCompilerArguments.kt | 3 +++ .../kotlin/cli/metadata/K2MetadataCompiler.kt | 2 +- compiler/testData/cli/metadata/moduleName.args | 5 +++++ compiler/testData/cli/metadata/moduleName.kt | 3 +++ compiler/testData/cli/metadata/moduleName.out | 1 + compiler/testData/cli/metadata/moduleName.test | 1 + .../org/jetbrains/kotlin/cli/AbstractCliTest.java | 5 +++++ .../jetbrains/kotlin/cli/CliTestGenerated.java | 15 +++++++++++++++ .../generators/tests/GenerateCompilerTests.kt | 1 + 9 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 compiler/testData/cli/metadata/moduleName.args create mode 100644 compiler/testData/cli/metadata/moduleName.kt create mode 100644 compiler/testData/cli/metadata/moduleName.out create mode 100644 compiler/testData/cli/metadata/moduleName.test diff --git a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/K2MetadataCompilerArguments.kt b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/K2MetadataCompilerArguments.kt index 6838cb065b5..0a1d23f4c2d 100644 --- a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/K2MetadataCompilerArguments.kt +++ b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/K2MetadataCompilerArguments.kt @@ -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 = "", description = "Name of the generated .kotlin_module file") + var moduleName: String? by FreezableVar(null) } diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/K2MetadataCompiler.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/K2MetadataCompiler.kt index c4416d7c6b1..a5c927b1f8c 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/K2MetadataCompiler.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/K2MetadataCompiler.kt @@ -64,7 +64,7 @@ class K2MetadataCompiler : CLICompiler() { 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) { diff --git a/compiler/testData/cli/metadata/moduleName.args b/compiler/testData/cli/metadata/moduleName.args new file mode 100644 index 00000000000..66d2212609c --- /dev/null +++ b/compiler/testData/cli/metadata/moduleName.args @@ -0,0 +1,5 @@ +$TESTDATA_DIR$/moduleName.kt +-d +$TEMP_DIR$ +-module-name +foo diff --git a/compiler/testData/cli/metadata/moduleName.kt b/compiler/testData/cli/metadata/moduleName.kt new file mode 100644 index 00000000000..50ca98d4719 --- /dev/null +++ b/compiler/testData/cli/metadata/moduleName.kt @@ -0,0 +1,3 @@ +package test + +expect fun bar() diff --git a/compiler/testData/cli/metadata/moduleName.out b/compiler/testData/cli/metadata/moduleName.out new file mode 100644 index 00000000000..d86bac9de59 --- /dev/null +++ b/compiler/testData/cli/metadata/moduleName.out @@ -0,0 +1 @@ +OK diff --git a/compiler/testData/cli/metadata/moduleName.test b/compiler/testData/cli/metadata/moduleName.test new file mode 100644 index 00000000000..598c8e32136 --- /dev/null +++ b/compiler/testData/cli/metadata/moduleName.test @@ -0,0 +1 @@ +// EXISTS: META-INF/foo.kotlin_module diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/cli/AbstractCliTest.java b/compiler/tests-common/tests/org/jetbrains/kotlin/cli/AbstractCliTest.java index f8c99406641..db44fd9e360 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/cli/AbstractCliTest.java +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/cli/AbstractCliTest.java @@ -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(); diff --git a/compiler/tests/org/jetbrains/kotlin/cli/CliTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/cli/CliTestGenerated.java index 296721c26b1..1a6a5388549 100644 --- a/compiler/tests/org/jetbrains/kotlin/cli/CliTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/cli/CliTestGenerated.java @@ -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); + } + } } diff --git a/compiler/tests/org/jetbrains/kotlin/generators/tests/GenerateCompilerTests.kt b/compiler/tests/org/jetbrains/kotlin/generators/tests/GenerateCompilerTests.kt index 92d643f9fde..7d81aaf4ffd 100644 --- a/compiler/tests/org/jetbrains/kotlin/generators/tests/GenerateCompilerTests.kt +++ b/compiler/tests/org/jetbrains/kotlin/generators/tests/GenerateCompilerTests.kt @@ -284,6 +284,7 @@ fun main(args: Array) { 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 {