diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/CompilerDeserializationConfiguration.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/CompilerDeserializationConfiguration.kt index 83302bfd6e3..e63a899c206 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/CompilerDeserializationConfiguration.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/CompilerDeserializationConfiguration.kt @@ -25,4 +25,6 @@ class CompilerDeserializationConfiguration(languageVersionSettings: LanguageVers override val typeAliasesAllowed = languageVersionSettings.supportsFeature(LanguageFeature.TypeAliases) override val skipMetadataVersionCheck = languageVersionSettings.getFlag(AnalysisFlag.skipMetadataVersionCheck) + + override val isJvmPackageNameSupported = languageVersionSettings.supportsFeature(LanguageFeature.JvmPackageName) } diff --git a/compiler/testData/compileKotlinAgainstKotlin/jvmPackageName.kt b/compiler/testData/compileKotlinAgainstKotlin/jvmPackageName.kt index 60d806b1a79..8a351766474 100644 --- a/compiler/testData/compileKotlinAgainstKotlin/jvmPackageName.kt +++ b/compiler/testData/compileKotlinAgainstKotlin/jvmPackageName.kt @@ -13,6 +13,7 @@ var v: Int = 1 inline fun i(block: () -> Unit) = block() // FILE: B.kt +// LANGUAGE_VERSION: 1.2 import foo.* diff --git a/compiler/testData/compileKotlinAgainstKotlin/jvmPackageNameInRootPackage.kt b/compiler/testData/compileKotlinAgainstKotlin/jvmPackageNameInRootPackage.kt index 4f144899965..65d9f3365ab 100644 --- a/compiler/testData/compileKotlinAgainstKotlin/jvmPackageNameInRootPackage.kt +++ b/compiler/testData/compileKotlinAgainstKotlin/jvmPackageNameInRootPackage.kt @@ -10,6 +10,7 @@ fun f() = "OK" var v: Int = 1 // FILE: B.kt +// LANGUAGE_VERSION: 1.2 fun box(): String { v = 2 diff --git a/compiler/testData/compileKotlinAgainstKotlin/jvmPackageNameWithJvmName.kt b/compiler/testData/compileKotlinAgainstKotlin/jvmPackageNameWithJvmName.kt index a696b26ec0c..d5aa6ce0906 100644 --- a/compiler/testData/compileKotlinAgainstKotlin/jvmPackageNameWithJvmName.kt +++ b/compiler/testData/compileKotlinAgainstKotlin/jvmPackageNameWithJvmName.kt @@ -12,6 +12,7 @@ fun f() = "OK" var v: Int = 1 // FILE: B.kt +// LANGUAGE_VERSION: 1.2 import foo.* diff --git a/compiler/testData/jvmPackageTable/jvmPackageNameLanguageVersion11/Foo.kt b/compiler/testData/jvmPackageTable/jvmPackageNameLanguageVersion11/Foo.kt new file mode 100644 index 00000000000..ffa0ca17992 --- /dev/null +++ b/compiler/testData/jvmPackageTable/jvmPackageNameLanguageVersion11/Foo.kt @@ -0,0 +1,3 @@ +package foo + +fun file1() {} diff --git a/compiler/testData/jvmPackageTable/jvmPackageNameLanguageVersion11/FooAsJ.kt b/compiler/testData/jvmPackageTable/jvmPackageNameLanguageVersion11/FooAsJ.kt new file mode 100644 index 00000000000..ad28a3952ca --- /dev/null +++ b/compiler/testData/jvmPackageTable/jvmPackageNameLanguageVersion11/FooAsJ.kt @@ -0,0 +1,5 @@ +@file:Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE") +@file:JvmPackageName("j") +package foo + +fun file2() {} diff --git a/compiler/testData/jvmPackageTable/jvmPackageNameLanguageVersion11/jvm-package-table.txt b/compiler/testData/jvmPackageTable/jvmPackageNameLanguageVersion11/jvm-package-table.txt new file mode 100644 index 00000000000..78bc5936829 --- /dev/null +++ b/compiler/testData/jvmPackageTable/jvmPackageNameLanguageVersion11/jvm-package-table.txt @@ -0,0 +1,2 @@ +foo + foo/FooKt diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/JvmPackageTableTest.kt b/compiler/tests/org/jetbrains/kotlin/codegen/JvmPackageTableTest.kt index 12d5752cf82..dbcb53f5f2a 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/JvmPackageTableTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/codegen/JvmPackageTableTest.kt @@ -86,4 +86,9 @@ class JvmPackageTableTest : KtUsefulTestCase() { doTest("/jvmPackageTable/jvmPackageNameManyParts", compileWith = LanguageVersion.KOTLIN_1_2, loadWith = LanguageVersion.KOTLIN_1_2) } + + fun testJvmPackageNameLanguageVersion11() { + doTest("/jvmPackageTable/jvmPackageNameLanguageVersion11", + compileWith = LanguageVersion.KOTLIN_1_2, loadWith = LanguageVersion.KOTLIN_1_1) + } } diff --git a/compiler/util/src/org/jetbrains/kotlin/config/LanguageVersionSettings.kt b/compiler/util/src/org/jetbrains/kotlin/config/LanguageVersionSettings.kt index 9ed153229f3..e697cc2d81c 100644 --- a/compiler/util/src/org/jetbrains/kotlin/config/LanguageVersionSettings.kt +++ b/compiler/util/src/org/jetbrains/kotlin/config/LanguageVersionSettings.kt @@ -61,6 +61,7 @@ enum class LanguageFeature( LateinitLocalVariables(KOTLIN_1_2), InnerClassInEnumEntryClass(KOTLIN_1_2), CallableReferencesToClassMembersWithEmptyLHS(KOTLIN_1_2), + JvmPackageName(KOTLIN_1_2), RestrictionOfValReassignmentViaBackingField(KOTLIN_1_3), NestedClassesInEnumEntryShouldBeInner(KOTLIN_1_3), diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/ModuleMapping.kt b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/ModuleMapping.kt index d703f09064a..9071b6e2f6d 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/ModuleMapping.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/ModuleMapping.kt @@ -77,12 +77,14 @@ class ModuleMapping private constructor(val packageFqName2Parts: Map