From 3323fd5a111539949bd4ffe82438822506659ef0 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Tue, 24 Jul 2018 13:43:32 +0200 Subject: [PATCH] Check "kotlin" package usage when compiling common code #KT-25369 Fixed --- .../jetbrains/kotlin/cli/metadata/K2MetadataCompiler.kt | 9 +++++---- compiler/testData/cli/metadata/kotlinPackage.args | 3 +++ compiler/testData/cli/metadata/kotlinPackage.out | 4 ++++ .../tests/org/jetbrains/kotlin/cli/CliTestGenerated.java | 5 +++++ libraries/stdlib/common/build.gradle | 3 ++- 5 files changed, 19 insertions(+), 5 deletions(-) create mode 100644 compiler/testData/cli/metadata/kotlinPackage.args create mode 100644 compiler/testData/cli/metadata/kotlinPackage.out 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 838c5606b9b..b2f54454321 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/K2MetadataCompiler.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/K2MetadataCompiler.kt @@ -17,10 +17,7 @@ package org.jetbrains.kotlin.cli.metadata import com.intellij.openapi.Disposable -import org.jetbrains.kotlin.cli.common.CLICompiler -import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys -import org.jetbrains.kotlin.cli.common.CommonCompilerPerformanceManager -import org.jetbrains.kotlin.cli.common.ExitCode +import org.jetbrains.kotlin.cli.common.* import org.jetbrains.kotlin.cli.common.arguments.K2MetadataCompilerArguments import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity.* import org.jetbrains.kotlin.cli.common.messages.MessageUtil @@ -71,6 +68,8 @@ class K2MetadataCompiler : CLICompiler() { configuration.put(CommonConfigurationKeys.MODULE_NAME, arguments.moduleName ?: JvmAbi.DEFAULT_MODULE_NAME) + configuration.put(CLIConfigurationKeys.ALLOW_KOTLIN_PACKAGE, arguments.allowKotlinPackage) + val destination = arguments.destination if (destination != null) { if (destination.endsWith(".jar")) { @@ -90,6 +89,8 @@ class K2MetadataCompiler : CLICompiler() { return ExitCode.COMPILATION_ERROR } + checkKotlinPackageUsage(environment, environment.getSourceFiles()) + try { val metadataVersion = configuration.get(CommonConfigurationKeys.METADATA_VERSION) as? BuiltInsBinaryVersion ?: BuiltInsBinaryVersion.INSTANCE diff --git a/compiler/testData/cli/metadata/kotlinPackage.args b/compiler/testData/cli/metadata/kotlinPackage.args new file mode 100644 index 00000000000..306fba0cf08 --- /dev/null +++ b/compiler/testData/cli/metadata/kotlinPackage.args @@ -0,0 +1,3 @@ +$TESTDATA_DIR$/../kotlinPackage.kt +-d +$TEMP_DIR$ diff --git a/compiler/testData/cli/metadata/kotlinPackage.out b/compiler/testData/cli/metadata/kotlinPackage.out new file mode 100644 index 00000000000..806c7c329f3 --- /dev/null +++ b/compiler/testData/cli/metadata/kotlinPackage.out @@ -0,0 +1,4 @@ +compiler/testData/cli/kotlinPackage.kt:1:1: error: only the Kotlin standard library is allowed to use the 'kotlin' package +package kotlin.mylibrary +^ +COMPILATION_ERROR diff --git a/compiler/tests/org/jetbrains/kotlin/cli/CliTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/cli/CliTestGenerated.java index 480571a3f73..b042da313df 100644 --- a/compiler/tests/org/jetbrains/kotlin/cli/CliTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/cli/CliTestGenerated.java @@ -865,6 +865,11 @@ public class CliTestGenerated extends AbstractCliTest { KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/cli/metadata"), Pattern.compile("^(.+)\\.args$"), TargetBackend.ANY, false); } + @TestMetadata("kotlinPackage.args") + public void testKotlinPackage() throws Exception { + runTest("compiler/testData/cli/metadata/kotlinPackage.args"); + } + @TestMetadata("moduleName.args") public void testModuleName() throws Exception { runTest("compiler/testData/cli/metadata/moduleName.args"); diff --git a/libraries/stdlib/common/build.gradle b/libraries/stdlib/common/build.gradle index bc2cd2ed320..5be8de23749 100644 --- a/libraries/stdlib/common/build.gradle +++ b/libraries/stdlib/common/build.gradle @@ -81,7 +81,8 @@ compileCoroutinesKotlinCommon { languageVersion = "1.3" apiVersion = "1.3" freeCompilerArgs = [ - "-module-name", project.name + "-module-name", project.name, + "-Xallow-kotlin-package" ] } }