Revert OPT_IN_MARKER_ON_OVERRIDE limitation #KT-48890 Fixed
This commit is contained in:
-6
@@ -36352,12 +36352,6 @@ public class DiagnosisCompilerTestFE10TestdataTestGenerated extends AbstractDiag
|
||||
runTest("compiler/testData/diagnostics/testsWithStdLib/experimental/experimentalIsNotEnabled.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("experimentalOnOverrideWarning.kt")
|
||||
public void testExperimentalOnOverrideWarning() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/testsWithStdLib/experimental/experimentalOnOverrideWarning.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("experimentalSetter.kt")
|
||||
public void testExperimentalSetter() throws Exception {
|
||||
|
||||
-6
@@ -36352,12 +36352,6 @@ public class FirOldFrontendDiagnosticsTestGenerated extends AbstractFirDiagnosti
|
||||
runTest("compiler/testData/diagnostics/testsWithStdLib/experimental/experimentalIsNotEnabled.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("experimentalOnOverrideWarning.kt")
|
||||
public void testExperimentalOnOverrideWarning() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/testsWithStdLib/experimental/experimentalOnOverrideWarning.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("experimentalSetter.kt")
|
||||
public void testExperimentalSetter() throws Exception {
|
||||
|
||||
-6
@@ -36352,12 +36352,6 @@ public class FirOldFrontendDiagnosticsWithLightTreeTestGenerated extends Abstrac
|
||||
runTest("compiler/testData/diagnostics/testsWithStdLib/experimental/experimentalIsNotEnabled.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("experimentalOnOverrideWarning.kt")
|
||||
public void testExperimentalOnOverrideWarning() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/testsWithStdLib/experimental/experimentalOnOverrideWarning.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("experimentalSetter.kt")
|
||||
public void testExperimentalSetter() throws Exception {
|
||||
|
||||
-22
@@ -346,28 +346,6 @@ object FirOverrideChecker : FirClassChecker() {
|
||||
reportNotAcceptedOverrideExperimentalities(
|
||||
overriddenExperimentalities, memberSymbol, context, reporter
|
||||
)
|
||||
for (annotation in memberSymbol.fir.annotations) {
|
||||
val annotationType = annotation.annotationTypeRef.coneTypeSafe<ConeClassLikeType>()
|
||||
val lookupTag = annotationType?.lookupTag ?: continue
|
||||
withSuppressedDiagnostics(annotation, context) {
|
||||
val useSiteTarget = annotation.useSiteTarget
|
||||
if (useSiteTarget == null || useSiteTarget == AnnotationUseSiteTarget.PROPERTY) {
|
||||
val experimentality = lookupTag.toFirRegularClassSymbol(session)?.loadExperimentalityForMarkerAnnotation()
|
||||
if (experimentality != null && experimentality !in overriddenExperimentalities && overriddenMemberSymbols.all {
|
||||
val ownerClassSymbol = it.dispatchReceiverClassOrNull()?.toFirRegularClassSymbol(session)
|
||||
ownerClassSymbol == null || !ownerClassSymbol.hasAnnotationItselfOrInParent(context, lookupTag.classId)
|
||||
}
|
||||
) {
|
||||
val factory = if (session.languageVersionSettings.supportsFeature(LanguageFeature.OptInOnOverrideForbidden)) {
|
||||
FirErrors.OPT_IN_MARKER_ON_OVERRIDE
|
||||
} else {
|
||||
FirErrors.OPT_IN_MARKER_ON_OVERRIDE_WARNING
|
||||
}
|
||||
reporter.reportOn(annotation.source, factory, context)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
-16
@@ -82,22 +82,6 @@ class ExperimentalMarkerDeclarationAnnotationChecker(private val module: ModuleD
|
||||
) {
|
||||
trace.report(Errors.OPT_IN_MARKER_ON_WRONG_TARGET.on(entry, "field"))
|
||||
}
|
||||
if (annotated is KtCallableDeclaration &&
|
||||
annotated !is KtPropertyAccessor &&
|
||||
annotationUseSiteTarget == null &&
|
||||
annotated.hasModifier(KtTokens.OVERRIDE_KEYWORD)
|
||||
) {
|
||||
val descriptor = trace.get(BindingContext.DECLARATION_TO_DESCRIPTOR, annotated)
|
||||
if (descriptor is CallableMemberDescriptor &&
|
||||
!descriptor.hasExperimentalOverriddenDescriptors(annotationClass.fqNameSafe)
|
||||
) {
|
||||
if (languageVersionSettings.supportsFeature(LanguageFeature.OptInOnOverrideForbidden)) {
|
||||
trace.report(Errors.OPT_IN_MARKER_ON_OVERRIDE.on(entry))
|
||||
} else {
|
||||
trace.report(Errors.OPT_IN_MARKER_ON_OVERRIDE_WARNING.on(entry))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Vendored
-13
@@ -1,13 +0,0 @@
|
||||
// FIR_IDENTICAL
|
||||
// !OPT_IN: kotlin.RequiresOptIn
|
||||
// !LANGUAGE: -OptInOnOverrideForbidden
|
||||
|
||||
@RequiresOptIn(level = RequiresOptIn.Level.WARNING)
|
||||
@Retention(AnnotationRetention.BINARY)
|
||||
annotation class E
|
||||
|
||||
class My {
|
||||
<!OPT_IN_MARKER_ON_OVERRIDE_WARNING!>@E<!>
|
||||
override fun hashCode() = 0
|
||||
}
|
||||
|
||||
Vendored
-15
@@ -1,15 +0,0 @@
|
||||
package
|
||||
|
||||
@kotlin.RequiresOptIn(level = Level.WARNING) @kotlin.annotation.Retention(value = AnnotationRetention.BINARY) public final annotation class E : kotlin.Annotation {
|
||||
public constructor E()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public final class My {
|
||||
public constructor My()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
@E public open override /*1*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
+2
-3
@@ -1,6 +1,5 @@
|
||||
// FIR_IDENTICAL
|
||||
// !OPT_IN: kotlin.RequiresOptIn
|
||||
// !LANGUAGE: +OptInOnOverrideForbidden
|
||||
// FILE: api.kt
|
||||
|
||||
package api
|
||||
@@ -57,7 +56,7 @@ var some: Int
|
||||
val another: Int = 42
|
||||
|
||||
class My {
|
||||
<!OPT_IN_MARKER_ON_OVERRIDE!>@E6<!>
|
||||
@E6
|
||||
override fun hashCode() = 0
|
||||
}
|
||||
|
||||
@@ -73,7 +72,7 @@ interface Base {
|
||||
}
|
||||
|
||||
class Derived : Base {
|
||||
<!OPT_IN_MARKER_ON_OVERRIDE!>@E6<!>
|
||||
@E6
|
||||
override val bar: Int = 42
|
||||
|
||||
@set:E6 <!OPT_IN_MARKER_ON_WRONG_TARGET!>@setparam:E6<!>
|
||||
|
||||
Generated
-6
@@ -36442,12 +36442,6 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest {
|
||||
runTest("compiler/testData/diagnostics/testsWithStdLib/experimental/experimentalIsNotEnabled.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("experimentalOnOverrideWarning.kt")
|
||||
public void testExperimentalOnOverrideWarning() throws Exception {
|
||||
runTest("compiler/testData/diagnostics/testsWithStdLib/experimental/experimentalOnOverrideWarning.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("experimentalSetter.kt")
|
||||
public void testExperimentalSetter() throws Exception {
|
||||
|
||||
@@ -273,7 +273,6 @@ enum class LanguageFeature(
|
||||
SoundSmartcastFromLoopConditionForLoopAssignedVariables(sinceVersion = null, kind = BUG_FIX),
|
||||
|
||||
// Disabled for indefinite time. See KT-48535 and related discussion
|
||||
OptInOnOverrideForbidden(sinceVersion = null, kind = BUG_FIX),
|
||||
ApproximateIntegerLiteralTypesInReceiverPosition(sinceVersion = null),
|
||||
|
||||
// Experimental features
|
||||
|
||||
Reference in New Issue
Block a user