diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDataClassConverters.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDataClassConverters.kt index 8e88b2ab2bb..f1eab260ebd 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDataClassConverters.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDataClassConverters.kt @@ -1195,6 +1195,12 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert token, ) } + add(FirErrors.POTENTIALLY_NON_REPORTED_ANNOTATION) { firDiagnostic -> + PotentiallyNonReportedAnnotationImpl( + firDiagnostic as KtPsiDiagnostic, + token, + ) + } add(FirJsErrors.WRONG_JS_QUALIFIER) { firDiagnostic -> WrongJsQualifierImpl( firDiagnostic as KtPsiDiagnostic, diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDiagnostics.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDiagnostics.kt index 26d6e52e429..63e79d0764f 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDiagnostics.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDiagnostics.kt @@ -867,6 +867,10 @@ sealed interface KtFirDiagnostic : KtDiagnosticWithPsi { override val diagnosticClass get() = NonSourceAnnotationOnInlinedLambdaExpression::class } + interface PotentiallyNonReportedAnnotation : KtFirDiagnostic { + override val diagnosticClass get() = PotentiallyNonReportedAnnotation::class + } + interface WrongJsQualifier : KtFirDiagnostic { override val diagnosticClass get() = WrongJsQualifier::class } diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDiagnosticsImpl.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDiagnosticsImpl.kt index 012cfd67033..574fe8bef74 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDiagnosticsImpl.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/diagnostics/KtFirDiagnosticsImpl.kt @@ -1038,6 +1038,11 @@ internal class NonSourceAnnotationOnInlinedLambdaExpressionImpl( token: KtLifetimeToken, ) : KtAbstractFirDiagnostic(firDiagnostic, token), KtFirDiagnostic.NonSourceAnnotationOnInlinedLambdaExpression +internal class PotentiallyNonReportedAnnotationImpl( + firDiagnostic: KtPsiDiagnostic, + token: KtLifetimeToken, +) : KtAbstractFirDiagnostic(firDiagnostic, token), KtFirDiagnostic.PotentiallyNonReportedAnnotation + internal class WrongJsQualifierImpl( firDiagnostic: KtPsiDiagnostic, token: KtLifetimeToken, diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java index 9529203987e..0e885c3a6c9 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java @@ -1878,6 +1878,12 @@ public class DiagnosticCompilerTestFE10TestdataTestGenerated extends AbstractDia runTest("compiler/testData/diagnostics/tests/annotations/Deprecated.kt"); } + @Test + @TestMetadata("DeprecationOnAny.kt") + public void testDeprecationOnAny() throws Exception { + runTest("compiler/testData/diagnostics/tests/annotations/DeprecationOnAny.kt"); + } + @Test @TestMetadata("dontReportWarningAboutChangingExecutionOrderForVararg.kt") public void testDontReportWarningAboutChangingExecutionOrderForVararg() throws Exception { diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java index a6225c2db04..7b738857338 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java @@ -1878,6 +1878,12 @@ public class LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated runTest("compiler/testData/diagnostics/tests/annotations/Deprecated.kt"); } + @Test + @TestMetadata("DeprecationOnAny.kt") + public void testDeprecationOnAny() throws Exception { + runTest("compiler/testData/diagnostics/tests/annotations/DeprecationOnAny.kt"); + } + @Test @TestMetadata("dontReportWarningAboutChangingExecutionOrderForVararg.kt") public void testDontReportWarningAboutChangingExecutionOrderForVararg() throws Exception { diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java index d5edc5a38bd..5c69934c43d 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java @@ -1878,6 +1878,12 @@ public class FirLightTreeOldFrontendDiagnosticsTestGenerated extends AbstractFir runTest("compiler/testData/diagnostics/tests/annotations/Deprecated.kt"); } + @Test + @TestMetadata("DeprecationOnAny.kt") + public void testDeprecationOnAny() throws Exception { + runTest("compiler/testData/diagnostics/tests/annotations/DeprecationOnAny.kt"); + } + @Test @TestMetadata("dontReportWarningAboutChangingExecutionOrderForVararg.kt") public void testDontReportWarningAboutChangingExecutionOrderForVararg() throws Exception { diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java index 83b28ddf7cb..072f4164032 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java @@ -1884,6 +1884,12 @@ public class FirPsiOldFrontendDiagnosticsTestGenerated extends AbstractFirPsiDia runTest("compiler/testData/diagnostics/tests/annotations/Deprecated.kt"); } + @Test + @TestMetadata("DeprecationOnAny.kt") + public void testDeprecationOnAny() throws Exception { + runTest("compiler/testData/diagnostics/tests/annotations/DeprecationOnAny.kt"); + } + @Test @TestMetadata("dontReportWarningAboutChangingExecutionOrderForVararg.kt") public void testDontReportWarningAboutChangingExecutionOrderForVararg() throws Exception { diff --git a/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/FirDiagnosticsList.kt b/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/FirDiagnosticsList.kt index 0cbb4b92257..aa289f2ec60 100644 --- a/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/FirDiagnosticsList.kt +++ b/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/FirDiagnosticsList.kt @@ -403,6 +403,8 @@ object DIAGNOSTICS_LIST : DiagnosticList("FirErrors") { val VOLATILE_ON_DELEGATE by error() val NON_SOURCE_ANNOTATION_ON_INLINED_LAMBDA_EXPRESSION by error() + + val POTENTIALLY_NON_REPORTED_ANNOTATION by warning() } val OPT_IN by object : DiagnosticGroup("OptIn") { diff --git a/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt b/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt index de89565fe91..d4176392ea3 100644 --- a/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt +++ b/compiler/fir/checkers/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrors.kt @@ -302,6 +302,7 @@ object FirErrors { val VOLATILE_ON_VALUE by error0() val VOLATILE_ON_DELEGATE by error0() val NON_SOURCE_ANNOTATION_ON_INLINED_LAMBDA_EXPRESSION by error0() + val POTENTIALLY_NON_REPORTED_ANNOTATION by warning0() // OptIn val OPT_IN_USAGE by warning2(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED) diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/CommonDeclarationCheckers.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/CommonDeclarationCheckers.kt index c0b16491be9..3d02c7a5565 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/CommonDeclarationCheckers.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/CommonDeclarationCheckers.kt @@ -71,6 +71,7 @@ object CommonDeclarationCheckers : DeclarationCheckers() { FirMemberFunctionsChecker, FirDataObjectContentChecker, ContractSyntaxV2FunctionChecker, + FirAnyDeprecationChecker, ) override val propertyCheckers: Set diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirAnyDeprecationChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirAnyDeprecationChecker.kt new file mode 100644 index 00000000000..8be17a043c2 --- /dev/null +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirAnyDeprecationChecker.kt @@ -0,0 +1,39 @@ +/* + * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.fir.analysis.checkers.declaration + +import org.jetbrains.kotlin.config.ApiVersion +import org.jetbrains.kotlin.config.LanguageVersion +import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl +import org.jetbrains.kotlin.diagnostics.DiagnosticReporter +import org.jetbrains.kotlin.diagnostics.reportOn +import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext +import org.jetbrains.kotlin.fir.analysis.checkers.directOverriddenFunctions +import org.jetbrains.kotlin.fir.analysis.checkers.getAnnotationClassForOptInMarker +import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors +import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction +import org.jetbrains.kotlin.fir.declarations.getDeprecationsProviderFromAnnotations +import org.jetbrains.kotlin.fir.declarations.utils.isMethodOfAny +import org.jetbrains.kotlin.fir.declarations.utils.isOverride + +object FirAnyDeprecationChecker : FirSimpleFunctionChecker() { + private val firstKotlin = LanguageVersionSettingsImpl(LanguageVersion.KOTLIN_1_0, ApiVersion.KOTLIN_1_0) + + override fun check(declaration: FirSimpleFunction, context: CheckerContext, reporter: DiagnosticReporter) { + if (!declaration.isOverride || !declaration.symbol.isMethodOfAny) return + declaration.annotations.forEach { annotation -> + val isDeprecationMarker = + listOf(annotation) + .getDeprecationsProviderFromAnnotations(context.session, false) + .getDeprecationsInfo(firstKotlin) + ?.isNotEmpty() == true + val isOptInMarker = + annotation.getAnnotationClassForOptInMarker(context.session) != null + if (isDeprecationMarker || isOptInMarker) + reporter.reportOn(annotation.source, FirErrors.POTENTIALLY_NON_REPORTED_ANNOTATION, context) + } + } +} \ No newline at end of file diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrorsDefaultMessages.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrorsDefaultMessages.kt index fd080681999..25d710b225d 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrorsDefaultMessages.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirErrorsDefaultMessages.kt @@ -490,6 +490,7 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.PACKAGE_CANNOT_BE import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.PACKAGE_OR_CLASSIFIER_REDECLARATION import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.PLATFORM_CLASS_MAPPED_TO_KOTLIN import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.PLUGIN_ANNOTATION_AMBIGUITY +import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.POTENTIALLY_NON_REPORTED_ANNOTATION import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.PRE_RELEASE_CLASS import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.PRIMARY_CONSTRUCTOR_DELEGATION_CALL_EXPECTED import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.PRIMARY_CONSTRUCTOR_REQUIRED_FOR_DATA_CLASS @@ -1032,6 +1033,10 @@ object FirErrorsDefaultMessages : BaseDiagnosticRendererFactory() { NON_SOURCE_ANNOTATION_ON_INLINED_LAMBDA_EXPRESSION, "The lambda expression here is an inlined argument, so this annotation cannot be stored anywhere.", ) + map.put( + POTENTIALLY_NON_REPORTED_ANNOTATION, + "Deprecations and opt-ins on a method overridden from 'Any' may not be reported.", + ) // OptIn map.put(OPT_IN_USAGE, "{1}", TO_STRING, STRING) diff --git a/compiler/testData/diagnostics/tests/annotations/DeprecationOnAny.fir.kt b/compiler/testData/diagnostics/tests/annotations/DeprecationOnAny.fir.kt new file mode 100644 index 00000000000..30fd47eb481 --- /dev/null +++ b/compiler/testData/diagnostics/tests/annotations/DeprecationOnAny.fir.kt @@ -0,0 +1,30 @@ +annotation class Other + +@RequiresOptIn(message = "This is a test.") +@Retention(AnnotationRetention.BINARY) +@Target(AnnotationTarget.FUNCTION) +annotation class OptInMarker + +class A { + @Other + @Deprecated("equals") + @SinceKotlin("1.2") + override fun equals(other: Any?): Boolean { + return super.equals(other) + } + + @SinceKotlin("1.3") + override fun hashCode(): Int { + return super.hashCode() + } + + @Deprecated("toString") + @OptInMarker + override fun toString(): String { + return super.toString() + } + + @Deprecated("other") + @OptInMarker + fun test(): Int = 5 +} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/annotations/DeprecationOnAny.kt b/compiler/testData/diagnostics/tests/annotations/DeprecationOnAny.kt new file mode 100644 index 00000000000..a74a6364158 --- /dev/null +++ b/compiler/testData/diagnostics/tests/annotations/DeprecationOnAny.kt @@ -0,0 +1,30 @@ +annotation class Other + +@RequiresOptIn(message = "This is a test.") +@Retention(AnnotationRetention.BINARY) +@Target(AnnotationTarget.FUNCTION) +annotation class OptInMarker + +class A { + @Other + @Deprecated("equals") + @SinceKotlin("1.2") + override fun equals(other: Any?): Boolean { + return super.equals(other) + } + + @SinceKotlin("1.3") + override fun hashCode(): Int { + return super.hashCode() + } + + @Deprecated("toString") + @OptInMarker + override fun toString(): String { + return super.toString() + } + + @Deprecated("other") + @OptInMarker + fun test(): Int = 5 +} \ No newline at end of file diff --git a/compiler/testData/diagnostics/testsWithStdLib/experimental/incorrectTargetsForExperimentalAnnotation.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/experimental/incorrectTargetsForExperimentalAnnotation.fir.kt new file mode 100644 index 00000000000..d72f4991b1c --- /dev/null +++ b/compiler/testData/diagnostics/testsWithStdLib/experimental/incorrectTargetsForExperimentalAnnotation.fir.kt @@ -0,0 +1,147 @@ +// !OPT_IN: kotlin.RequiresOptIn +// FILE: api.kt + +package api + +import kotlin.annotation.AnnotationTarget.* + +@RequiresOptIn(level = RequiresOptIn.Level.WARNING) +@Target(CLASS, ANNOTATION_CLASS, PROPERTY, FIELD, LOCAL_VARIABLE, VALUE_PARAMETER, CONSTRUCTOR, FUNCTION, + PROPERTY_SETTER, TYPEALIAS) +@Retention(AnnotationRetention.BINARY) +annotation class E1 + +@RequiresOptIn(level = RequiresOptIn.Level.WARNING) +@Target(FILE) +annotation class E2 + +@RequiresOptIn(level = RequiresOptIn.Level.WARNING) +@Target(EXPRESSION) +@Retention(AnnotationRetention.SOURCE) +annotation class E3 + +@RequiresOptIn(level = RequiresOptIn.Level.WARNING) +@Target(TYPE_PARAMETER) +@Retention(AnnotationRetention.BINARY) +annotation class E3A + +@RequiresOptIn(level = RequiresOptIn.Level.WARNING) +@Target(TYPE) +@Retention(AnnotationRetention.BINARY) +annotation class E3B + +@RequiresOptIn(level = RequiresOptIn.Level.WARNING) +@Target(PROPERTY_GETTER) +@Retention(AnnotationRetention.BINARY) +annotation class E4 + +@RequiresOptIn(level = RequiresOptIn.Level.WARNING) +@Target(PROPERTY_SETTER) +@Retention(AnnotationRetention.BINARY) +annotation class E5 + +@RequiresOptIn(level = RequiresOptIn.Level.WARNING) +@Target(PROPERTY, FUNCTION, PROPERTY_SETTER, VALUE_PARAMETER, FIELD, LOCAL_VARIABLE, CLASS) +@Retention(AnnotationRetention.BINARY) +annotation class E6 + +var some: Int + @E4 + get() = 42 + @E5 + set(value) {} + +@get:E4 +val another: Int = 42 + +class My { + @E6 + override fun hashCode() = 0 +} + +interface Base { + val bar: Int + + val baz: Int + + @E6 + fun foo() + + fun String.withReceiver() +} + +class Derived : Base { + @E6 + override val bar: Int = 42 + + @set:E6 @setparam:E6 + override var baz: Int = 13 + + @E6 + override fun foo() {} + + override fun @receiver:E6 String.withReceiver() {} +} + +class Wrapper(@property:E6 val foo: Int) + +@E6 +interface BaseMarked { + val bar: Int +} + +@E6 +class Outer { + interface Nested { + val baz: Int + } +} + +@OptIn(E6::class) +class DerivedOptIn : BaseMarked, Outer.Nested { + @E6 + override val bar: Int = 42 // Ok + + @E6 + override val baz: Int = 24 // Ok +} + +abstract class Another(@param:E6 val x: String) : Base { + @delegate:E6 + override val bar: Int by lazy { 42 } + + fun baz(@E6 param: Int) { + @E6 val x = param + } +} + +interface A { + fun f() +} + +interface B { + @E6 + fun f() +} + +interface C1 : A, B +interface C2 : B, A + +class X1 : C1 { + @E6 // Ok + override fun f() {} +} + +class X2 : C2 { + @E6 // Ok + override fun f() {} +} + +open class Y(val b: B): B by b + +class Z(b: B) : Y(b) { + @E6 + override fun f() {} +} + +class WithSetter(@set:E6 var withSetter: String) diff --git a/compiler/testData/diagnostics/testsWithStdLib/experimental/incorrectTargetsForExperimentalAnnotation.kt b/compiler/testData/diagnostics/testsWithStdLib/experimental/incorrectTargetsForExperimentalAnnotation.kt index 412a65d461d..29a7ee1c244 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/experimental/incorrectTargetsForExperimentalAnnotation.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/experimental/incorrectTargetsForExperimentalAnnotation.kt @@ -1,4 +1,3 @@ -// FIR_IDENTICAL // !OPT_IN: kotlin.RequiresOptIn // FILE: api.kt 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 6dff4dc8848..cbe4b0ed70a 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 @@ -1884,6 +1884,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest { runTest("compiler/testData/diagnostics/tests/annotations/Deprecated.kt"); } + @Test + @TestMetadata("DeprecationOnAny.kt") + public void testDeprecationOnAny() throws Exception { + runTest("compiler/testData/diagnostics/tests/annotations/DeprecationOnAny.kt"); + } + @Test @TestMetadata("dontReportWarningAboutChangingExecutionOrderForVararg.kt") public void testDontReportWarningAboutChangingExecutionOrderForVararg() throws Exception {