[FE] Rename FreedomForSealedClasses feature with more meaningful name

This commit is contained in:
Dmitriy Novozhilov
2020-12-01 10:37:50 +03:00
committed by TeamCityServer
parent 77aad06008
commit b6bd7c48f4
20 changed files with 22 additions and 23 deletions
@@ -56,7 +56,7 @@ import org.jetbrains.kotlin.util.ReenteringLazyValueComputationException;
import java.util.*; import java.util.*;
import static org.jetbrains.kotlin.config.LanguageFeature.FreedomForSealedClasses; import static org.jetbrains.kotlin.config.LanguageFeature.AllowSealedInheritorsInDifferentFilesOfSamePackage;
import static org.jetbrains.kotlin.config.LanguageFeature.TopLevelSealedInheritance; import static org.jetbrains.kotlin.config.LanguageFeature.TopLevelSealedInheritance;
import static org.jetbrains.kotlin.diagnostics.Errors.*; import static org.jetbrains.kotlin.diagnostics.Errors.*;
import static org.jetbrains.kotlin.resolve.BindingContext.*; import static org.jetbrains.kotlin.resolve.BindingContext.*;
@@ -637,7 +637,7 @@ public class BodyResolver {
} }
if (containingDescriptor == null) { if (containingDescriptor == null) {
if ( if (
!languageVersionSettings.supportsFeature(FreedomForSealedClasses) || !languageVersionSettings.supportsFeature(AllowSealedInheritorsInDifferentFilesOfSamePackage) ||
DescriptorUtils.isLocal(supertypeOwner) DescriptorUtils.isLocal(supertypeOwner)
) { ) {
trace.report(SEALED_SUPERTYPE.on(typeReference)); trace.report(SEALED_SUPERTYPE.on(typeReference));
@@ -392,7 +392,7 @@ class FunctionDescriptorResolver(
resolveValueParameters(constructorDescriptor, parameterScope, valueParameters, trace, null), resolveValueParameters(constructorDescriptor, parameterScope, valueParameters, trace, null),
resolveVisibilityFromModifiers( resolveVisibilityFromModifiers(
modifierList, modifierList,
DescriptorUtils.getDefaultConstructorVisibility(classDescriptor, languageVersionSettings.supportsFeature(LanguageFeature.FreedomForSealedClasses)) DescriptorUtils.getDefaultConstructorVisibility(classDescriptor, languageVersionSettings.supportsFeature(LanguageFeature.AllowSealedInheritorsInDifferentFilesOfSamePackage))
) )
) )
constructor.returnType = classDescriptor.defaultType constructor.returnType = classDescriptor.defaultType
@@ -17,7 +17,7 @@ import org.jetbrains.kotlin.resolve.bindingContextUtil.getAbbreviatedTypeOrType
object SealedInheritorInSamePackageChecker : DeclarationChecker { object SealedInheritorInSamePackageChecker : DeclarationChecker {
override fun check(declaration: KtDeclaration, descriptor: DeclarationDescriptor, context: DeclarationCheckerContext) { override fun check(declaration: KtDeclaration, descriptor: DeclarationDescriptor, context: DeclarationCheckerContext) {
if (!context.languageVersionSettings.supportsFeature(LanguageFeature.FreedomForSealedClasses)) return if (!context.languageVersionSettings.supportsFeature(LanguageFeature.AllowSealedInheritorsInDifferentFilesOfSamePackage)) return
if (descriptor !is ClassDescriptor || declaration !is KtClassOrObject) return if (descriptor !is ClassDescriptor || declaration !is KtClassOrObject) return
val classPackage = descriptor.containingPackage() ?: return // local class, SEALED_SUPERTYPE already reported val classPackage = descriptor.containingPackage() ?: return // local class, SEALED_SUPERTYPE already reported
for (superTypeListEntry in declaration.superTypeListEntries) { for (superTypeListEntry in declaration.superTypeListEntries) {
@@ -30,7 +30,6 @@ import org.jetbrains.kotlin.resolve.BindingContext;
import org.jetbrains.kotlin.resolve.BindingTrace; import org.jetbrains.kotlin.resolve.BindingTrace;
import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils; import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils;
import org.jetbrains.kotlin.resolve.DescriptorUtils; import org.jetbrains.kotlin.resolve.DescriptorUtils;
import org.jetbrains.kotlin.resolve.descriptorUtil.DescriptorUtilsKt;
import org.jetbrains.kotlin.resolve.lazy.ForceResolveUtil; import org.jetbrains.kotlin.resolve.lazy.ForceResolveUtil;
import org.jetbrains.kotlin.resolve.lazy.LazyClassContext; import org.jetbrains.kotlin.resolve.lazy.LazyClassContext;
import org.jetbrains.kotlin.resolve.lazy.LazyEntity; import org.jetbrains.kotlin.resolve.lazy.LazyEntity;
@@ -270,7 +269,7 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements ClassDes
) )
); );
boolean freedomForSealedInterfacesSupported = c.getLanguageVersionSettings().supportsFeature(LanguageFeature.FreedomForSealedClasses); boolean freedomForSealedInterfacesSupported = c.getLanguageVersionSettings().supportsFeature(LanguageFeature.AllowSealedInheritorsInDifferentFilesOfSamePackage);
this.sealedSubclasses = storageManager.createLazyValue(() -> c.getSealedClassInheritorsProvider().computeSealedSubclasses(this, freedomForSealedInterfacesSupported)); this.sealedSubclasses = storageManager.createLazyValue(() -> c.getSealedClassInheritorsProvider().computeSealedSubclasses(this, freedomForSealedInterfacesSupported));
} }
@@ -1,6 +1,6 @@
// ISSUE: KT-13495 // ISSUE: KT-13495
// IGNORE_BACKEND_FIR: JVM_IR // IGNORE_BACKEND_FIR: JVM_IR
// !LANGUAGE: +FreedomForSealedClasses // !LANGUAGE: +AllowSealedInheritorsInDifferentFilesOfSamePackage
// FILE: Base.kt // FILE: Base.kt
@@ -1,7 +1,7 @@
warning: ATTENTION! warning: ATTENTION!
This build uses unsafe internal compiler arguments: This build uses unsafe internal compiler arguments:
-XXLanguage:+FreedomForSealedClasses -XXLanguage:+AllowSealedInheritorsInDifferentFilesOfSamePackage
-XXLanguage:+SealedInterfaces -XXLanguage:+SealedInterfaces
This mode is not recommended for production use, This mode is not recommended for production use,
@@ -1,7 +1,7 @@
warning: ATTENTION! warning: ATTENTION!
This build uses unsafe internal compiler arguments: This build uses unsafe internal compiler arguments:
-XXLanguage:+FreedomForSealedClasses -XXLanguage:+AllowSealedInheritorsInDifferentFilesOfSamePackage
-XXLanguage:+SealedInterfaces -XXLanguage:+SealedInterfaces
This mode is not recommended for production use, This mode is not recommended for production use,
@@ -1,6 +1,6 @@
// ISSUE: KT-13495 // ISSUE: KT-13495
// !DIAGNOSTICS: -UNUSED_VARIABLE // !DIAGNOSTICS: -UNUSED_VARIABLE
// !LANGUAGE: +FreedomForSealedClasses // !LANGUAGE: +AllowSealedInheritorsInDifferentFilesOfSamePackage
// FILE: Base.kt // FILE: Base.kt
@@ -1,6 +1,6 @@
// ISSUE: KT-13495 // ISSUE: KT-13495
// !DIAGNOSTICS: -UNUSED_VARIABLE // !DIAGNOSTICS: -UNUSED_VARIABLE
// !LANGUAGE: +FreedomForSealedClasses // !LANGUAGE: +AllowSealedInheritorsInDifferentFilesOfSamePackage
// FILE: Base.kt // FILE: Base.kt
@@ -1,5 +1,5 @@
// ISSUE: KT-13495 // ISSUE: KT-13495
// !LANGUAGE: +FreedomForSealedClasses // !LANGUAGE: +AllowSealedInheritorsInDifferentFilesOfSamePackage
// FILE: a.kt // FILE: a.kt
@@ -1,5 +1,5 @@
// ISSUE: KT-13495 // ISSUE: KT-13495
// !LANGUAGE: +FreedomForSealedClasses // !LANGUAGE: +AllowSealedInheritorsInDifferentFilesOfSamePackage
// FILE: a.kt // FILE: a.kt
@@ -1,5 +1,5 @@
// ISSUE: KT-13495 // ISSUE: KT-13495
// !LANGUAGE: +FreedomForSealedClasses // !LANGUAGE: +AllowSealedInheritorsInDifferentFilesOfSamePackage
// !DIAGNOSTICS: -UNUSED_VARIABLE // !DIAGNOSTICS: -UNUSED_VARIABLE
// FILE: base.kt // FILE: base.kt
@@ -1,5 +1,5 @@
// ISSUE: KT-13495 // ISSUE: KT-13495
// !LANGUAGE: +FreedomForSealedClasses // !LANGUAGE: +AllowSealedInheritorsInDifferentFilesOfSamePackage
// !DIAGNOSTICS: -UNUSED_VARIABLE // !DIAGNOSTICS: -UNUSED_VARIABLE
// FILE: base.kt // FILE: base.kt
@@ -1,5 +1,5 @@
// ISSUE: KT-20423 // ISSUE: KT-20423
// !LANGUAGE: +SealedInterfaces +FreedomForSealedClasses // !LANGUAGE: +SealedInterfaces +AllowSealedInheritorsInDifferentFilesOfSamePackage
// MODULE: m1 // MODULE: m1
// FILE: a.kt // FILE: a.kt
@@ -1,5 +1,5 @@
// ISSUE: KT-20423 // ISSUE: KT-20423
// !LANGUAGE: +SealedInterfaces +FreedomForSealedClasses // !LANGUAGE: +SealedInterfaces +AllowSealedInheritorsInDifferentFilesOfSamePackage
// MODULE: m1 // MODULE: m1
// FILE: a.kt // FILE: a.kt
@@ -1,5 +1,5 @@
// ISSUE: KT-20423 // ISSUE: KT-20423
// !LANGUAGE: +SealedInterfaces +FreedomForSealedClasses // !LANGUAGE: +SealedInterfaces +AllowSealedInheritorsInDifferentFilesOfSamePackage
// MODULE: m1 // MODULE: m1
// FILE: a.kt // FILE: a.kt
@@ -1,5 +1,5 @@
// ISSUE: KT-20423 // ISSUE: KT-20423
// !LANGUAGE: +SealedInterfaces +FreedomForSealedClasses // !LANGUAGE: +SealedInterfaces +AllowSealedInheritorsInDifferentFilesOfSamePackage
// MODULE: m1 // MODULE: m1
// FILE: a.kt // FILE: a.kt
@@ -1,6 +1,6 @@
// FIR_IDENTICAL // FIR_IDENTICAL
// ISSUE: KT-20423 // ISSUE: KT-20423
// !LANGUAGE: +FreedomForSealedClasses +SealedInterfaces // !LANGUAGE: +AllowSealedInheritorsInDifferentFilesOfSamePackage +SealedInterfaces
// !DIAGNOSTICS: -UNUSED_VARIABLE // !DIAGNOSTICS: -UNUSED_VARIABLE
sealed interface Base sealed interface Base
@@ -695,13 +695,13 @@ class CompileKotlinAgainstCustomBinariesTest : AbstractKotlinCompilerIntegration
} }
fun testSealedClassesAndInterfaces() { fun testSealedClassesAndInterfaces() {
val features = listOf("-XXLanguage:+FreedomForSealedClasses", "-XXLanguage:+SealedInterfaces") val features = listOf("-XXLanguage:+AllowSealedInheritorsInDifferentFilesOfSamePackage", "-XXLanguage:+SealedInterfaces")
val library = compileLibrary("library", additionalOptions = features, checkKotlinOutput = {}) val library = compileLibrary("library", additionalOptions = features, checkKotlinOutput = {})
compileKotlin("main.kt", tmpdir, listOf(library), additionalOptions = features) compileKotlin("main.kt", tmpdir, listOf(library), additionalOptions = features)
} }
fun testSealedInheritorInDifferentModule() { fun testSealedInheritorInDifferentModule() {
val features = listOf("-XXLanguage:+FreedomForSealedClasses", "-XXLanguage:+SealedInterfaces") val features = listOf("-XXLanguage:+AllowSealedInheritorsInDifferentFilesOfSamePackage", "-XXLanguage:+SealedInterfaces")
val library = compileLibrary("library", additionalOptions = features, checkKotlinOutput = {}) val library = compileLibrary("library", additionalOptions = features, checkKotlinOutput = {})
compileKotlin("main.kt", tmpdir, listOf(library), additionalOptions = features) compileKotlin("main.kt", tmpdir, listOf(library), additionalOptions = features)
} }
@@ -143,7 +143,7 @@ enum class LanguageFeature(
UseCorrectExecutionOrderForVarargArguments(KOTLIN_1_5, kind = BUG_FIX), UseCorrectExecutionOrderForVarargArguments(KOTLIN_1_5, kind = BUG_FIX),
JvmRecordSupport(KOTLIN_1_5), JvmRecordSupport(KOTLIN_1_5),
FreedomForSealedClasses(KOTLIN_1_5), AllowSealedInheritorsInDifferentFilesOfSamePackage(KOTLIN_1_5),
SealedInterfaces(KOTLIN_1_5), SealedInterfaces(KOTLIN_1_5),
// Temporarily disabled, see KT-27084/KT-22379 // Temporarily disabled, see KT-27084/KT-22379