From c2f43dd98e4ceadd5cf5b6d81bca212e36c6a284 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Wed, 26 Jan 2022 13:29:30 +0300 Subject: [PATCH] Revert OPT_IN_MARKER_ON_OVERRIDE limitation #KT-48890 Fixed --- ...CompilerTestFE10TestdataTestGenerated.java | 6 ----- ...irOldFrontendDiagnosticsTestGenerated.java | 6 ----- ...DiagnosticsWithLightTreeTestGenerated.java | 6 ----- .../declaration/FirOverrideChecker.kt | 22 ------------------- ...entalMarkerDeclarationAnnotationChecker.kt | 16 -------------- .../experimentalOnOverrideWarning.kt | 13 ----------- .../experimentalOnOverrideWarning.txt | 15 ------------- ...correctTargetsForExperimentalAnnotation.kt | 5 ++--- .../test/runners/DiagnosticTestGenerated.java | 6 ----- .../kotlin/config/LanguageVersionSettings.kt | 1 - 10 files changed, 2 insertions(+), 94 deletions(-) delete mode 100644 compiler/testData/diagnostics/testsWithStdLib/experimental/experimentalOnOverrideWarning.kt delete mode 100644 compiler/testData/diagnostics/testsWithStdLib/experimental/experimentalOnOverrideWarning.txt diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerTestFE10TestdataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerTestFE10TestdataTestGenerated.java index 4c215f64b71..3d6fca40fd3 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerTestFE10TestdataTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerTestFE10TestdataTestGenerated.java @@ -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 { diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsTestGenerated.java index 4f341db4577..72bbff9b990 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsTestGenerated.java @@ -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 { diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsWithLightTreeTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsWithLightTreeTestGenerated.java index 2235f574216..fb42c3f219f 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsWithLightTreeTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsWithLightTreeTestGenerated.java @@ -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 { diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirOverrideChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirOverrideChecker.kt index a21af5c101d..bacbb909db9 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirOverrideChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirOverrideChecker.kt @@ -346,28 +346,6 @@ object FirOverrideChecker : FirClassChecker() { reportNotAcceptedOverrideExperimentalities( overriddenExperimentalities, memberSymbol, context, reporter ) - for (annotation in memberSymbol.fir.annotations) { - val annotationType = annotation.annotationTypeRef.coneTypeSafe() - 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) - } - } - } - } } } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/ExperimentalMarkerDeclarationAnnotationChecker.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/ExperimentalMarkerDeclarationAnnotationChecker.kt index 538a2ea0a91..b71148112eb 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/ExperimentalMarkerDeclarationAnnotationChecker.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/ExperimentalMarkerDeclarationAnnotationChecker.kt @@ -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)) - } - } - } } } diff --git a/compiler/testData/diagnostics/testsWithStdLib/experimental/experimentalOnOverrideWarning.kt b/compiler/testData/diagnostics/testsWithStdLib/experimental/experimentalOnOverrideWarning.kt deleted file mode 100644 index 24b1a125a43..00000000000 --- a/compiler/testData/diagnostics/testsWithStdLib/experimental/experimentalOnOverrideWarning.kt +++ /dev/null @@ -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 { - @E - override fun hashCode() = 0 -} - diff --git a/compiler/testData/diagnostics/testsWithStdLib/experimental/experimentalOnOverrideWarning.txt b/compiler/testData/diagnostics/testsWithStdLib/experimental/experimentalOnOverrideWarning.txt deleted file mode 100644 index 9a115317780..00000000000 --- a/compiler/testData/diagnostics/testsWithStdLib/experimental/experimentalOnOverrideWarning.txt +++ /dev/null @@ -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 -} diff --git a/compiler/testData/diagnostics/testsWithStdLib/experimental/incorrectTargetsForExperimentalAnnotation.kt b/compiler/testData/diagnostics/testsWithStdLib/experimental/incorrectTargetsForExperimentalAnnotation.kt index 45e1b1fa240..412a65d461d 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/experimental/incorrectTargetsForExperimentalAnnotation.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/experimental/incorrectTargetsForExperimentalAnnotation.kt @@ -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 { - @E6 + @E6 override fun hashCode() = 0 } @@ -73,7 +72,7 @@ interface Base { } class Derived : Base { - @E6 + @E6 override val bar: Int = 42 @set:E6 @setparam:E6 diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java index f094b3dbb3d..789bc123857 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java @@ -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 { diff --git a/compiler/util/src/org/jetbrains/kotlin/config/LanguageVersionSettings.kt b/compiler/util/src/org/jetbrains/kotlin/config/LanguageVersionSettings.kt index 1f9391ce396..93235e5f3fb 100644 --- a/compiler/util/src/org/jetbrains/kotlin/config/LanguageVersionSettings.kt +++ b/compiler/util/src/org/jetbrains/kotlin/config/LanguageVersionSettings.kt @@ -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