diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/CompilerDeserializationConfiguration.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/CompilerDeserializationConfiguration.kt index ff5a9315c9a..81e0b9667de 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/CompilerDeserializationConfiguration.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/CompilerDeserializationConfiguration.kt @@ -16,7 +16,11 @@ package org.jetbrains.kotlin.resolve +import org.jetbrains.kotlin.config.LanguageFeature import org.jetbrains.kotlin.config.LanguageVersionSettings import org.jetbrains.kotlin.serialization.deserialization.DeserializationConfiguration -class CompilerDeserializationConfiguration(private val languageVersionSettings: LanguageVersionSettings) : DeserializationConfiguration +class CompilerDeserializationConfiguration(private val languageVersionSettings: LanguageVersionSettings) : DeserializationConfiguration { + override val typeAliasesAllowed: Boolean + get() = languageVersionSettings.supportsFeature(LanguageFeature.TypeAliases) +} diff --git a/compiler/testData/compileKotlinAgainstCustomBinaries/typeAliasesAreInvisibleInCompatibilityMode/main.kt b/compiler/testData/compileKotlinAgainstCustomBinaries/typeAliasesAreInvisibleInCompatibilityMode/main.kt new file mode 100644 index 00000000000..d22cda1a673 --- /dev/null +++ b/compiler/testData/compileKotlinAgainstCustomBinaries/typeAliasesAreInvisibleInCompatibilityMode/main.kt @@ -0,0 +1,8 @@ +import test.* +import test.Str + +fun use( + str: Str, + l: L, + nested: Klass.Nested +) {} diff --git a/compiler/testData/compileKotlinAgainstCustomBinaries/typeAliasesAreInvisibleInCompatibilityMode/output.txt b/compiler/testData/compileKotlinAgainstCustomBinaries/typeAliasesAreInvisibleInCompatibilityMode/output.txt new file mode 100644 index 00000000000..220511ed980 --- /dev/null +++ b/compiler/testData/compileKotlinAgainstCustomBinaries/typeAliasesAreInvisibleInCompatibilityMode/output.txt @@ -0,0 +1,16 @@ +compiler/testData/compileKotlinAgainstCustomBinaries/typeAliasesAreInvisibleInCompatibilityMode/main.kt:2:13: error: unresolved reference: Str +import test.Str + ^ +compiler/testData/compileKotlinAgainstCustomBinaries/typeAliasesAreInvisibleInCompatibilityMode/main.kt:5:14: error: unresolved reference: Str + str: Str, + ^ +compiler/testData/compileKotlinAgainstCustomBinaries/typeAliasesAreInvisibleInCompatibilityMode/main.kt:6:12: error: unresolved reference: L + l: L, + ^ +compiler/testData/compileKotlinAgainstCustomBinaries/typeAliasesAreInvisibleInCompatibilityMode/main.kt:6:14: error: unresolved reference: Str + l: L, + ^ +compiler/testData/compileKotlinAgainstCustomBinaries/typeAliasesAreInvisibleInCompatibilityMode/main.kt:7:23: error: unresolved reference: Nested + nested: Klass.Nested + ^ +COMPILATION_ERROR \ No newline at end of file diff --git a/compiler/testData/compileKotlinAgainstCustomBinaries/typeAliasesAreInvisibleInCompatibilityMode/typeAliases.kt b/compiler/testData/compileKotlinAgainstCustomBinaries/typeAliasesAreInvisibleInCompatibilityMode/typeAliases.kt new file mode 100644 index 00000000000..a2733f9cde4 --- /dev/null +++ b/compiler/testData/compileKotlinAgainstCustomBinaries/typeAliasesAreInvisibleInCompatibilityMode/typeAliases.kt @@ -0,0 +1,10 @@ +package test + +typealias Str = String +typealias L = List + +class Klass { + typealias Nested = Z + + class Z +} diff --git a/compiler/tests/org/jetbrains/kotlin/jvm/compiler/CompileKotlinAgainstCustomBinariesTest.java b/compiler/tests/org/jetbrains/kotlin/jvm/compiler/CompileKotlinAgainstCustomBinariesTest.java index dc3db0287ed..cfc2ce74a83 100644 --- a/compiler/tests/org/jetbrains/kotlin/jvm/compiler/CompileKotlinAgainstCustomBinariesTest.java +++ b/compiler/tests/org/jetbrains/kotlin/jvm/compiler/CompileKotlinAgainstCustomBinariesTest.java @@ -188,14 +188,14 @@ public class CompileKotlinAgainstCustomBinariesTest extends TestCaseWithTmpdir { @NotNull File output, @NotNull File... classpath ) { - return compileKotlin(fileName, output, false, classpath); + return compileKotlin(fileName, output, Collections.emptyList(), classpath); } @NotNull private Pair compileKotlin( @NotNull String fileName, @NotNull File output, - boolean jvm8Target, + List additionalOptions, @NotNull File... classpath ) { List args = new ArrayList(); @@ -208,10 +208,7 @@ public class CompileKotlinAgainstCustomBinariesTest extends TestCaseWithTmpdir { } args.add("-d"); args.add(output.getPath()); - if (jvm8Target) { - args.add("-jvm-target"); - args.add("1.8"); - } + args.addAll(additionalOptions); return AbstractCliTest.executeCompilerGrabOutput(new K2JVMCompiler(), args); } @@ -427,9 +424,17 @@ public class CompileKotlinAgainstCustomBinariesTest extends TestCaseWithTmpdir { private void target6Inheritance() { compileKotlin("target6.kt", tmpdir); - compileKotlin("main.kt", tmpdir, true, tmpdir); + Pair outputMain = compileKotlin("main.kt", tmpdir, Arrays.asList("-jvm-target", "1.8"), tmpdir); - Pair outputMain = compileKotlin("main.kt", tmpdir, true, tmpdir); + KotlinTestUtils.assertEqualsToFile( + new File(getTestDataDirectory(), "output.txt"), normalizeOutput(outputMain) + ); + } + + public void testTypeAliasesAreInvisibleInCompatibilityMode() { + compileKotlin("typeAliases.kt", tmpdir); + + Pair outputMain = compileKotlin("main.kt", tmpdir, Arrays.asList("-language-version", "1.0"), tmpdir); KotlinTestUtils.assertEqualsToFile( new File(getTestDataDirectory(), "output.txt"), normalizeOutput(outputMain) diff --git a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/DeserializationConfiguration.kt b/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/DeserializationConfiguration.kt index 1ecb077eb5e..28c81c9e74d 100644 --- a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/DeserializationConfiguration.kt +++ b/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/DeserializationConfiguration.kt @@ -17,5 +17,8 @@ package org.jetbrains.kotlin.serialization.deserialization interface DeserializationConfiguration { + val typeAliasesAllowed: Boolean + get() = true + object Default : DeserializationConfiguration } diff --git a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedMemberScope.kt b/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedMemberScope.kt index a5ee76d26b6..f3726e2a798 100644 --- a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedMemberScope.kt +++ b/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedMemberScope.kt @@ -51,7 +51,9 @@ abstract class DeserializedMemberScope protected constructor( } private val typeAliasProtos by c.storageManager.createLazyValue { - typeAliasList.groupByName { it.name } + if (c.components.configuration.typeAliasesAllowed) + typeAliasList.groupByName { it.name } + else emptyMap() } private val functions =