[FE] Rename FreedomForSealedClasses feature with more meaningful name
This commit is contained in:
committed by
TeamCityServer
parent
77aad06008
commit
b6bd7c48f4
@@ -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
|
||||||
|
|||||||
+1
-1
@@ -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) {
|
||||||
|
|||||||
+1
-2
@@ -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
-1
@@ -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,
|
||||||
|
|||||||
Vendored
+1
-1
@@ -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
-1
@@ -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
-1
@@ -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
-1
@@ -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
-1
@@ -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
-1
@@ -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
-1
@@ -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
|
||||||
|
|||||||
+2
-2
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user