From de3f31cf78a8f45b5049cea6dee79b754a06da47 Mon Sep 17 00:00:00 2001 From: Andrey Zinovyev Date: Wed, 23 Jun 2021 15:25:23 +0300 Subject: [PATCH] [FIR] Partial implementation of DEPRECATION(_ERROR) diagnostics No support for inheritance deprecations and deprecations in qualifier's parts --- .../diagnostics/FirDiagnosticsList.kt | 10 ++ .../fir/analysis/diagnostics/FirErrors.kt | 2 + .../checkers/CommonExpressionCheckers.kt | 1 + .../analysis/checkers/CommonTypeCheckers.kt | 3 +- .../expression/FirDeprecationChecker.kt | 68 ++++++++ .../checkers/type/FirDeprecatedTypeChecker.kt | 30 ++++ .../checkers/type/FirTypeAnnotationChecker.kt | 3 + .../AbstractDiagnosticCollectorVisitor.kt | 9 + .../diagnostics/FirDefaultErrorMessages.kt | 4 + .../LightTreePositioningStrategies.kt | 7 + .../jetbrains/kotlin/fir/utils/ArrayMap.kt | 9 +- .../kotlin/fir/session/FirSessionFactory.kt | 3 +- .../deserialization/ClassDeserialization.kt | 2 + .../deserialization/FirMemberDeserializer.kt | 8 +- .../kotlin/fir/java/JavaSymbolProvider.kt | 1 + .../fir/java/declarations/FirJavaClass.kt | 5 + .../java/declarations/FirJavaConstructor.kt | 4 + .../fir/java/declarations/FirJavaField.kt | 6 + .../fir/java/declarations/FirJavaMethod.kt | 16 +- .../declarations/FirJavaValueParameter.kt | 7 + .../KotlinDeserializedJvmSymbolsProvider.kt | 4 +- .../java/enhancement/SignatureEnhancement.kt | 2 + .../scopes/JavaClassUseSiteMemberScope.kt | 1 + .../fir/lightTree/fir/ValueParameter.kt | 10 +- .../fir/declarations/FirAnnotationUtils.kt | 12 +- .../fir/declarations/deprecatedSinceUtils.kt | 46 ----- .../fir/declarations/deprecationUtils.kt | 132 ++++++++++++++ .../kotlin/fir/resolve/calls/CallKind.kt | 8 +- .../fir/resolve/calls/ResolutionStages.kt | 6 +- .../kotlin/fir/resolve/calls/Synthetics.kt | 2 + .../FirStatusResolveTransformer.kt | 22 ++- .../scopes/impl/FirFakeOverrideGenerator.kt | 9 +- .../fir/declarations/FirAnonymousFunction.kt | 3 + .../fir/declarations/FirAnonymousObject.kt | 3 + .../declarations/FirCallableDeclaration.kt | 3 + .../FirCallableMemberDeclaration.kt | 3 + .../kotlin/fir/declarations/FirClass.kt | 3 + .../declarations/FirClassLikeDeclaration.kt | 3 + .../kotlin/fir/declarations/FirConstructor.kt | 3 + .../kotlin/fir/declarations/FirEnumEntry.kt | 3 + .../fir/declarations/FirErrorFunction.kt | 3 + .../fir/declarations/FirErrorProperty.kt | 3 + .../kotlin/fir/declarations/FirField.kt | 3 + .../kotlin/fir/declarations/FirFunction.kt | 3 + .../kotlin/fir/declarations/FirProperty.kt | 3 + .../fir/declarations/FirPropertyAccessor.kt | 3 + .../fir/declarations/FirRegularClass.kt | 3 + .../fir/declarations/FirSimpleFunction.kt | 3 + .../kotlin/fir/declarations/FirTypeAlias.kt | 3 + .../fir/declarations/FirValueParameter.kt | 3 + .../kotlin/fir/declarations/FirVariable.kt | 3 + .../builder/FirAbstractConstructorBuilder.kt | 2 + .../builder/FirAnonymousFunctionBuilder.kt | 3 + .../builder/FirAnonymousObjectBuilder.kt | 3 + .../declarations/builder/FirClassBuilder.kt | 2 + .../builder/FirConstructorBuilder.kt | 4 + .../FirDefaultSetterValueParameterBuilder.kt | 3 + .../builder/FirEnumEntryBuilder.kt | 3 + .../builder/FirErrorFunctionBuilder.kt | 3 + .../builder/FirErrorPropertyBuilder.kt | 3 + .../declarations/builder/FirFieldBuilder.kt | 3 + .../builder/FirFunctionBuilder.kt | 2 + .../builder/FirPrimaryConstructorBuilder.kt | 3 + .../builder/FirPropertyAccessorBuilder.kt | 4 + .../builder/FirPropertyBuilder.kt | 4 + .../builder/FirRegularClassBuilder.kt | 4 + .../builder/FirSimpleFunctionBuilder.kt | 4 + .../builder/FirTypeAliasBuilder.kt | 4 + .../builder/FirValueParameterBuilder.kt | 4 + .../impl/FirAnonymousFunctionImpl.kt | 6 + .../impl/FirAnonymousObjectImpl.kt | 6 + .../declarations/impl/FirConstructorImpl.kt | 6 + .../impl/FirDefaultSetterValueParameter.kt | 6 + .../fir/declarations/impl/FirEnumEntryImpl.kt | 6 + .../declarations/impl/FirErrorFunctionImpl.kt | 6 + .../declarations/impl/FirErrorPropertyImpl.kt | 6 + .../fir/declarations/impl/FirFieldImpl.kt | 6 + .../impl/FirPrimaryConstructor.kt | 6 + .../impl/FirPropertyAccessorImpl.kt | 6 + .../fir/declarations/impl/FirPropertyImpl.kt | 6 + .../declarations/impl/FirRegularClassImpl.kt | 6 + .../impl/FirSimpleFunctionImpl.kt | 6 + .../fir/declarations/impl/FirTypeAliasImpl.kt | 6 + .../impl/FirValueParameterImpl.kt | 6 + .../kotlin/fir/declarations/deprecations.kt | 103 +++++++++++ .../impl/FirDefaultPropertyAccessor.kt | 1 + .../synthetic/FirSyntheticProperty.kt | 7 +- .../synthetic/FirSyntheticPropertyAccessor.kt | 7 + .../synthetic/FirSyntheticPropertyBuilder.kt | 6 +- .../fir/tree/generator/NodeConfigurator.kt | 2 + .../kotlin/fir/tree/generator/Types.kt | 2 + .../diagnostics/PositioningStrategies.kt | 1 + .../LocalClassAndShortSubpackageNames.fir.kt | 2 +- .../diagnostics/tests/PackageQualified.fir.kt | 6 +- .../tests/deprecated/annotationUsage.fir.kt | 9 - .../tests/deprecated/annotationUsage.kt | 1 + .../deprecated/deprecatedConstructor.fir.kt | 34 ---- .../tests/deprecated/deprecatedConstructor.kt | 1 + .../tests/deprecated/deprecatedError.fir.kt | 11 -- .../tests/deprecated/deprecatedError.kt | 1 + .../deprecated/deprecatedErrorBuilder.fir.kt | 21 --- .../deprecated/deprecatedErrorBuilder.kt | 1 + .../tests/deprecated/deprecatedHidden.fir.kt | 11 -- .../tests/deprecated/deprecatedHidden.kt | 1 + ...edHiddenOnCallableReferenceArgument.fir.kt | 23 --- ...ecatedHiddenOnCallableReferenceArgument.kt | 1 + .../deprecated/deprecatedInheritance.fir.kt | 14 +- .../deprecatedPropertyInheritance.fir.kt | 22 +-- .../deprecatedSinceKotlin/error.fir.kt | 37 ---- .../deprecated/deprecatedSinceKotlin/error.kt | 1 + .../deprecatedSinceKotlin/hidden.fir.kt | 4 +- .../messageFromDeprecatedAnnotation.fir.kt | 2 +- .../deprecatedSinceKotlin/warning.fir.kt | 37 ---- .../deprecatedSinceKotlin/warning.kt | 1 + .../tests/deprecated/functionUsage.fir.kt | 51 ------ .../tests/deprecated/functionUsage.kt | 1 + .../deprecated/hiddenPropertyAccessors.fir.kt | 16 +- .../tests/deprecated/imports.fir.kt | 2 +- .../tests/deprecated/javaDeprecated.fir.kt | 16 -- .../tests/deprecated/javaDeprecated.kt | 1 + .../javaDeprecatedInheritance.fir.kt | 53 ------ .../deprecated/javaDeprecatedInheritance.kt | 1 + .../tests/deprecated/propertyUsage.fir.kt | 24 +-- .../propertyUseSiteTargetedAnnotations.fir.kt | 14 +- .../tests/deprecated/typeUsage.fir.kt | 42 ----- .../diagnostics/tests/deprecated/typeUsage.kt | 1 + .../deprecated/typealiasConstructor.fir.kt | 4 +- .../typealiasForDeprecatedClass.fir.kt | 10 +- .../tests/deprecated/typealiasUsage.fir.kt | 12 +- .../warningOnConstructorErrorOnClass.fir.kt | 4 +- .../constructorOfUnsignedType.fir.kt | 36 ++-- .../constructorOfUnsignedType.kt | 2 +- .../inner/accessingToJavaNestedClass.fir.kt | 8 +- .../inner/accessingToKotlinNestedClass.fir.kt | 6 +- .../j+k/deprecations/forFakeOverrides.fir.kt | 36 ---- .../j+k/deprecations/forFakeOverrides.kt | 1 + .../j+k/deprecations/forMixedOverride.fir.kt | 2 +- .../j+k/deprecations/forOverrides.fir.kt | 23 --- .../tests/j+k/deprecations/forOverrides.kt | 1 + .../deprecatedHiddenImportPriority.fir.kt | 2 +- .../deprecatedHiddenMultipleClasses.fir.kt | 2 +- .../classifierFromCompanionObjectNew.fir.kt | 99 ----------- .../classifierFromCompanionObjectNew.kt | 1 + .../classifierFromCompanionObjectOld.fir.kt | 28 +-- .../resolveModIfRemIsHidden.fir.kt | 2 +- .../itselfAsUpperBoundLocal.fir.kt | 2 +- .../tests/resolve/HiddenDeclarations.fir.kt | 28 +-- .../javaProperties/Deprecated.fir.kt | 16 +- .../samAdapters/Deprecated.fir.kt | 2 +- .../annotations/jvmDefault/generic.fir.kt | 2 +- .../jvmDefault/javaOverride.fir.kt | 8 +- .../jvmDefault/javaOverrideAll.fir.kt | 69 -------- .../annotations/jvmDefault/javaOverrideAll.kt | 1 + .../jvmDefault/jvmDefaultInInheritance.fir.kt | 4 +- .../annotations/jvmDefault/jvmDefaults.fir.kt | 12 +- .../jvmDefault/jvmDefaultsWithJava.fir.kt | 162 ------------------ .../jvmDefault/jvmDefaultsWithJava.kt | 1 + .../jvmDefault/noJvmDefaultFlag.fir.kt | 14 +- .../jvmDefault/notInterface.fir.kt | 10 +- .../jvmDefault/propertyAccessor.fir.kt | 2 +- .../jvmDefault/simpleOverride.fir.kt | 2 +- .../jvmDefault/simplePropertyOverride.fir.kt | 2 +- .../annotations/jvmDefault/superCall.fir.kt | 4 +- .../jvmDefault/superCallAmbiguity.fir.kt | 6 +- .../jvmDefault/superCallAmbiguity2.fir.kt | 2 +- .../jvmDefault/superCallAmbiguity3.fir.kt | 2 +- .../annotations/jvmDefault/target6.fir.kt | 14 +- .../annotations/jvmDefault/target8.fir.kt | 30 ---- .../annotations/jvmDefault/target8.kt | 1 + .../deprecated/deprecationOnReadBytes.fir.kt | 7 - .../deprecated/deprecationOnReadBytes.kt | 1 + .../pseudocodeMemoryOverhead.fir.kt | 30 ++-- .../targetedBuiltIns/blackListed.fir.kt | 4 +- .../analysis/smartcasts/pos/7.fir.kt | 10 +- .../diagnostics/notLinked/dfa/neg/1.fir.kt | 4 +- .../testdata/lazyResolve/classMembers.txt | 1 + .../lazyResolve/propertyWithGetter.txt | 1 + .../propertyWithGetterAndSetter.txt | 1 + .../lazyResolve/propertyWithInitializer.txt | 1 + .../lazyResolve/secondaryConstructor.txt | 1 + .../testdata/lazyResolve/superTypes.txt | 1 + .../testdata/lazyResolve/superTypesLoop.txt | 1 + .../lazyResolve/topLevelFunctions.txt | 1 + ...tionsWithExpressionBodyAndExplicitType.txt | 1 + .../topLevelFunctionsWithImplicitType.txt | 1 + .../diagnostics/KtFirDataClassConverters.kt | 16 ++ .../api/fir/diagnostics/KtFirDiagnostics.kt | 12 ++ .../fir/diagnostics/KtFirDiagnosticsImpl.kt | 18 ++ 188 files changed, 984 insertions(+), 1052 deletions(-) create mode 100644 compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirDeprecationChecker.kt create mode 100644 compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/type/FirDeprecatedTypeChecker.kt delete mode 100644 compiler/fir/resolve/src/org/jetbrains/kotlin/fir/declarations/deprecatedSinceUtils.kt create mode 100644 compiler/fir/resolve/src/org/jetbrains/kotlin/fir/declarations/deprecationUtils.kt create mode 100644 compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/deprecations.kt delete mode 100644 compiler/testData/diagnostics/tests/deprecated/annotationUsage.fir.kt delete mode 100644 compiler/testData/diagnostics/tests/deprecated/deprecatedConstructor.fir.kt delete mode 100644 compiler/testData/diagnostics/tests/deprecated/deprecatedError.fir.kt delete mode 100644 compiler/testData/diagnostics/tests/deprecated/deprecatedErrorBuilder.fir.kt delete mode 100644 compiler/testData/diagnostics/tests/deprecated/deprecatedHidden.fir.kt delete mode 100644 compiler/testData/diagnostics/tests/deprecated/deprecatedHiddenOnCallableReferenceArgument.fir.kt delete mode 100644 compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/error.fir.kt delete mode 100644 compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/warning.fir.kt delete mode 100644 compiler/testData/diagnostics/tests/deprecated/functionUsage.fir.kt delete mode 100644 compiler/testData/diagnostics/tests/deprecated/javaDeprecated.fir.kt delete mode 100644 compiler/testData/diagnostics/tests/deprecated/javaDeprecatedInheritance.fir.kt delete mode 100644 compiler/testData/diagnostics/tests/deprecated/typeUsage.fir.kt delete mode 100644 compiler/testData/diagnostics/tests/j+k/deprecations/forFakeOverrides.fir.kt delete mode 100644 compiler/testData/diagnostics/tests/j+k/deprecations/forOverrides.fir.kt delete mode 100644 compiler/testData/diagnostics/tests/objects/kt21515/classifierFromCompanionObjectNew.fir.kt delete mode 100644 compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/javaOverrideAll.fir.kt delete mode 100644 compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/jvmDefaultsWithJava.fir.kt delete mode 100644 compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/target8.fir.kt delete mode 100644 compiler/testData/diagnostics/testsWithStdLib/deprecated/deprecationOnReadBytes.fir.kt 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 5a17c9f4a61..31f7207f566 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 @@ -98,6 +98,16 @@ object DIAGNOSTICS_LIST : DiagnosticList("FirErrors") { val UNKNOWN_CALLABLE_KIND by error() val MISSING_STDLIB_CLASS by error() val NO_THIS by error() + + val DEPRECATION_ERROR by error(PositioningStrategy.REFERENCED_NAME_BY_QUALIFIED) { + parameter("reference") + parameter("message") + } + + val DEPRECATION by warning(PositioningStrategy.REFERENCED_NAME_BY_QUALIFIED) { + parameter("reference") + parameter("message") + } } val CALL_RESOLUTION by object : DiagnosticGroup("Call resolution") { 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 b82971f30a0..73d3f84fe4f 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 @@ -117,6 +117,8 @@ object FirErrors { val UNKNOWN_CALLABLE_KIND by error0() val MISSING_STDLIB_CLASS by error0() val NO_THIS by error0() + val DEPRECATION_ERROR by error2, String>(SourceElementPositioningStrategies.REFERENCED_NAME_BY_QUALIFIED) + val DEPRECATION by warning2, String>(SourceElementPositioningStrategies.REFERENCED_NAME_BY_QUALIFIED) // Call resolution val CREATING_AN_INSTANCE_OF_ABSTRACT_CLASS by error0() diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/CommonExpressionCheckers.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/CommonExpressionCheckers.kt index 6317702ab15..c0d83911642 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/CommonExpressionCheckers.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/CommonExpressionCheckers.kt @@ -20,6 +20,7 @@ object CommonExpressionCheckers : ExpressionCheckers() { get() = setOf( FirReservedUnderscoreExpressionChecker, FirExpressionAnnotationChecker, + FirDeprecationChecker, ) override val qualifiedAccessExpressionCheckers: Set diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/CommonTypeCheckers.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/CommonTypeCheckers.kt index 5a0e3822d40..03ed2ce5619 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/CommonTypeCheckers.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/CommonTypeCheckers.kt @@ -10,6 +10,7 @@ import org.jetbrains.kotlin.fir.analysis.checkers.type.* object CommonTypeCheckers : TypeCheckers() { override val typeRefCheckers: Set = setOf( FirTypeAnnotationChecker, - FirSuspendModifierChecker + FirSuspendModifierChecker, + FirDeprecatedTypeChecker, ) } diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirDeprecationChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirDeprecationChecker.kt new file mode 100644 index 00000000000..f5d5ace8b63 --- /dev/null +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/expression/FirDeprecationChecker.kt @@ -0,0 +1,68 @@ +/* + * Copyright 2010-2021 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.expression + +import org.jetbrains.kotlin.fir.* +import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext +import org.jetbrains.kotlin.fir.analysis.checkers.toRegularClass +import org.jetbrains.kotlin.fir.analysis.diagnostics.DiagnosticReporter +import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors +import org.jetbrains.kotlin.fir.analysis.diagnostics.reportOn +import org.jetbrains.kotlin.fir.declarations.* +import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall +import org.jetbrains.kotlin.fir.expressions.FirResolvable +import org.jetbrains.kotlin.fir.expressions.FirStatement +import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference +import org.jetbrains.kotlin.utils.addToStdlib.safeAs + +object FirDeprecationChecker : FirBasicExpressionChecker() { + + private val allowedSourceKinds = setOf( + FirRealSourceElementKind, + FirFakeSourceElementKind.DesugaredIncrementOrDecrement + ) + + override fun check(expression: FirStatement, context: CheckerContext, reporter: DiagnosticReporter) { + if (!allowedSourceKinds.contains(expression.source?.kind)) return + if (expression is FirAnnotationCall) return //checked by FirDeprecatedTypeChecker + val resolvable = expression as? FirResolvable ?: return + val reference = resolvable.calleeReference as? FirResolvedNamedReference ?: return + val referencedFir = reference.resolvedSymbol.fir + if (referencedFir !is FirAnnotatedDeclaration) return + + reportDeprecationIfNeeded(expression.source, referencedFir, expression, context, reporter) + } + + internal fun reportDeprecationIfNeeded( + source: FirSourceElement?, + referencedFir: T, + callSite: FirElement?, + context: CheckerContext, + reporter: DiagnosticReporter + ) where T : FirAnnotatedDeclaration { + val deprecation = getWorstDeprecation(callSite, referencedFir, context) ?: return + val diagnostic = when (deprecation.level) { + DeprecationLevelValue.ERROR, DeprecationLevelValue.HIDDEN -> FirErrors.DEPRECATION_ERROR + DeprecationLevelValue.WARNING -> FirErrors.DEPRECATION + } + reporter.reportOn(source, diagnostic, referencedFir.symbol, deprecation.message ?: "", context) + } + + private fun getWorstDeprecation( + callSite: FirElement?, + fir: T, + context: CheckerContext + ): Deprecation? { + val deprecationInfos = listOfNotNull( + fir.getDeprecation(callSite), + fir.safeAs()?.returnTypeRef + ?.toRegularClass(context.session) + ?.getDeprecation(callSite) + ) + return deprecationInfos.maxOrNull() + } + +} \ No newline at end of file diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/type/FirDeprecatedTypeChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/type/FirDeprecatedTypeChecker.kt new file mode 100644 index 00000000000..be63b4a6eb5 --- /dev/null +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/type/FirDeprecatedTypeChecker.kt @@ -0,0 +1,30 @@ +/* + * Copyright 2010-2021 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.type + +import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext +import org.jetbrains.kotlin.fir.analysis.checkers.context.findClosest +import org.jetbrains.kotlin.fir.analysis.checkers.expression.FirDeprecationChecker +import org.jetbrains.kotlin.fir.analysis.diagnostics.DiagnosticReporter +import org.jetbrains.kotlin.fir.declarations.FirPropertyAccessor +import org.jetbrains.kotlin.fir.resolve.toSymbol +import org.jetbrains.kotlin.fir.types.ConeClassLikeType +import org.jetbrains.kotlin.fir.types.FirTypeRef +import org.jetbrains.kotlin.fir.types.coneTypeSafe + +object FirDeprecatedTypeChecker : FirTypeRefChecker() { + + override fun check(typeRef: FirTypeRef, context: CheckerContext, reporter: DiagnosticReporter) { + if (context.findClosest() != null) return + + val resolved = typeRef.coneTypeSafe() ?: return + val symbol = resolved.lookupTag.toSymbol(context.session) ?: return + val referencedFir = symbol.fir + + FirDeprecationChecker.reportDeprecationIfNeeded(typeRef.source, referencedFir, null, context, reporter) + } + +} \ No newline at end of file diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/type/FirTypeAnnotationChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/type/FirTypeAnnotationChecker.kt index 44d6ba1c542..954da0e1dd2 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/type/FirTypeAnnotationChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/type/FirTypeAnnotationChecker.kt @@ -12,10 +12,13 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.DiagnosticReporter import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors import org.jetbrains.kotlin.fir.analysis.diagnostics.reportOn import org.jetbrains.kotlin.fir.analysis.diagnostics.withSuppressedDiagnostics +import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef import org.jetbrains.kotlin.fir.types.FirTypeRef object FirTypeAnnotationChecker : FirTypeRefChecker() { override fun check(typeRef: FirTypeRef, context: CheckerContext, reporter: DiagnosticReporter) { + if (typeRef !is FirResolvedTypeRef) return + for (annotation in typeRef.annotations) { withSuppressedDiagnostics(annotation, context) { val annotationTargets = annotation.getAllowedAnnotationTargets(context.session) diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/collectors/AbstractDiagnosticCollectorVisitor.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/collectors/AbstractDiagnosticCollectorVisitor.kt index 5ebfe0ae923..ecca8cd352b 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/collectors/AbstractDiagnosticCollectorVisitor.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/collectors/AbstractDiagnosticCollectorVisitor.kt @@ -180,6 +180,15 @@ abstract class AbstractDiagnosticCollectorVisitor( super.visitResolvedTypeRef(resolvedTypeRef, data) } if (resolvedTypeRef.source?.kind is FirFakeSourceElementKind) return + + //the note about is just wrong + //if we don't visit resolved type we can't make any diagnostics on them + //so here we check resolvedTypeRef + if (resolvedTypeRef.type !is ConeClassErrorType) { + withSuppressedDiagnostics(resolvedTypeRef) { + checkElement(resolvedTypeRef) + } + } resolvedTypeRef.delegatedTypeRef?.accept(this, data) } diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDefaultErrorMessages.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDefaultErrorMessages.kt index 94ec47ad6fa..e8a94fddd59 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDefaultErrorMessages.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDefaultErrorMessages.kt @@ -110,6 +110,8 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.DEPRECATED_SINCE_ import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.DEPRECATED_SINCE_KOTLIN_WITH_DEPRECATED_LEVEL import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.DEPRECATED_SINCE_KOTLIN_WITH_UNORDERED_VERSIONS import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.DEPRECATED_TYPE_PARAMETER_SYNTAX +import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.DEPRECATION +import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.DEPRECATION_ERROR import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.DESERIALIZATION_ERROR import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.DYNAMIC_UPPER_BOUND import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.EMPTY_RANGE @@ -427,6 +429,8 @@ class FirDefaultErrorMessages { map.put(VAL_OR_VAR_ON_FUN_PARAMETER, "''{0}'' on function parameter is not allowed", TO_STRING) map.put(VAL_OR_VAR_ON_CATCH_PARAMETER, "''{0}'' on catch parameter is not allowed", TO_STRING) map.put(VAL_OR_VAR_ON_SECONDARY_CONSTRUCTOR_PARAMETER, "''{0}'' on secondary constructor parameter is not allowed", TO_STRING) + map.put(DEPRECATION, "''{0}'' is deprecated. {1}", SYMBOL, STRING) + map.put(DEPRECATION_ERROR, "''{0}'' is deprecated. {1}", SYMBOL, STRING) // Unresolved map.put(INVISIBLE_REFERENCE, "Symbol {0} is invisible", SYMBOL) diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/LightTreePositioningStrategies.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/LightTreePositioningStrategies.kt index 7041b595b86..742422c9b9a 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/LightTreePositioningStrategies.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/LightTreePositioningStrategies.kt @@ -522,6 +522,13 @@ object LightTreePositioningStrategies { if (node.tokenType in nodeTypesWithOperation) { return markElement(tree.operationReference(node) ?: node, startOffset, endOffset, tree, node) } + if (node.tokenType == KtNodeTypes.TYPE_REFERENCE) { + val nodeToMark = + tree.findChildByType(node, KtNodeTypes.NULLABLE_TYPE) + ?.let { tree.findChildByType(it, KtNodeTypes.USER_TYPE) } + ?: node + return markElement(nodeToMark, startOffset, endOffset, tree, node) + } if (node.tokenType != KtNodeTypes.DOT_QUALIFIED_EXPRESSION && node.tokenType != KtNodeTypes.SAFE_ACCESS_EXPRESSION && node.tokenType != KtNodeTypes.CALLABLE_REFERENCE_EXPRESSION diff --git a/compiler/fir/cones/src/org/jetbrains/kotlin/fir/utils/ArrayMap.kt b/compiler/fir/cones/src/org/jetbrains/kotlin/fir/utils/ArrayMap.kt index 3632ac3ca38..742f0367141 100644 --- a/compiler/fir/cones/src/org/jetbrains/kotlin/fir/utils/ArrayMap.kt +++ b/compiler/fir/cones/src/org/jetbrains/kotlin/fir/utils/ArrayMap.kt @@ -72,16 +72,17 @@ internal class OneElementArrayMap(val value: T, val index: Int) : Array } internal class ArrayMapImpl private constructor( - private var data: Array + private var data: Array, + initialSize: Int ) : ArrayMap() { companion object { private const val DEFAULT_SIZE = 20 private const val INCREASE_K = 2 } - constructor() : this(arrayOfNulls(DEFAULT_SIZE)) + constructor() : this(arrayOfNulls(DEFAULT_SIZE), 0) - override var size: Int = 0 + override var size: Int = initialSize private set @@ -104,7 +105,7 @@ internal class ArrayMapImpl private constructor( return data.getOrNull(index) as T? } - override fun copy(): ArrayMap = ArrayMapImpl(data.copyOf()) + override fun copy(): ArrayMap = ArrayMapImpl(data.copyOf(), size) override fun iterator(): Iterator { return object : AbstractIterator() { diff --git a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/FirSessionFactory.kt b/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/FirSessionFactory.kt index 28f568791fd..a546a54ed48 100644 --- a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/FirSessionFactory.kt +++ b/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/FirSessionFactory.kt @@ -97,7 +97,8 @@ object FirSessionFactory { dependencyList.moduleDataProvider, librariesScope, project, - getPackagePartProvider(librariesScope) + getPackagePartProvider(librariesScope), + languageVersionSettings ) val mainModuleData = FirModuleDataImpl( diff --git a/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/deserialization/ClassDeserialization.kt b/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/deserialization/ClassDeserialization.kt index d28ff054890..f47d13909bb 100644 --- a/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/deserialization/ClassDeserialization.kt +++ b/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/deserialization/ClassDeserialization.kt @@ -219,6 +219,8 @@ fun deserializeClassToSymbol( it.sourceElement = containerSource + it.replaceDeprecation(it.getDeprecationInfos(session.languageVersionSettings.apiVersion)) + classProto.getExtensionOrNull(JvmProtoBuf.classModuleName)?.let { idx -> it.moduleName = nameResolver.getString(idx) } diff --git a/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/deserialization/FirMemberDeserializer.kt b/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/deserialization/FirMemberDeserializer.kt index 395ad3866a7..c500a304cdb 100644 --- a/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/deserialization/FirMemberDeserializer.kt +++ b/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/deserialization/FirMemberDeserializer.kt @@ -6,9 +6,7 @@ package org.jetbrains.kotlin.fir.deserialization import org.jetbrains.kotlin.descriptors.Modality -import org.jetbrains.kotlin.fir.FirModuleData -import org.jetbrains.kotlin.fir.FirSession -import org.jetbrains.kotlin.fir.containingClassAttr +import org.jetbrains.kotlin.fir.* import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.declarations.builder.* import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertyGetter @@ -20,7 +18,6 @@ import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.expressions.builder.buildExpressionStub import org.jetbrains.kotlin.fir.resolve.defaultType import org.jetbrains.kotlin.fir.symbols.impl.* -import org.jetbrains.kotlin.fir.toEffectiveVisibility import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.builder.buildResolvedTypeRef import org.jetbrains.kotlin.fir.types.computeTypeAttributes @@ -360,6 +357,7 @@ class FirMemberDeserializer(private val c: FirDeserializationContext) { this.setter = setter this.containerSource = c.containerSource this.initializer = c.constDeserializer.loadConstant(proto, symbol.callableId, c.nameResolver) + deprecation = annotations.getDeprecationInfosFromAnnotations(c.session.languageVersionSettings.apiVersion, false) }.apply { versionRequirementsTable = c.versionRequirementTable } @@ -421,6 +419,7 @@ class FirMemberDeserializer(private val c: FirDeserializationContext) { ) annotations += c.annotationDeserializer.loadFunctionAnnotations(c.containerSource, proto, local.nameResolver, local.typeTable) + deprecation = annotations.getDeprecationInfosFromAnnotations(c.session.languageVersionSettings.apiVersion, false) this.containerSource = c.containerSource }.apply { versionRequirementsTable = c.versionRequirementTable @@ -491,6 +490,7 @@ class FirMemberDeserializer(private val c: FirDeserializationContext) { annotations += c.annotationDeserializer.loadConstructorAnnotations(c.containerSource, proto, local.nameResolver, local.typeTable) containerSource = c.containerSource + deprecation = annotations.getDeprecationInfosFromAnnotations(c.session.languageVersionSettings.apiVersion, false) }.build().apply { containingClassAttr = c.dispatchReceiver!!.lookupTag versionRequirementsTable = c.versionRequirementTable diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaSymbolProvider.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaSymbolProvider.kt index 447e1b9f470..93115b4b9c2 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaSymbolProvider.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaSymbolProvider.kt @@ -212,6 +212,7 @@ class JavaSymbolProvider( parentClassEffectiveVisibilityCache.remove(classSymbol) firJavaClass.convertSuperTypes(javaClass, javaTypeParameterStack) firJavaClass.addAnnotationsFrom(this@JavaSymbolProvider.session, javaClass, javaTypeParameterStack) + firJavaClass.replaceDeprecation(firJavaClass.getDeprecationInfos(session.languageVersionSettings.apiVersion)) return firJavaClass } diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaClass.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaClass.kt index 1d0916ddb91..f8bdacc5479 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaClass.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaClass.kt @@ -47,6 +47,7 @@ class FirJavaClass @FirImplementationDetail internal constructor( ) : FirRegularClass() { override val hasLazyNestedClassifiers: Boolean get() = true override val controlFlowGraphReference: FirControlFlowGraphReference? get() = null + override var deprecation: DeprecationsPerUseSite? = null init { symbol.bind(this) @@ -69,6 +70,10 @@ class FirJavaClass @FirImplementationDetail internal constructor( resolvePhase = newResolvePhase } + override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) { + deprecation = newDeprecation + } + override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) {} override fun acceptChildren(visitor: FirVisitor, data: D) { diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaConstructor.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaConstructor.kt index e10544e47eb..dfc9cb72f87 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaConstructor.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaConstructor.kt @@ -41,6 +41,7 @@ class FirJavaConstructor @FirImplementationDetail constructor( override val dispatchReceiverType: ConeKotlinType?, ) : FirConstructor() { override val receiverTypeRef: FirTypeRef? get() = null + override var deprecation: DeprecationsPerUseSite? = null init { symbol.bind(this) @@ -132,6 +133,9 @@ class FirJavaConstructor @FirImplementationDetail constructor( } override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) {} + override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) { + deprecation = newDeprecation + } override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) {} diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaField.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaField.kt index 41a1b808f7c..efd20e9759a 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaField.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaField.kt @@ -15,6 +15,7 @@ import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.declarations.builder.FirFieldBuilder import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirExpression +import org.jetbrains.kotlin.fir.languageVersionSettings import org.jetbrains.kotlin.fir.symbols.impl.FirFieldSymbol import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.types.FirTypeRef @@ -59,6 +60,9 @@ class FirJavaField @FirImplementationDetail constructor( override val annotations: List by lazy { annotationBuilder() } + override val deprecation: DeprecationsPerUseSite by lazy { + annotations.getDeprecationInfosFromAnnotations(moduleData.session.languageVersionSettings.apiVersion, fromJava = true) + } override fun transformReturnTypeRef(transformer: FirTransformer, data: D): FirField { returnTypeRef = returnTypeRef.transformSingle(transformer, data) @@ -134,6 +138,8 @@ class FirJavaField @FirImplementationDetail constructor( override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) {} + override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) {} + override fun transformDelegate(transformer: FirTransformer, data: D): FirField { return this } diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaMethod.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaMethod.kt index c9bad9994b6..6811688cf80 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaMethod.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaMethod.kt @@ -84,6 +84,9 @@ class FirJavaMethod @FirImplementationDetail constructor( override val annotations: List by lazy { annotationBuilder() } + //not used actually, because get 'enhanced' into regular FirSimpleFunction + override var deprecation: DeprecationsPerUseSite? = null + override fun acceptChildren(visitor: FirVisitor, data: D) { returnTypeRef.accept(visitor, data) receiverTypeRef?.accept(visitor, data) @@ -156,6 +159,10 @@ class FirJavaMethod @FirImplementationDetail constructor( override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) { } + override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) { + deprecation = newDeprecation + } + override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) { controlFlowGraphReference = newControlFlowGraphReference } @@ -194,6 +201,13 @@ class FirJavaMethodBuilder : FirFunctionBuilder, FirTypeParametersOwnerBuilder, override var resolvePhase: FirResolvePhase = FirResolvePhase.ANALYZED_DEPENDENCIES lateinit var annotationBuilder: () -> List + @Deprecated("Modification of 'deprecation' has no impact for FirJavaFunctionBuilder", level = DeprecationLevel.HIDDEN) + override var deprecation: DeprecationsPerUseSite? + get() = throw IllegalStateException() + set(_) { + throw IllegalStateException() + } + @Deprecated("Modification of 'containerSource' has no impact for FirJavaFunctionBuilder", level = DeprecationLevel.HIDDEN) override var containerSource: DeserializedContainerSource? get() = throw IllegalStateException() @@ -222,7 +236,7 @@ class FirJavaMethodBuilder : FirFunctionBuilder, FirTypeParametersOwnerBuilder, status, symbol, annotationBuilder, - dispatchReceiverType, + dispatchReceiverType ) } } diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaValueParameter.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaValueParameter.kt index ed9d760d2da..f0761a35b2d 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaValueParameter.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaValueParameter.kt @@ -63,6 +63,9 @@ class FirJavaValueParameter @FirImplementationDetail constructor( override val receiverTypeRef: FirTypeRef? get() = null + override val deprecation: DeprecationsPerUseSite + get() = EmptyDeprecationsPerUseSite + override val initializer: FirExpression? get() = null @@ -155,6 +158,10 @@ class FirJavaValueParameter @FirImplementationDetail constructor( override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) { } + override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) { + + } + override fun replaceInitializer(newInitializer: FirExpression?) { } diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/deserialization/KotlinDeserializedJvmSymbolsProvider.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/deserialization/KotlinDeserializedJvmSymbolsProvider.kt index 5c618f8fb3d..413b173b766 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/deserialization/KotlinDeserializedJvmSymbolsProvider.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/deserialization/KotlinDeserializedJvmSymbolsProvider.kt @@ -13,10 +13,9 @@ import org.jetbrains.kotlin.fir.caches.* import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.deserialization.* import org.jetbrains.kotlin.fir.expressions.* -import org.jetbrains.kotlin.fir.expressions.builder.* import org.jetbrains.kotlin.fir.java.JavaSymbolProvider import org.jetbrains.kotlin.fir.java.topLevelName -import org.jetbrains.kotlin.fir.resolve.providers.* +import org.jetbrains.kotlin.fir.languageVersionSettings import org.jetbrains.kotlin.fir.scopes.FirKotlinScopeProvider import org.jetbrains.kotlin.fir.symbols.impl.* import org.jetbrains.kotlin.load.java.JavaClassFinder @@ -140,6 +139,7 @@ class KotlinDeserializedJvmSymbolsProvider( kotlinClass.byteContent, ) (symbol.fir.annotations as MutableList) += annotations + symbol.fir.replaceDeprecation(symbol.fir.getDeprecationInfos(session.languageVersionSettings.apiVersion)) } private fun readClassFromClassFile(classId: ClassId, classFile: KotlinClassFinder.Result.ClassFileContent): FirRegularClassSymbol? { diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/enhancement/SignatureEnhancement.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/enhancement/SignatureEnhancement.kt index 6fb4482e8eb..446e3901d03 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/enhancement/SignatureEnhancement.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/enhancement/SignatureEnhancement.kt @@ -149,6 +149,7 @@ class FirSignatureEnhancement( delegateGetter = enhancedGetterSymbol.fir as FirSimpleFunction delegateSetter = enhancedSetterSymbol?.fir as FirSimpleFunction? status = firElement.status + deprecation = getDeprecationsFromAccessors(delegateGetter, delegateSetter, session.languageVersionSettings.apiVersion) }.symbol } else -> { @@ -294,6 +295,7 @@ class FirSignatureEnhancement( else -> throw AssertionError("Unknown Java method to enhance: ${firMethod.render()}") }.apply { annotations += firMethod.annotations + deprecation = annotations.getDeprecationInfosFromAnnotations(session.languageVersionSettings.apiVersion, fromJava = true) }.build() return function.symbol diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassUseSiteMemberScope.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassUseSiteMemberScope.kt index d38f7d33c43..76839840e50 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassUseSiteMemberScope.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassUseSiteMemberScope.kt @@ -77,6 +77,7 @@ class JavaClassUseSiteMemberScope( delegateGetter = getterSymbol.fir delegateSetter = setterSymbol?.fir status = getterSymbol.fir.status.copy(newModality = chooseModalityForAccessor(property, delegateGetter)) + deprecation = getDeprecationsFromAccessors(delegateGetter, delegateSetter, session.languageVersionSettings.apiVersion) }.symbol } } diff --git a/compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/fir/ValueParameter.kt b/compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/fir/ValueParameter.kt index 61e3ce1c4cb..32958ad11aa 100644 --- a/compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/fir/ValueParameter.kt +++ b/compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/fir/ValueParameter.kt @@ -48,20 +48,18 @@ class ValueParameter( } return buildProperty { - val parameterSource = firValueParameter.source as? FirLightSourceElement - val parameterNode = parameterSource?.lighterASTNode - source = parameterNode?.toFirLightSourceElement( - parameterSource.treeStructure, FirFakeSourceElementKind.PropertyFromParameter - ) + val propertySource = firValueParameter.source?.fakeElement(FirFakeSourceElementKind.PropertyFromParameter) + source = propertySource this.moduleData = moduleData origin = FirDeclarationOrigin.Source returnTypeRef = type.copyWithNewSourceKind(FirFakeSourceElementKind.PropertyFromParameter) this.name = name initializer = buildQualifiedAccessExpression { - source = firValueParameter.source + source = propertySource calleeReference = buildPropertyFromParameterResolvedNamedReference { this.name = name resolvedSymbol = this@ValueParameter.firValueParameter.symbol + source = propertySource } } isVar = this@ValueParameter.isVar diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/declarations/FirAnnotationUtils.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/declarations/FirAnnotationUtils.kt index f59c93bcade..1055a2aa597 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/declarations/FirAnnotationUtils.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/declarations/FirAnnotationUtils.kt @@ -15,6 +15,8 @@ import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol import org.jetbrains.kotlin.fir.types.ConeClassLikeType import org.jetbrains.kotlin.fir.types.coneType +import org.jetbrains.kotlin.fir.types.coneTypeSafe +import org.jetbrains.kotlin.fir.types.coneTypeUnsafe import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name @@ -92,7 +94,15 @@ fun FirAnnotatedDeclaration.hasAnnotation(classId: ClassId): Boolean { fun FirAnnotationContainer.getAnnotationByFqName(fqName: FqName): FirAnnotationCall? { return annotations.find { - (it.annotationTypeRef.coneType as? ConeClassLikeType)?.lookupTag?.classId?.asSingleFqName() == fqName + it.annotationTypeRef.coneTypeUnsafe().lookupTag.classId.asSingleFqName() == fqName + } +} + +fun FirAnnotationContainer.getAnnotationsByFqName(fqName: FqName): List = annotations.getAnnotationsByFqName(fqName) + +fun List.getAnnotationsByFqName(fqName: FqName): List { + return filter { + it.annotationTypeRef.coneTypeSafe()?.lookupTag?.classId?.asSingleFqName() == fqName } } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/declarations/deprecatedSinceUtils.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/declarations/deprecatedSinceUtils.kt deleted file mode 100644 index ffc9202a8be..00000000000 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/declarations/deprecatedSinceUtils.kt +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright 2010-2021 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.declarations - -import org.jetbrains.kotlin.builtins.StandardNames -import org.jetbrains.kotlin.config.ApiVersion -import org.jetbrains.kotlin.fir.FirAnnotationContainer -import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall -import org.jetbrains.kotlin.fir.expressions.FirConstExpression -import org.jetbrains.kotlin.name.Name -import org.jetbrains.kotlin.utils.addToStdlib.safeAs - -private val HIDDEN_SINCE_NAME = Name.identifier("hiddenSince") - -private object FirDeprecatedSinceVersionKey : FirDeclarationDataKey() - -private var FirCallableDeclaration<*>.deprecatedSinceKotlinCachedValue: DeprecatedSinceValue? by FirDeclarationDataRegistry.data( - FirDeprecatedSinceVersionKey -) - -private fun FirAnnotationContainer.getHiddenSinceKotlin(): ApiVersion? = - getAnnotationByFqName(StandardNames.FqNames.deprecatedSinceKotlin)?.getVersionFromArgument(HIDDEN_SINCE_NAME) - -fun T.getHiddenSinceKotlinCached(): ApiVersion? where T : FirCallableDeclaration<*>, T : FirAnnotationContainer { - val cached = deprecatedSinceKotlinCachedValue - if (cached != null) return cached.hiddenSince - val calculated = getHiddenSinceKotlin() - deprecatedSinceKotlinCachedValue = DeprecatedSinceValue(calculated) - return calculated -} - - -private fun FirAnnotationCall.getVersionFromArgument(name: Name): ApiVersion? = - findArgumentByName(name)?.let { expression -> - expression.safeAs>()?.value.safeAs()?.let { ApiVersion.parse(it) } - } - -private class DeprecatedSinceValue(val hiddenSince: ApiVersion?) - - - - - diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/declarations/deprecationUtils.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/declarations/deprecationUtils.kt new file mode 100644 index 00000000000..0189231dca6 --- /dev/null +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/declarations/deprecationUtils.kt @@ -0,0 +1,132 @@ +/* + * Copyright 2010-2021 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.declarations + +import org.jetbrains.kotlin.builtins.StandardNames +import org.jetbrains.kotlin.config.ApiVersion +import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget +import org.jetbrains.kotlin.fir.FirAnnotationContainer +import org.jetbrains.kotlin.fir.FirElement +import org.jetbrains.kotlin.fir.expressions.* +import org.jetbrains.kotlin.fir.references.FirNamedReference +import org.jetbrains.kotlin.name.FqName +import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.utils.addIfNotNull +import org.jetbrains.kotlin.utils.addToStdlib.safeAs + +private val JAVA_DEPRECATED = FqName("java.lang.Deprecated") +private val HIDDEN_SINCE_NAME = Name.identifier("hiddenSince") +private val ERROR_SINCE_NAME = Name.identifier("errorSince") +private val WARNING_SINCE_NAME = Name.identifier("warningSince") +private val MESSAGE_NAME = Name.identifier("message") +private val LEVEL_NAME = Name.identifier("level") + +private val JAVA_ORIGINS = setOf(FirDeclarationOrigin.Java, FirDeclarationOrigin.Enhancement) + +fun T.getDeprecation(callSite: FirElement?): Deprecation? { + val deprecationInfos = mutableListOf() + when (this) { + is FirProperty -> + if (callSite is FirVariableAssignment) { + deprecationInfos.addIfNotNull( + getDeprecationForCallSite(AnnotationUseSiteTarget.PROPERTY_SETTER, AnnotationUseSiteTarget.PROPERTY) + ) + } else { + deprecationInfos.addIfNotNull( + getDeprecationForCallSite(AnnotationUseSiteTarget.PROPERTY_GETTER, AnnotationUseSiteTarget.PROPERTY) + ) + } + else -> deprecationInfos.addIfNotNull(getDeprecationForCallSite()) + } + + return deprecationInfos.firstOrNull() +} + +fun FirAnnotationContainer.getDeprecationInfos(currentVersion: ApiVersion): DeprecationsPerUseSite { + val deprecationByUseSite = mutableMapOf() + val fromJava = JAVA_ORIGINS.contains(this.safeAs()?.origin) + annotations.extractDeprecationInfoPerUseSite(currentVersion, fromJava).toMap(deprecationByUseSite) + + if (this is FirProperty) { + getDeprecationsFromAccessors(getter, setter, currentVersion).bySpecificSite?.forEach { (k, v) -> deprecationByUseSite[k] = v } + } + + return DeprecationsPerUseSite.fromMap(deprecationByUseSite) +} + +@OptIn(ExperimentalStdlibApi::class) +fun getDeprecationsFromAccessors( + getter: FirFunction?, + setter: FirFunction?, + currentVersion: ApiVersion +): DeprecationsPerUseSite { + val perUseSite = buildMap { + setter?.getDeprecationInfos(currentVersion)?.all?.let { put(AnnotationUseSiteTarget.PROPERTY_SETTER, it) } + getter?.getDeprecationInfos(currentVersion)?.all?.let { put(AnnotationUseSiteTarget.PROPERTY_GETTER, it) } + } + return if (perUseSite.isEmpty()) EmptyDeprecationsPerUseSite else DeprecationsPerUseSite(null, perUseSite) +} + +fun List.getDeprecationInfosFromAnnotations(currentVersion: ApiVersion, fromJava: Boolean): DeprecationsPerUseSite { + val deprecationByUseSite = extractDeprecationInfoPerUseSite(currentVersion, fromJava).toMap() + return DeprecationsPerUseSite.fromMap(deprecationByUseSite) +} + +private fun T.getDeprecationForCallSite( + vararg sites: AnnotationUseSiteTarget +): Deprecation? { + val deprecations = when (this) { + is FirCallableDeclaration -> deprecation + is FirClassLikeDeclaration -> deprecation + else -> null + } + return (deprecations ?: EmptyDeprecationsPerUseSite).forUseSite(*sites) +} + +private fun FirAnnotationCall.getStringArgument(name: Name): String? = + findArgumentByName(name)?.let { expression -> + expression.safeAs>()?.value.safeAs() + } + +private fun FirAnnotationCall.getVersionFromArgument(name: Name): ApiVersion? = + getStringArgument(name)?.let { ApiVersion.parse(it) } + +private fun FirAnnotationCall.getDeprecationLevel(): DeprecationLevelValue? { + //take last because Annotation might be not resolved yet and arguments passed without explicit names + val arg = findArgumentByName(LEVEL_NAME) ?: arguments.lastOrNull() + return arg?.let { argument -> + val targetExpression = argument as? FirQualifiedAccessExpression ?: return null + val targetName = (targetExpression.calleeReference as? FirNamedReference)?.name?.asString() ?: return null + DeprecationLevelValue.values().find { it.name == targetName } + } +} + +private fun List.extractDeprecationInfoPerUseSite( + currentVersion: ApiVersion, + fromJava: Boolean +): List> { + val annotations = getAnnotationsByFqName(StandardNames.FqNames.deprecated).map { it to false } + + getAnnotationsByFqName(JAVA_DEPRECATED).map { it to true } + return annotations.mapNotNull { (deprecated, fromJavaAnnotation) -> + val deprecationLevel = deprecated.getDeprecationLevel() ?: DeprecationLevelValue.WARNING + val deprecatedSinceKotlin = getAnnotationsByFqName(StandardNames.FqNames.deprecatedSinceKotlin).firstOrNull() + + fun levelApplied(name: Name, level: DeprecationLevelValue): DeprecationLevelValue? { + deprecatedSinceKotlin?.getVersionFromArgument(name)?.takeIf { it <= currentVersion }?.let { return level } + return level.takeIf { deprecatedSinceKotlin == null && level == deprecationLevel } + } + + val appliedLevel = (levelApplied(HIDDEN_SINCE_NAME, DeprecationLevelValue.HIDDEN) + ?: levelApplied(ERROR_SINCE_NAME, DeprecationLevelValue.ERROR) + ?: levelApplied(WARNING_SINCE_NAME, DeprecationLevelValue.WARNING)) + + appliedLevel?.let { + val inheritable = !fromJavaAnnotation && !fromJava + deprecated.useSiteTarget to Deprecation(it, inheritable, deprecated.getStringArgument(MESSAGE_NAME)) + } + } +} + diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/CallKind.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/CallKind.kt index c5162fe33ea..6af9af74a9a 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/CallKind.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/CallKind.kt @@ -16,7 +16,8 @@ sealed class CallKind(vararg resolutionSequence: ResolutionStage) { CheckDispatchReceiver, CheckExtensionReceiver, CheckLowPriorityInOverloadResolution, - PostponedVariablesInitializerResolutionStage + PostponedVariablesInitializerResolutionStage, + CheckDeprecatedSinceKotlin, ) object SyntheticSelect : CallKind( @@ -56,7 +57,8 @@ sealed class CallKind(vararg resolutionSequence: ResolutionStage) { CheckDispatchReceiver, CheckExtensionReceiver, CheckArguments, - EagerResolveOfCallableReferences + EagerResolveOfCallableReferences, + CheckDeprecatedSinceKotlin, ) object CallableReference : CallKind( @@ -69,7 +71,7 @@ sealed class CallKind(vararg resolutionSequence: ResolutionStage) { CheckExtensionReceiver, CheckCallableReferenceExpectedType, CheckLowPriorityInOverloadResolution, - CheckDeprecatedSinceKotlin + CheckDeprecatedSinceKotlin, ) object SyntheticIdForCallableReferencesResolution : CallKind( diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ResolutionStages.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ResolutionStages.kt index 5bdce370c3a..32c83d175f3 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ResolutionStages.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ResolutionStages.kt @@ -297,9 +297,9 @@ internal object CheckCallModifiers : CheckerStage() { internal object CheckDeprecatedSinceKotlin : ResolutionStage() { override suspend fun check(candidate: Candidate, callInfo: CallInfo, sink: CheckerSink, context: ResolutionContext) { - val fir = (candidate.symbol as? FirFunctionSymbol<*>)?.fir ?: return - val deprecatedSince = fir.getHiddenSinceKotlinCached() ?: return - if (context.session.languageVersionSettings.apiVersion >= deprecatedSince) { + val fir = (candidate.symbol as? FirCallableSymbol<*>)?.fir ?: return + val deprecation = fir.getDeprecation(callInfo.callSite) + if (deprecation != null && deprecation.level == DeprecationLevelValue.HIDDEN) { sink.yieldDiagnostic(HiddenCandidate) } } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/Synthetics.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/Synthetics.kt index 655dd783885..326e83d0012 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/Synthetics.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/Synthetics.kt @@ -8,6 +8,7 @@ package org.jetbrains.kotlin.fir.resolve.calls import org.jetbrains.kotlin.fir.* import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction +import org.jetbrains.kotlin.fir.declarations.getDeprecationsFromAccessors import org.jetbrains.kotlin.fir.declarations.utils.isStatic import org.jetbrains.kotlin.fir.declarations.synthetic.buildSyntheticProperty import org.jetbrains.kotlin.fir.scopes.* @@ -117,6 +118,7 @@ class FirSyntheticPropertiesScope( ) delegateGetter = getter delegateSetter = matchingSetter + deprecation = getDeprecationsFromAccessors(getter, matchingSetter, session.languageVersionSettings.apiVersion) } val syntheticSymbol = property.symbol (baseScope as? FirUnstableSmartcastTypeScope)?.apply { diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirStatusResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirStatusResolveTransformer.kt index e4e859ac37a..32475d39e0d 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirStatusResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirStatusResolveTransformer.kt @@ -10,6 +10,7 @@ import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.declarations.utils.isLocal import org.jetbrains.kotlin.fir.expressions.FirBlock import org.jetbrains.kotlin.fir.expressions.FirStatement +import org.jetbrains.kotlin.fir.languageVersionSettings import org.jetbrains.kotlin.fir.render import org.jetbrains.kotlin.fir.resolve.ScopeSession import org.jetbrains.kotlin.fir.resolve.firProvider @@ -103,6 +104,7 @@ open class FirStatusResolveTransformer( */ if (computationStatus != StatusComputationSession.StatusComputationStatus.Computed) { regularClass.transformStatus(this, statusResolver.resolveStatus(regularClass, containingClass, isLocal = false)) + calculateDeprecations(regularClass) } return transformClass(regularClass, data).also { statusComputationSession.endComputing(regularClass) @@ -311,6 +313,7 @@ abstract class AbstractFirStatusResolveTransformer( ): FirStatement { typeAlias.typeParameters.forEach { transformDeclaration(it, data) } typeAlias.transformStatus(this, statusResolver.resolveStatus(typeAlias, containingClass, isLocal = false)) + calculateDeprecations(typeAlias) return transformDeclaration(typeAlias, data) as FirTypeAlias } @@ -467,6 +470,7 @@ abstract class AbstractFirStatusResolveTransformer( data: FirResolvedDeclarationStatus? ): FirStatement { constructor.transformStatus(this, statusResolver.resolveStatus(constructor, containingClass, isLocal = false)) + calculateDeprecations(constructor) return transformDeclaration(constructor, data) as FirStatement } @@ -478,6 +482,7 @@ abstract class AbstractFirStatusResolveTransformer( simpleFunction.replaceResolvePhase(transformerPhase) } simpleFunction.transformStatus(this, statusResolver.resolveStatus(simpleFunction, containingClass, isLocal = false)) + calculateDeprecations(simpleFunction) return transformDeclaration(simpleFunction, data) as FirStatement } @@ -492,7 +497,7 @@ abstract class AbstractFirStatusResolveTransformer( property.getter?.let { transformPropertyAccessor(it, property) } property.setter?.let { transformPropertyAccessor(it, property) } - + calculateDeprecations(property) return property } @@ -501,6 +506,7 @@ abstract class AbstractFirStatusResolveTransformer( data: FirResolvedDeclarationStatus? ): FirStatement { field.transformStatus(this, statusResolver.resolveStatus(field, containingClass, isLocal = false)) + calculateDeprecations(field) return transformDeclaration(field, data) as FirField } @@ -509,6 +515,7 @@ abstract class AbstractFirStatusResolveTransformer( data: FirResolvedDeclarationStatus? ): FirStatement { enumEntry.transformStatus(this, statusResolver.resolveStatus(enumEntry, containingClass, isLocal = false)) + calculateDeprecations(enumEntry) return transformDeclaration(enumEntry, data) as FirEnumEntry } @@ -516,6 +523,7 @@ abstract class AbstractFirStatusResolveTransformer( valueParameter: FirValueParameter, data: FirResolvedDeclarationStatus? ): FirStatement { + calculateDeprecations(valueParameter) @Suppress("UNCHECKED_CAST") return transformDeclaration(valueParameter, data) as FirStatement } @@ -530,4 +538,16 @@ abstract class AbstractFirStatusResolveTransformer( override fun transformBlock(block: FirBlock, data: FirResolvedDeclarationStatus?): FirStatement { return block } + + protected fun calculateDeprecations(regularClass: FirClassLikeDeclaration) { + if (regularClass.deprecation == null) { + regularClass.replaceDeprecation(regularClass.getDeprecationInfos(session.languageVersionSettings.apiVersion)) + } + } + + protected fun calculateDeprecations(simpleFunction: FirCallableDeclaration) { + if (simpleFunction.deprecation == null) { + simpleFunction.replaceDeprecation(simpleFunction.getDeprecationInfos(session.languageVersionSettings.apiVersion)) + } + } } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirFakeOverrideGenerator.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirFakeOverrideGenerator.kt index 3cb6361cb0b..0c7223c69bc 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirFakeOverrideGenerator.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirFakeOverrideGenerator.kt @@ -7,15 +7,12 @@ package org.jetbrains.kotlin.fir.scopes.impl import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.Visibility -import org.jetbrains.kotlin.fir.FirSession -import org.jetbrains.kotlin.fir.copy +import org.jetbrains.kotlin.fir.* import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.declarations.builder.* import org.jetbrains.kotlin.fir.declarations.synthetic.FirSyntheticProperty import org.jetbrains.kotlin.fir.declarations.synthetic.buildSyntheticProperty import org.jetbrains.kotlin.fir.declarations.utils.isExpect -import org.jetbrains.kotlin.fir.moduleData -import org.jetbrains.kotlin.fir.originalForSubstitutionOverrideAttr import org.jetbrains.kotlin.fir.resolve.substitution.ChainedSubstitutor import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor import org.jetbrains.kotlin.fir.resolve.substitution.substitutorByMap @@ -115,6 +112,7 @@ object FirFakeOverrideGenerator { typeParameters += configureAnnotationsTypeParametersAndSignature( session, baseFunction, newParameterTypes, newTypeParameters, newReceiverType, newReturnType, fakeOverrideSubstitution ).filterIsInstance() + deprecation = baseFunction.deprecation } } @@ -153,6 +151,7 @@ object FirFakeOverrideGenerator { resolvePhase = baseConstructor.resolvePhase source = baseConstructor.source attributes = baseConstructor.attributes.copy() + deprecation = baseConstructor.deprecation }.apply { originalForSubstitutionOverrideAttr = baseConstructor } @@ -310,6 +309,7 @@ object FirFakeOverrideGenerator { newReturnType, fakeOverrideSubstitution ) + deprecation = baseProperty.deprecation } } @@ -462,6 +462,7 @@ object FirFakeOverrideGenerator { delegateGetter = getter delegateSetter = setter status = baseProperty.status + deprecation = getDeprecationsFromAccessors(getter, setter, session.languageVersionSettings.apiVersion) }.symbol } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirAnonymousFunction.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirAnonymousFunction.kt index 6c582b7da53..1ab2ab4c6f5 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirAnonymousFunction.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirAnonymousFunction.kt @@ -33,6 +33,7 @@ abstract class FirAnonymousFunction : FirFunction(), FirTypeParametersOwner { abstract override val annotations: List abstract override val returnTypeRef: FirTypeRef abstract override val receiverTypeRef: FirTypeRef? + abstract override val deprecation: DeprecationsPerUseSite? abstract override val status: FirDeclarationStatus abstract override val containerSource: DeserializedContainerSource? abstract override val dispatchReceiverType: ConeKotlinType? @@ -59,6 +60,8 @@ abstract class FirAnonymousFunction : FirFunction(), FirTypeParametersOwner { abstract override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) + abstract override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) + abstract override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) abstract override fun replaceValueParameters(newValueParameters: List) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirAnonymousObject.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirAnonymousObject.kt index 8cbfbc22e27..0132f640494 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirAnonymousObject.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirAnonymousObject.kt @@ -27,6 +27,7 @@ abstract class FirAnonymousObject : FirClass(), FirControlFlowGraphOwner { abstract override val resolvePhase: FirResolvePhase abstract override val origin: FirDeclarationOrigin abstract override val attributes: FirDeclarationAttributes + abstract override val deprecation: DeprecationsPerUseSite? abstract override val typeParameters: List abstract override val classKind: ClassKind abstract override val superTypeRefs: List @@ -44,6 +45,8 @@ abstract class FirAnonymousObject : FirClass(), FirControlFlowGraphOwner { abstract override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) + abstract override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) + abstract override fun replaceSuperTypeRefs(newSuperTypeRefs: List) abstract override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirCallableDeclaration.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirCallableDeclaration.kt index 14dc10c8dfd..56189bb353f 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirCallableDeclaration.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirCallableDeclaration.kt @@ -27,6 +27,7 @@ sealed class FirCallableDeclaration : FirTypedDeclaration() { abstract override val annotations: List abstract override val returnTypeRef: FirTypeRef abstract val receiverTypeRef: FirTypeRef? + abstract val deprecation: DeprecationsPerUseSite? abstract override val symbol: FirCallableSymbol override fun accept(visitor: FirVisitor, data: D): R = visitor.visitCallableDeclaration(this, data) @@ -41,6 +42,8 @@ sealed class FirCallableDeclaration : FirTypedDeclaration() { abstract fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) + abstract fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirCallableDeclaration abstract override fun transformReturnTypeRef(transformer: FirTransformer, data: D): FirCallableDeclaration diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirCallableMemberDeclaration.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirCallableMemberDeclaration.kt index 41af4f00563..691e2baf31f 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirCallableMemberDeclaration.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirCallableMemberDeclaration.kt @@ -29,6 +29,7 @@ sealed class FirCallableMemberDeclaration : FirCallableDeclaration(), FirMemberD abstract override val annotations: List abstract override val returnTypeRef: FirTypeRef abstract override val receiverTypeRef: FirTypeRef? + abstract override val deprecation: DeprecationsPerUseSite? abstract override val symbol: FirCallableSymbol abstract override val typeParameters: List abstract override val status: FirDeclarationStatus @@ -47,6 +48,8 @@ sealed class FirCallableMemberDeclaration : FirCallableDeclaration(), FirMemberD abstract override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) + abstract override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirCallableMemberDeclaration abstract override fun transformReturnTypeRef(transformer: FirTransformer, data: D): FirCallableMemberDeclaration diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirClass.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirClass.kt index 298916224f8..9e74f487f5e 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirClass.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirClass.kt @@ -27,6 +27,7 @@ sealed class FirClass : FirClassLikeDeclaration(), FirStatement, FirTypeParamete abstract override val resolvePhase: FirResolvePhase abstract override val origin: FirDeclarationOrigin abstract override val attributes: FirDeclarationAttributes + abstract override val deprecation: DeprecationsPerUseSite? abstract override val typeParameters: List abstract override val symbol: FirClassSymbol abstract val classKind: ClassKind @@ -43,6 +44,8 @@ sealed class FirClass : FirClassLikeDeclaration(), FirStatement, FirTypeParamete abstract override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) + abstract override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) + abstract fun replaceSuperTypeRefs(newSuperTypeRefs: List) abstract override fun transformTypeParameters(transformer: FirTransformer, data: D): FirClass diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirClassLikeDeclaration.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirClassLikeDeclaration.kt index b6c5d72b3bc..5444e8dd50d 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirClassLikeDeclaration.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirClassLikeDeclaration.kt @@ -26,6 +26,7 @@ sealed class FirClassLikeDeclaration : FirAnnotatedDeclaration(), FirStatement { abstract override val attributes: FirDeclarationAttributes abstract override val annotations: List abstract override val symbol: FirClassLikeSymbol + abstract val deprecation: DeprecationsPerUseSite? override fun accept(visitor: FirVisitor, data: D): R = visitor.visitClassLikeDeclaration(this, data) @@ -35,5 +36,7 @@ sealed class FirClassLikeDeclaration : FirAnnotatedDeclaration(), FirStatement { abstract override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) + abstract fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) + abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirClassLikeDeclaration } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirConstructor.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirConstructor.kt index 58752506984..a5561a15aa0 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirConstructor.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirConstructor.kt @@ -31,6 +31,7 @@ abstract class FirConstructor : FirFunction(), FirTypeParameterRefsOwner { abstract override val attributes: FirDeclarationAttributes abstract override val returnTypeRef: FirTypeRef abstract override val receiverTypeRef: FirTypeRef? + abstract override val deprecation: DeprecationsPerUseSite? abstract override val typeParameters: List abstract override val status: FirDeclarationStatus abstract override val containerSource: DeserializedContainerSource? @@ -55,6 +56,8 @@ abstract class FirConstructor : FirFunction(), FirTypeParameterRefsOwner { abstract override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) + abstract override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) + abstract override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) abstract override fun replaceValueParameters(newValueParameters: List) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirEnumEntry.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirEnumEntry.kt index b7a614328aa..1e4c3d5eef8 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirEnumEntry.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirEnumEntry.kt @@ -30,6 +30,7 @@ abstract class FirEnumEntry : FirVariable() { abstract override val attributes: FirDeclarationAttributes abstract override val returnTypeRef: FirTypeRef abstract override val receiverTypeRef: FirTypeRef? + abstract override val deprecation: DeprecationsPerUseSite? abstract override val typeParameters: List abstract override val status: FirDeclarationStatus abstract override val containerSource: DeserializedContainerSource? @@ -56,6 +57,8 @@ abstract class FirEnumEntry : FirVariable() { abstract override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) + abstract override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) + abstract override fun replaceInitializer(newInitializer: FirExpression?) abstract override fun transformReturnTypeRef(transformer: FirTransformer, data: D): FirEnumEntry diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirErrorFunction.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirErrorFunction.kt index be52131865d..1269ac8fb61 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirErrorFunction.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirErrorFunction.kt @@ -33,6 +33,7 @@ abstract class FirErrorFunction : FirFunction(), FirDiagnosticHolder { abstract override val annotations: List abstract override val returnTypeRef: FirTypeRef abstract override val receiverTypeRef: FirTypeRef? + abstract override val deprecation: DeprecationsPerUseSite? abstract override val status: FirDeclarationStatus abstract override val containerSource: DeserializedContainerSource? abstract override val dispatchReceiverType: ConeKotlinType? @@ -55,6 +56,8 @@ abstract class FirErrorFunction : FirFunction(), FirDiagnosticHolder { abstract override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) + abstract override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) + abstract override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) abstract override fun replaceValueParameters(newValueParameters: List) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirErrorProperty.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirErrorProperty.kt index b936bb14661..ab6a8c372d8 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirErrorProperty.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirErrorProperty.kt @@ -32,6 +32,7 @@ abstract class FirErrorProperty : FirVariable(), FirDiagnosticHolder { abstract override val attributes: FirDeclarationAttributes abstract override val returnTypeRef: FirTypeRef abstract override val receiverTypeRef: FirTypeRef? + abstract override val deprecation: DeprecationsPerUseSite? abstract override val typeParameters: List abstract override val status: FirDeclarationStatus abstract override val containerSource: DeserializedContainerSource? @@ -59,6 +60,8 @@ abstract class FirErrorProperty : FirVariable(), FirDiagnosticHolder { abstract override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) + abstract override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) + abstract override fun replaceInitializer(newInitializer: FirExpression?) abstract override fun transformReturnTypeRef(transformer: FirTransformer, data: D): FirErrorProperty diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirField.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirField.kt index ea72dbe0b87..c62b13c2cb2 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirField.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirField.kt @@ -30,6 +30,7 @@ abstract class FirField : FirVariable() { abstract override val attributes: FirDeclarationAttributes abstract override val returnTypeRef: FirTypeRef abstract override val receiverTypeRef: FirTypeRef? + abstract override val deprecation: DeprecationsPerUseSite? abstract override val typeParameters: List abstract override val status: FirDeclarationStatus abstract override val containerSource: DeserializedContainerSource? @@ -56,6 +57,8 @@ abstract class FirField : FirVariable() { abstract override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) + abstract override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) + abstract override fun replaceInitializer(newInitializer: FirExpression?) abstract override fun transformReturnTypeRef(transformer: FirTransformer, data: D): FirField diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirFunction.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirFunction.kt index cbaf2d422db..50846dbfac1 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirFunction.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirFunction.kt @@ -33,6 +33,7 @@ sealed class FirFunction : FirCallableMemberDeclaration(), FirTargetElement, Fir abstract override val annotations: List abstract override val returnTypeRef: FirTypeRef abstract override val receiverTypeRef: FirTypeRef? + abstract override val deprecation: DeprecationsPerUseSite? abstract override val typeParameters: List abstract override val status: FirDeclarationStatus abstract override val containerSource: DeserializedContainerSource? @@ -54,6 +55,8 @@ sealed class FirFunction : FirCallableMemberDeclaration(), FirTargetElement, Fir abstract override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) + abstract override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) + abstract override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) abstract fun replaceValueParameters(newValueParameters: List) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirProperty.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirProperty.kt index 1928be19d64..a2a64623a98 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirProperty.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirProperty.kt @@ -33,6 +33,7 @@ abstract class FirProperty : FirVariable(), FirTypeParametersOwner, FirControlFl abstract override val attributes: FirDeclarationAttributes abstract override val returnTypeRef: FirTypeRef abstract override val receiverTypeRef: FirTypeRef? + abstract override val deprecation: DeprecationsPerUseSite? abstract override val status: FirDeclarationStatus abstract override val containerSource: DeserializedContainerSource? abstract override val dispatchReceiverType: ConeKotlinType? @@ -64,6 +65,8 @@ abstract class FirProperty : FirVariable(), FirTypeParametersOwner, FirControlFl abstract override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) + abstract override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) + abstract override fun replaceInitializer(newInitializer: FirExpression?) abstract override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirPropertyAccessor.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirPropertyAccessor.kt index cfdd39cd2b4..fba9ad07050 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirPropertyAccessor.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirPropertyAccessor.kt @@ -31,6 +31,7 @@ abstract class FirPropertyAccessor : FirFunction(), FirContractDescriptionOwner, abstract override val attributes: FirDeclarationAttributes abstract override val returnTypeRef: FirTypeRef abstract override val receiverTypeRef: FirTypeRef? + abstract override val deprecation: DeprecationsPerUseSite? abstract override val status: FirDeclarationStatus abstract override val containerSource: DeserializedContainerSource? abstract override val dispatchReceiverType: ConeKotlinType? @@ -56,6 +57,8 @@ abstract class FirPropertyAccessor : FirFunction(), FirContractDescriptionOwner, abstract override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) + abstract override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) + abstract override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) abstract override fun replaceValueParameters(newValueParameters: List) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirRegularClass.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirRegularClass.kt index 8ef73eb85b2..cbfeb629d37 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirRegularClass.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirRegularClass.kt @@ -28,6 +28,7 @@ abstract class FirRegularClass : FirClass(), FirMemberDeclaration, FirControlFlo abstract override val resolvePhase: FirResolvePhase abstract override val origin: FirDeclarationOrigin abstract override val attributes: FirDeclarationAttributes + abstract override val deprecation: DeprecationsPerUseSite? abstract override val typeParameters: List abstract override val classKind: ClassKind abstract override val declarations: List @@ -49,6 +50,8 @@ abstract class FirRegularClass : FirClass(), FirMemberDeclaration, FirControlFlo abstract override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) + abstract override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) + abstract override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) abstract override fun replaceSuperTypeRefs(newSuperTypeRefs: List) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirSimpleFunction.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirSimpleFunction.kt index 8683ed7bf20..915c1377d4c 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirSimpleFunction.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirSimpleFunction.kt @@ -32,6 +32,7 @@ abstract class FirSimpleFunction : FirFunction(), FirContractDescriptionOwner, F abstract override val attributes: FirDeclarationAttributes abstract override val returnTypeRef: FirTypeRef abstract override val receiverTypeRef: FirTypeRef? + abstract override val deprecation: DeprecationsPerUseSite? abstract override val status: FirDeclarationStatus abstract override val containerSource: DeserializedContainerSource? abstract override val dispatchReceiverType: ConeKotlinType? @@ -56,6 +57,8 @@ abstract class FirSimpleFunction : FirFunction(), FirContractDescriptionOwner, F abstract override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) + abstract override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) + abstract override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) abstract override fun replaceValueParameters(newValueParameters: List) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirTypeAlias.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirTypeAlias.kt index 2db57447fee..7f24fbe639c 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirTypeAlias.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirTypeAlias.kt @@ -25,6 +25,7 @@ abstract class FirTypeAlias : FirClassLikeDeclaration(), FirMemberDeclaration, F abstract override val resolvePhase: FirResolvePhase abstract override val origin: FirDeclarationOrigin abstract override val attributes: FirDeclarationAttributes + abstract override val deprecation: DeprecationsPerUseSite? abstract override val status: FirDeclarationStatus abstract override val typeParameters: List abstract val name: Name @@ -40,6 +41,8 @@ abstract class FirTypeAlias : FirClassLikeDeclaration(), FirMemberDeclaration, F abstract override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) + abstract override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) + abstract fun replaceExpandedTypeRef(newExpandedTypeRef: FirTypeRef) abstract override fun transformStatus(transformer: FirTransformer, data: D): FirTypeAlias diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirValueParameter.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirValueParameter.kt index 7a448a284ab..8542b6a9fb8 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirValueParameter.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirValueParameter.kt @@ -31,6 +31,7 @@ abstract class FirValueParameter : FirVariable(), FirControlFlowGraphOwner { abstract override val attributes: FirDeclarationAttributes abstract override val returnTypeRef: FirTypeRef abstract override val receiverTypeRef: FirTypeRef? + abstract override val deprecation: DeprecationsPerUseSite? abstract override val typeParameters: List abstract override val status: FirDeclarationStatus abstract override val containerSource: DeserializedContainerSource? @@ -62,6 +63,8 @@ abstract class FirValueParameter : FirVariable(), FirControlFlowGraphOwner { abstract override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) + abstract override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) + abstract override fun replaceInitializer(newInitializer: FirExpression?) abstract override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirVariable.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirVariable.kt index 461e79932a0..5c20253e290 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirVariable.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirVariable.kt @@ -31,6 +31,7 @@ sealed class FirVariable : FirCallableMemberDeclaration(), FirStatement { abstract override val attributes: FirDeclarationAttributes abstract override val returnTypeRef: FirTypeRef abstract override val receiverTypeRef: FirTypeRef? + abstract override val deprecation: DeprecationsPerUseSite? abstract override val typeParameters: List abstract override val status: FirDeclarationStatus abstract override val containerSource: DeserializedContainerSource? @@ -57,6 +58,8 @@ sealed class FirVariable : FirCallableMemberDeclaration(), FirStatement { abstract override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) + abstract override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) + abstract fun replaceInitializer(newInitializer: FirExpression?) abstract override fun transformReturnTypeRef(transformer: FirTransformer, data: D): FirVariable diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirAbstractConstructorBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirAbstractConstructorBuilder.kt index 0e66a8f81ff..63ace5936a6 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirAbstractConstructorBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirAbstractConstructorBuilder.kt @@ -8,6 +8,7 @@ package org.jetbrains.kotlin.fir.declarations.builder import org.jetbrains.kotlin.fir.FirModuleData import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.builder.FirBuilderDsl +import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite import org.jetbrains.kotlin.fir.declarations.FirConstructor import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin @@ -40,6 +41,7 @@ interface FirAbstractConstructorBuilder : FirFunctionBuilder { abstract override var attributes: FirDeclarationAttributes abstract override val annotations: MutableList abstract override var returnTypeRef: FirTypeRef + abstract override var deprecation: DeprecationsPerUseSite? abstract override var status: FirDeclarationStatus abstract override var containerSource: DeserializedContainerSource? abstract override var dispatchReceiverType: ConeKotlinType? diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirAnonymousFunctionBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirAnonymousFunctionBuilder.kt index 329525d30af..4af2c897d8f 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirAnonymousFunctionBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirAnonymousFunctionBuilder.kt @@ -12,6 +12,7 @@ import org.jetbrains.kotlin.fir.FirModuleData import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder import org.jetbrains.kotlin.fir.builder.FirBuilderDsl +import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite import org.jetbrains.kotlin.fir.declarations.FirAnonymousFunction import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin @@ -47,6 +48,7 @@ class FirAnonymousFunctionBuilder : FirFunctionBuilder, FirAnnotationContainerBu override val annotations: MutableList = mutableListOf() override lateinit var returnTypeRef: FirTypeRef var receiverTypeRef: FirTypeRef? = null + override var deprecation: DeprecationsPerUseSite? = null override var containerSource: DeserializedContainerSource? = null override var dispatchReceiverType: ConeKotlinType? = null var controlFlowGraphReference: FirControlFlowGraphReference? = null @@ -69,6 +71,7 @@ class FirAnonymousFunctionBuilder : FirFunctionBuilder, FirAnnotationContainerBu annotations, returnTypeRef, receiverTypeRef, + deprecation, containerSource, dispatchReceiverType, controlFlowGraphReference, diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirAnonymousObjectBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirAnonymousObjectBuilder.kt index 86ed6346613..e5e142bde79 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirAnonymousObjectBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirAnonymousObjectBuilder.kt @@ -11,6 +11,7 @@ import org.jetbrains.kotlin.fir.FirModuleData import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder import org.jetbrains.kotlin.fir.builder.FirBuilderDsl +import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite import org.jetbrains.kotlin.fir.declarations.FirAnonymousObject import org.jetbrains.kotlin.fir.declarations.FirDeclaration import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes @@ -39,6 +40,7 @@ class FirAnonymousObjectBuilder : FirDeclarationBuilder, FirClassBuilder, FirAnn override var resolvePhase: FirResolvePhase = FirResolvePhase.RAW_FIR override lateinit var origin: FirDeclarationOrigin override var attributes: FirDeclarationAttributes = FirDeclarationAttributes() + override var deprecation: DeprecationsPerUseSite? = null override val typeParameters: MutableList = mutableListOf() override lateinit var classKind: ClassKind override val superTypeRefs: MutableList = mutableListOf() @@ -54,6 +56,7 @@ class FirAnonymousObjectBuilder : FirDeclarationBuilder, FirClassBuilder, FirAnn resolvePhase, origin, attributes, + deprecation, typeParameters, classKind, superTypeRefs, diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirClassBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirClassBuilder.kt index f621fd10b1e..cd4a27a99ee 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirClassBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirClassBuilder.kt @@ -10,6 +10,7 @@ import org.jetbrains.kotlin.fir.FirModuleData import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder import org.jetbrains.kotlin.fir.builder.FirBuilderDsl +import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite import org.jetbrains.kotlin.fir.declarations.FirClass import org.jetbrains.kotlin.fir.declarations.FirDeclaration import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes @@ -35,6 +36,7 @@ interface FirClassBuilder : FirDeclarationBuilder, FirAnnotationContainerBuilder abstract override var origin: FirDeclarationOrigin abstract override var attributes: FirDeclarationAttributes abstract override val annotations: MutableList + abstract var deprecation: DeprecationsPerUseSite? abstract val typeParameters: MutableList abstract var classKind: ClassKind abstract val superTypeRefs: MutableList diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirConstructorBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirConstructorBuilder.kt index 02e32bf91ae..836dbe452c4 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirConstructorBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirConstructorBuilder.kt @@ -10,6 +10,7 @@ import org.jetbrains.kotlin.fir.FirModuleData import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder import org.jetbrains.kotlin.fir.builder.FirBuilderDsl +import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite import org.jetbrains.kotlin.fir.declarations.FirConstructor import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin @@ -43,6 +44,7 @@ open class FirConstructorBuilder : FirAbstractConstructorBuilder, FirAnnotationC override var attributes: FirDeclarationAttributes = FirDeclarationAttributes() override lateinit var returnTypeRef: FirTypeRef override var receiverTypeRef: FirTypeRef? = null + override var deprecation: DeprecationsPerUseSite? = null override val typeParameters: MutableList = mutableListOf() override lateinit var status: FirDeclarationStatus override var containerSource: DeserializedContainerSource? = null @@ -62,6 +64,7 @@ open class FirConstructorBuilder : FirAbstractConstructorBuilder, FirAnnotationC attributes, returnTypeRef, receiverTypeRef, + deprecation, typeParameters, status, containerSource, @@ -104,6 +107,7 @@ inline fun buildConstructorCopy(original: FirConstructor, init: FirConstructorBu copyBuilder.attributes = original.attributes.copy() copyBuilder.returnTypeRef = original.returnTypeRef copyBuilder.receiverTypeRef = original.receiverTypeRef + copyBuilder.deprecation = original.deprecation copyBuilder.typeParameters.addAll(original.typeParameters) copyBuilder.status = original.status copyBuilder.containerSource = original.containerSource diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirDefaultSetterValueParameterBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirDefaultSetterValueParameterBuilder.kt index 2705036ea44..0ee40c07f5b 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirDefaultSetterValueParameterBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirDefaultSetterValueParameterBuilder.kt @@ -10,6 +10,7 @@ import org.jetbrains.kotlin.fir.FirModuleData import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder import org.jetbrains.kotlin.fir.builder.FirBuilderDsl +import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus @@ -43,6 +44,7 @@ class FirDefaultSetterValueParameterBuilder : FirAnnotationContainerBuilder { var attributes: FirDeclarationAttributes = FirDeclarationAttributes() lateinit var returnTypeRef: FirTypeRef var receiverTypeRef: FirTypeRef? = null + var deprecation: DeprecationsPerUseSite? = null var containerSource: DeserializedContainerSource? = null var dispatchReceiverType: ConeKotlinType? = null var initializer: FirExpression? = null @@ -67,6 +69,7 @@ class FirDefaultSetterValueParameterBuilder : FirAnnotationContainerBuilder { attributes, returnTypeRef, receiverTypeRef, + deprecation, containerSource, dispatchReceiverType, initializer, diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirEnumEntryBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirEnumEntryBuilder.kt index 7b1cdd7be17..a318b9c8bf1 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirEnumEntryBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirEnumEntryBuilder.kt @@ -10,6 +10,7 @@ import org.jetbrains.kotlin.fir.FirModuleData import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder import org.jetbrains.kotlin.fir.builder.FirBuilderDsl +import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus @@ -40,6 +41,7 @@ class FirEnumEntryBuilder : FirAnnotationContainerBuilder { lateinit var origin: FirDeclarationOrigin var attributes: FirDeclarationAttributes = FirDeclarationAttributes() lateinit var returnTypeRef: FirTypeRef + var deprecation: DeprecationsPerUseSite? = null val typeParameters: MutableList = mutableListOf() lateinit var status: FirDeclarationStatus var containerSource: DeserializedContainerSource? = null @@ -57,6 +59,7 @@ class FirEnumEntryBuilder : FirAnnotationContainerBuilder { origin, attributes, returnTypeRef, + deprecation, typeParameters, status, containerSource, diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirErrorFunctionBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirErrorFunctionBuilder.kt index fa64131a7bf..bb4d7336473 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirErrorFunctionBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirErrorFunctionBuilder.kt @@ -10,6 +10,7 @@ import org.jetbrains.kotlin.fir.FirModuleData import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder import org.jetbrains.kotlin.fir.builder.FirBuilderDsl +import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus @@ -43,6 +44,7 @@ class FirErrorFunctionBuilder : FirAnnotationContainerBuilder { lateinit var origin: FirDeclarationOrigin var attributes: FirDeclarationAttributes = FirDeclarationAttributes() override val annotations: MutableList = mutableListOf() + var deprecation: DeprecationsPerUseSite? = null var containerSource: DeserializedContainerSource? = null var dispatchReceiverType: ConeKotlinType? = null val valueParameters: MutableList = mutableListOf() @@ -57,6 +59,7 @@ class FirErrorFunctionBuilder : FirAnnotationContainerBuilder { origin, attributes, annotations, + deprecation, containerSource, dispatchReceiverType, valueParameters, diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirErrorPropertyBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirErrorPropertyBuilder.kt index 08ac546d3f1..de706b1fa06 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirErrorPropertyBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirErrorPropertyBuilder.kt @@ -10,6 +10,7 @@ import org.jetbrains.kotlin.fir.FirModuleData import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder import org.jetbrains.kotlin.fir.builder.FirBuilderDsl +import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus @@ -42,6 +43,7 @@ class FirErrorPropertyBuilder : FirAnnotationContainerBuilder { var resolvePhase: FirResolvePhase = FirResolvePhase.RAW_FIR lateinit var origin: FirDeclarationOrigin var attributes: FirDeclarationAttributes = FirDeclarationAttributes() + var deprecation: DeprecationsPerUseSite? = null var containerSource: DeserializedContainerSource? = null var dispatchReceiverType: ConeKotlinType? = null lateinit var name: Name @@ -56,6 +58,7 @@ class FirErrorPropertyBuilder : FirAnnotationContainerBuilder { resolvePhase, origin, attributes, + deprecation, containerSource, dispatchReceiverType, name, diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirFieldBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirFieldBuilder.kt index fb891411e95..97e1f081bd3 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirFieldBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirFieldBuilder.kt @@ -11,6 +11,7 @@ import org.jetbrains.kotlin.fir.FirModuleData import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder import org.jetbrains.kotlin.fir.builder.FirBuilderDsl +import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus @@ -42,6 +43,7 @@ open class FirFieldBuilder : FirDeclarationBuilder, FirAnnotationContainerBuilde override lateinit var origin: FirDeclarationOrigin override var attributes: FirDeclarationAttributes = FirDeclarationAttributes() open lateinit var returnTypeRef: FirTypeRef + open var deprecation: DeprecationsPerUseSite? = null open val typeParameters: MutableList = mutableListOf() open lateinit var status: FirDeclarationStatus open var containerSource: DeserializedContainerSource? = null @@ -61,6 +63,7 @@ open class FirFieldBuilder : FirDeclarationBuilder, FirAnnotationContainerBuilde origin, attributes, returnTypeRef, + deprecation, typeParameters, status, containerSource, diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirFunctionBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirFunctionBuilder.kt index 57c793ef0fe..db0266fda97 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirFunctionBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirFunctionBuilder.kt @@ -9,6 +9,7 @@ import org.jetbrains.kotlin.fir.FirModuleData import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder import org.jetbrains.kotlin.fir.builder.FirBuilderDsl +import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus @@ -37,6 +38,7 @@ interface FirFunctionBuilder : FirDeclarationBuilder, FirAnnotationContainerBuil abstract override var attributes: FirDeclarationAttributes abstract override val annotations: MutableList abstract var returnTypeRef: FirTypeRef + abstract var deprecation: DeprecationsPerUseSite? abstract var status: FirDeclarationStatus abstract var containerSource: DeserializedContainerSource? abstract var dispatchReceiverType: ConeKotlinType? diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirPrimaryConstructorBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirPrimaryConstructorBuilder.kt index b62986a4df0..dc00faa1eee 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirPrimaryConstructorBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirPrimaryConstructorBuilder.kt @@ -10,6 +10,7 @@ import org.jetbrains.kotlin.fir.FirModuleData import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder import org.jetbrains.kotlin.fir.builder.FirBuilderDsl +import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite import org.jetbrains.kotlin.fir.declarations.FirConstructor import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin @@ -43,6 +44,7 @@ class FirPrimaryConstructorBuilder : FirAbstractConstructorBuilder, FirAnnotatio override var attributes: FirDeclarationAttributes = FirDeclarationAttributes() override lateinit var returnTypeRef: FirTypeRef override var receiverTypeRef: FirTypeRef? = null + override var deprecation: DeprecationsPerUseSite? = null override val typeParameters: MutableList = mutableListOf() override lateinit var status: FirDeclarationStatus override var containerSource: DeserializedContainerSource? = null @@ -62,6 +64,7 @@ class FirPrimaryConstructorBuilder : FirAbstractConstructorBuilder, FirAnnotatio attributes, returnTypeRef, receiverTypeRef, + deprecation, typeParameters, status, containerSource, diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirPropertyAccessorBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirPropertyAccessorBuilder.kt index ab845ce71a3..1e9588260dc 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirPropertyAccessorBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirPropertyAccessorBuilder.kt @@ -14,6 +14,7 @@ import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder import org.jetbrains.kotlin.fir.builder.FirBuilderDsl import org.jetbrains.kotlin.fir.contracts.FirContractDescription import org.jetbrains.kotlin.fir.contracts.impl.FirEmptyContractDescription +import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus @@ -45,6 +46,7 @@ class FirPropertyAccessorBuilder : FirFunctionBuilder, FirAnnotationContainerBui override lateinit var origin: FirDeclarationOrigin override var attributes: FirDeclarationAttributes = FirDeclarationAttributes() override lateinit var returnTypeRef: FirTypeRef + override var deprecation: DeprecationsPerUseSite? = null override lateinit var status: FirDeclarationStatus override var containerSource: DeserializedContainerSource? = null override var dispatchReceiverType: ConeKotlinType? = null @@ -65,6 +67,7 @@ class FirPropertyAccessorBuilder : FirFunctionBuilder, FirAnnotationContainerBui origin, attributes, returnTypeRef, + deprecation, status, containerSource, dispatchReceiverType, @@ -100,6 +103,7 @@ inline fun buildPropertyAccessorCopy(original: FirPropertyAccessor, init: FirPro copyBuilder.origin = original.origin copyBuilder.attributes = original.attributes.copy() copyBuilder.returnTypeRef = original.returnTypeRef + copyBuilder.deprecation = original.deprecation copyBuilder.status = original.status copyBuilder.containerSource = original.containerSource copyBuilder.dispatchReceiverType = original.dispatchReceiverType diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirPropertyBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirPropertyBuilder.kt index 30b5d2e5c33..6e9f68d9b06 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirPropertyBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirPropertyBuilder.kt @@ -10,6 +10,7 @@ import org.jetbrains.kotlin.fir.FirModuleData import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder import org.jetbrains.kotlin.fir.builder.FirBuilderDsl +import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus @@ -46,6 +47,7 @@ class FirPropertyBuilder : FirDeclarationBuilder, FirTypeParametersOwnerBuilder, override var attributes: FirDeclarationAttributes = FirDeclarationAttributes() lateinit var returnTypeRef: FirTypeRef var receiverTypeRef: FirTypeRef? = null + var deprecation: DeprecationsPerUseSite? = null lateinit var status: FirDeclarationStatus var containerSource: DeserializedContainerSource? = null var dispatchReceiverType: ConeKotlinType? = null @@ -71,6 +73,7 @@ class FirPropertyBuilder : FirDeclarationBuilder, FirTypeParametersOwnerBuilder, attributes, returnTypeRef, receiverTypeRef, + deprecation, status, containerSource, dispatchReceiverType, @@ -112,6 +115,7 @@ inline fun buildPropertyCopy(original: FirProperty, init: FirPropertyBuilder.() copyBuilder.attributes = original.attributes.copy() copyBuilder.returnTypeRef = original.returnTypeRef copyBuilder.receiverTypeRef = original.receiverTypeRef + copyBuilder.deprecation = original.deprecation copyBuilder.status = original.status copyBuilder.containerSource = original.containerSource copyBuilder.dispatchReceiverType = original.dispatchReceiverType diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirRegularClassBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirRegularClassBuilder.kt index f633e54cacc..4250e205299 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirRegularClassBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirRegularClassBuilder.kt @@ -11,6 +11,7 @@ import org.jetbrains.kotlin.fir.FirModuleData import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder import org.jetbrains.kotlin.fir.builder.FirBuilderDsl +import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite import org.jetbrains.kotlin.fir.declarations.FirDeclaration import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin @@ -41,6 +42,7 @@ open class FirRegularClassBuilder : FirClassBuilder, FirTypeParameterRefsOwnerBu override var resolvePhase: FirResolvePhase = FirResolvePhase.RAW_FIR override lateinit var origin: FirDeclarationOrigin override var attributes: FirDeclarationAttributes = FirDeclarationAttributes() + override var deprecation: DeprecationsPerUseSite? = null override val typeParameters: MutableList = mutableListOf() override lateinit var classKind: ClassKind override val declarations: MutableList = mutableListOf() @@ -59,6 +61,7 @@ open class FirRegularClassBuilder : FirClassBuilder, FirTypeParameterRefsOwnerBu resolvePhase, origin, attributes, + deprecation, typeParameters, classKind, declarations, @@ -93,6 +96,7 @@ inline fun buildRegularClassCopy(original: FirRegularClass, init: FirRegularClas copyBuilder.resolvePhase = original.resolvePhase copyBuilder.origin = original.origin copyBuilder.attributes = original.attributes.copy() + copyBuilder.deprecation = original.deprecation copyBuilder.typeParameters.addAll(original.typeParameters) copyBuilder.classKind = original.classKind copyBuilder.declarations.addAll(original.declarations) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirSimpleFunctionBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirSimpleFunctionBuilder.kt index 5a9b67b60df..d11adb55096 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirSimpleFunctionBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirSimpleFunctionBuilder.kt @@ -12,6 +12,7 @@ import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder import org.jetbrains.kotlin.fir.builder.FirBuilderDsl import org.jetbrains.kotlin.fir.contracts.FirContractDescription import org.jetbrains.kotlin.fir.contracts.impl.FirEmptyContractDescription +import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus @@ -46,6 +47,7 @@ open class FirSimpleFunctionBuilder : FirFunctionBuilder, FirTypeParametersOwner override var attributes: FirDeclarationAttributes = FirDeclarationAttributes() override lateinit var returnTypeRef: FirTypeRef open var receiverTypeRef: FirTypeRef? = null + override var deprecation: DeprecationsPerUseSite? = null override lateinit var status: FirDeclarationStatus override var containerSource: DeserializedContainerSource? = null override var dispatchReceiverType: ConeKotlinType? = null @@ -66,6 +68,7 @@ open class FirSimpleFunctionBuilder : FirFunctionBuilder, FirTypeParametersOwner attributes, returnTypeRef, receiverTypeRef, + deprecation, status, containerSource, dispatchReceiverType, @@ -102,6 +105,7 @@ inline fun buildSimpleFunctionCopy(original: FirSimpleFunction, init: FirSimpleF copyBuilder.attributes = original.attributes.copy() copyBuilder.returnTypeRef = original.returnTypeRef copyBuilder.receiverTypeRef = original.receiverTypeRef + copyBuilder.deprecation = original.deprecation copyBuilder.status = original.status copyBuilder.containerSource = original.containerSource copyBuilder.dispatchReceiverType = original.dispatchReceiverType diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirTypeAliasBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirTypeAliasBuilder.kt index 41002e22efc..d92a16df18b 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirTypeAliasBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirTypeAliasBuilder.kt @@ -10,6 +10,7 @@ import org.jetbrains.kotlin.fir.FirModuleData import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder import org.jetbrains.kotlin.fir.builder.FirBuilderDsl +import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus @@ -37,6 +38,7 @@ class FirTypeAliasBuilder : FirDeclarationBuilder, FirTypeParametersOwnerBuilder override var resolvePhase: FirResolvePhase = FirResolvePhase.RAW_FIR override lateinit var origin: FirDeclarationOrigin override var attributes: FirDeclarationAttributes = FirDeclarationAttributes() + var deprecation: DeprecationsPerUseSite? = null lateinit var status: FirDeclarationStatus override val typeParameters: MutableList = mutableListOf() lateinit var name: Name @@ -51,6 +53,7 @@ class FirTypeAliasBuilder : FirDeclarationBuilder, FirTypeParametersOwnerBuilder resolvePhase, origin, attributes, + deprecation, status, typeParameters, name, @@ -81,6 +84,7 @@ inline fun buildTypeAliasCopy(original: FirTypeAlias, init: FirTypeAliasBuilder. copyBuilder.resolvePhase = original.resolvePhase copyBuilder.origin = original.origin copyBuilder.attributes = original.attributes.copy() + copyBuilder.deprecation = original.deprecation copyBuilder.status = original.status copyBuilder.typeParameters.addAll(original.typeParameters) copyBuilder.name = original.name diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirValueParameterBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirValueParameterBuilder.kt index fe9aab490bc..ae4cfc22202 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirValueParameterBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirValueParameterBuilder.kt @@ -10,6 +10,7 @@ import org.jetbrains.kotlin.fir.FirModuleData import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder import org.jetbrains.kotlin.fir.builder.FirBuilderDsl +import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus @@ -42,6 +43,7 @@ open class FirValueParameterBuilder : FirAnnotationContainerBuilder { open lateinit var origin: FirDeclarationOrigin open var attributes: FirDeclarationAttributes = FirDeclarationAttributes() open lateinit var returnTypeRef: FirTypeRef + open var deprecation: DeprecationsPerUseSite? = null open var containerSource: DeserializedContainerSource? = null open var dispatchReceiverType: ConeKotlinType? = null open lateinit var name: Name @@ -60,6 +62,7 @@ open class FirValueParameterBuilder : FirAnnotationContainerBuilder { origin, attributes, returnTypeRef, + deprecation, containerSource, dispatchReceiverType, name, @@ -94,6 +97,7 @@ inline fun buildValueParameterCopy(original: FirValueParameter, init: FirValuePa copyBuilder.origin = original.origin copyBuilder.attributes = original.attributes.copy() copyBuilder.returnTypeRef = original.returnTypeRef + copyBuilder.deprecation = original.deprecation copyBuilder.containerSource = original.containerSource copyBuilder.dispatchReceiverType = original.dispatchReceiverType copyBuilder.name = original.name diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirAnonymousFunctionImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirAnonymousFunctionImpl.kt index 80a76452770..4010f5af006 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirAnonymousFunctionImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirAnonymousFunctionImpl.kt @@ -9,6 +9,7 @@ import org.jetbrains.kotlin.contracts.description.EventOccurrencesRange import org.jetbrains.kotlin.fir.FirLabel import org.jetbrains.kotlin.fir.FirModuleData import org.jetbrains.kotlin.fir.FirSourceElement +import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite import org.jetbrains.kotlin.fir.declarations.FirAnonymousFunction import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin @@ -40,6 +41,7 @@ internal class FirAnonymousFunctionImpl( override val annotations: MutableList, override var returnTypeRef: FirTypeRef, override var receiverTypeRef: FirTypeRef?, + override var deprecation: DeprecationsPerUseSite?, override val containerSource: DeserializedContainerSource?, override val dispatchReceiverType: ConeKotlinType?, override var controlFlowGraphReference: FirControlFlowGraphReference?, @@ -134,6 +136,10 @@ internal class FirAnonymousFunctionImpl( receiverTypeRef = newReceiverTypeRef } + override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) { + deprecation = newDeprecation + } + override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) { controlFlowGraphReference = newControlFlowGraphReference } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirAnonymousObjectImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirAnonymousObjectImpl.kt index 77f6d58676c..b3ddee8fcd2 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirAnonymousObjectImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirAnonymousObjectImpl.kt @@ -8,6 +8,7 @@ package org.jetbrains.kotlin.fir.declarations.impl import org.jetbrains.kotlin.descriptors.ClassKind import org.jetbrains.kotlin.fir.FirModuleData import org.jetbrains.kotlin.fir.FirSourceElement +import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite import org.jetbrains.kotlin.fir.declarations.FirAnonymousObject import org.jetbrains.kotlin.fir.declarations.FirDeclaration import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes @@ -32,6 +33,7 @@ internal class FirAnonymousObjectImpl( override var resolvePhase: FirResolvePhase, override val origin: FirDeclarationOrigin, override val attributes: FirDeclarationAttributes, + override var deprecation: DeprecationsPerUseSite?, override val typeParameters: MutableList, override val classKind: ClassKind, override val superTypeRefs: MutableList, @@ -87,6 +89,10 @@ internal class FirAnonymousObjectImpl( resolvePhase = newResolvePhase } + override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) { + deprecation = newDeprecation + } + override fun replaceSuperTypeRefs(newSuperTypeRefs: List) { superTypeRefs.clear() superTypeRefs.addAll(newSuperTypeRefs) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirConstructorImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirConstructorImpl.kt index 58a60dc3115..999ae83a734 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirConstructorImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirConstructorImpl.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.declarations.impl import org.jetbrains.kotlin.fir.FirModuleData import org.jetbrains.kotlin.fir.FirSourceElement +import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite import org.jetbrains.kotlin.fir.declarations.FirConstructor import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin @@ -37,6 +38,7 @@ internal class FirConstructorImpl( override val attributes: FirDeclarationAttributes, override var returnTypeRef: FirTypeRef, override var receiverTypeRef: FirTypeRef?, + override var deprecation: DeprecationsPerUseSite?, override val typeParameters: MutableList, override var status: FirDeclarationStatus, override val containerSource: DeserializedContainerSource?, @@ -131,6 +133,10 @@ internal class FirConstructorImpl( receiverTypeRef = newReceiverTypeRef } + override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) { + deprecation = newDeprecation + } + override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) { controlFlowGraphReference = newControlFlowGraphReference } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirDefaultSetterValueParameter.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirDefaultSetterValueParameter.kt index ce7fc470393..e5f4070418c 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirDefaultSetterValueParameter.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirDefaultSetterValueParameter.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.declarations.impl import org.jetbrains.kotlin.fir.FirModuleData import org.jetbrains.kotlin.fir.FirSourceElement +import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus @@ -38,6 +39,7 @@ internal class FirDefaultSetterValueParameter( override val attributes: FirDeclarationAttributes, override var returnTypeRef: FirTypeRef, override var receiverTypeRef: FirTypeRef?, + override var deprecation: DeprecationsPerUseSite?, override val containerSource: DeserializedContainerSource?, override val dispatchReceiverType: ConeKotlinType?, override var initializer: FirExpression?, @@ -150,6 +152,10 @@ internal class FirDefaultSetterValueParameter( receiverTypeRef = newReceiverTypeRef } + override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) { + deprecation = newDeprecation + } + override fun replaceInitializer(newInitializer: FirExpression?) { initializer = newInitializer } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirEnumEntryImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirEnumEntryImpl.kt index ac36db999b2..51a359f5f11 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirEnumEntryImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirEnumEntryImpl.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.declarations.impl import org.jetbrains.kotlin.fir.FirModuleData import org.jetbrains.kotlin.fir.FirSourceElement +import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus @@ -35,6 +36,7 @@ internal class FirEnumEntryImpl( override val origin: FirDeclarationOrigin, override val attributes: FirDeclarationAttributes, override var returnTypeRef: FirTypeRef, + override var deprecation: DeprecationsPerUseSite?, override val typeParameters: MutableList, override var status: FirDeclarationStatus, override val containerSource: DeserializedContainerSource?, @@ -128,6 +130,10 @@ internal class FirEnumEntryImpl( override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) {} + override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) { + deprecation = newDeprecation + } + override fun replaceInitializer(newInitializer: FirExpression?) { initializer = newInitializer } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirErrorFunctionImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirErrorFunctionImpl.kt index 751c9267a8b..29ddc24e0f2 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirErrorFunctionImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirErrorFunctionImpl.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.declarations.impl import org.jetbrains.kotlin.fir.FirModuleData import org.jetbrains.kotlin.fir.FirSourceElement +import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus @@ -38,6 +39,7 @@ internal class FirErrorFunctionImpl( override val origin: FirDeclarationOrigin, override val attributes: FirDeclarationAttributes, override val annotations: MutableList, + override var deprecation: DeprecationsPerUseSite?, override val containerSource: DeserializedContainerSource?, override val dispatchReceiverType: ConeKotlinType?, override val valueParameters: MutableList, @@ -114,6 +116,10 @@ internal class FirErrorFunctionImpl( override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) {} + override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) { + deprecation = newDeprecation + } + override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) { controlFlowGraphReference = newControlFlowGraphReference } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirErrorPropertyImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirErrorPropertyImpl.kt index 41c45e6d0de..fa565b528a9 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirErrorPropertyImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirErrorPropertyImpl.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.declarations.impl import org.jetbrains.kotlin.fir.FirModuleData import org.jetbrains.kotlin.fir.FirSourceElement +import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus @@ -37,6 +38,7 @@ internal class FirErrorPropertyImpl( override var resolvePhase: FirResolvePhase, override val origin: FirDeclarationOrigin, override val attributes: FirDeclarationAttributes, + override var deprecation: DeprecationsPerUseSite?, override val containerSource: DeserializedContainerSource?, override val dispatchReceiverType: ConeKotlinType?, override val name: Name, @@ -126,5 +128,9 @@ internal class FirErrorPropertyImpl( override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) {} + override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) { + deprecation = newDeprecation + } + override fun replaceInitializer(newInitializer: FirExpression?) {} } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirFieldImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirFieldImpl.kt index afa3d980435..d69fa7ed5d8 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirFieldImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirFieldImpl.kt @@ -8,6 +8,7 @@ package org.jetbrains.kotlin.fir.declarations.impl import org.jetbrains.kotlin.fir.FirImplementationDetail import org.jetbrains.kotlin.fir.FirModuleData import org.jetbrains.kotlin.fir.FirSourceElement +import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus @@ -36,6 +37,7 @@ class FirFieldImpl @FirImplementationDetail constructor( override val origin: FirDeclarationOrigin, override val attributes: FirDeclarationAttributes, override var returnTypeRef: FirTypeRef, + override var deprecation: DeprecationsPerUseSite?, override val typeParameters: MutableList, override var status: FirDeclarationStatus, override val containerSource: DeserializedContainerSource?, @@ -129,6 +131,10 @@ class FirFieldImpl @FirImplementationDetail constructor( override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) {} + override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) { + deprecation = newDeprecation + } + override fun replaceInitializer(newInitializer: FirExpression?) { initializer = newInitializer } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirPrimaryConstructor.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirPrimaryConstructor.kt index 29054b79cdf..5ba9668b460 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirPrimaryConstructor.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirPrimaryConstructor.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.declarations.impl import org.jetbrains.kotlin.fir.FirModuleData import org.jetbrains.kotlin.fir.FirSourceElement +import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite import org.jetbrains.kotlin.fir.declarations.FirConstructor import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin @@ -37,6 +38,7 @@ internal class FirPrimaryConstructor( override val attributes: FirDeclarationAttributes, override var returnTypeRef: FirTypeRef, override var receiverTypeRef: FirTypeRef?, + override var deprecation: DeprecationsPerUseSite?, override val typeParameters: MutableList, override var status: FirDeclarationStatus, override val containerSource: DeserializedContainerSource?, @@ -131,6 +133,10 @@ internal class FirPrimaryConstructor( receiverTypeRef = newReceiverTypeRef } + override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) { + deprecation = newDeprecation + } + override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) { controlFlowGraphReference = newControlFlowGraphReference } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirPropertyAccessorImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirPropertyAccessorImpl.kt index 15bc1a50d64..8650bcc55de 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirPropertyAccessorImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirPropertyAccessorImpl.kt @@ -10,6 +10,7 @@ import org.jetbrains.kotlin.fir.FirImplementationDetail import org.jetbrains.kotlin.fir.FirModuleData import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.contracts.FirContractDescription +import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus @@ -38,6 +39,7 @@ open class FirPropertyAccessorImpl @FirImplementationDetail constructor( override val origin: FirDeclarationOrigin, override val attributes: FirDeclarationAttributes, override var returnTypeRef: FirTypeRef, + override var deprecation: DeprecationsPerUseSite?, override var status: FirDeclarationStatus, override val containerSource: DeserializedContainerSource?, override val dispatchReceiverType: ConeKotlinType?, @@ -129,6 +131,10 @@ open class FirPropertyAccessorImpl @FirImplementationDetail constructor( override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) {} + override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) { + deprecation = newDeprecation + } + override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) { controlFlowGraphReference = newControlFlowGraphReference } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirPropertyImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirPropertyImpl.kt index 439f25d85d1..9ac82d4d549 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirPropertyImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirPropertyImpl.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.declarations.impl import org.jetbrains.kotlin.fir.FirModuleData import org.jetbrains.kotlin.fir.FirSourceElement +import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus @@ -39,6 +40,7 @@ internal class FirPropertyImpl( override val attributes: FirDeclarationAttributes, override var returnTypeRef: FirTypeRef, override var receiverTypeRef: FirTypeRef?, + override var deprecation: DeprecationsPerUseSite?, override var status: FirDeclarationStatus, override val containerSource: DeserializedContainerSource?, override val dispatchReceiverType: ConeKotlinType?, @@ -154,6 +156,10 @@ internal class FirPropertyImpl( receiverTypeRef = newReceiverTypeRef } + override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) { + deprecation = newDeprecation + } + override fun replaceInitializer(newInitializer: FirExpression?) { initializer = newInitializer } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirRegularClassImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirRegularClassImpl.kt index ae44658cf4f..8c120f23e33 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirRegularClassImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirRegularClassImpl.kt @@ -8,6 +8,7 @@ package org.jetbrains.kotlin.fir.declarations.impl import org.jetbrains.kotlin.descriptors.ClassKind import org.jetbrains.kotlin.fir.FirModuleData import org.jetbrains.kotlin.fir.FirSourceElement +import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite import org.jetbrains.kotlin.fir.declarations.FirDeclaration import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin @@ -34,6 +35,7 @@ internal class FirRegularClassImpl( override var resolvePhase: FirResolvePhase, override val origin: FirDeclarationOrigin, override val attributes: FirDeclarationAttributes, + override var deprecation: DeprecationsPerUseSite?, override val typeParameters: MutableList, override val classKind: ClassKind, override val declarations: MutableList, @@ -106,6 +108,10 @@ internal class FirRegularClassImpl( resolvePhase = newResolvePhase } + override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) { + deprecation = newDeprecation + } + override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) { controlFlowGraphReference = newControlFlowGraphReference } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirSimpleFunctionImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirSimpleFunctionImpl.kt index dd5ee6bd632..28d93cea5cb 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirSimpleFunctionImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirSimpleFunctionImpl.kt @@ -8,6 +8,7 @@ package org.jetbrains.kotlin.fir.declarations.impl import org.jetbrains.kotlin.fir.FirModuleData import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.contracts.FirContractDescription +import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus @@ -38,6 +39,7 @@ internal class FirSimpleFunctionImpl( override val attributes: FirDeclarationAttributes, override var returnTypeRef: FirTypeRef, override var receiverTypeRef: FirTypeRef?, + override var deprecation: DeprecationsPerUseSite?, override var status: FirDeclarationStatus, override val containerSource: DeserializedContainerSource?, override val dispatchReceiverType: ConeKotlinType?, @@ -132,6 +134,10 @@ internal class FirSimpleFunctionImpl( receiverTypeRef = newReceiverTypeRef } + override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) { + deprecation = newDeprecation + } + override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) { controlFlowGraphReference = newControlFlowGraphReference } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirTypeAliasImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirTypeAliasImpl.kt index 3d50413f9c3..4fd37cfc841 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirTypeAliasImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirTypeAliasImpl.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.declarations.impl import org.jetbrains.kotlin.fir.FirModuleData import org.jetbrains.kotlin.fir.FirSourceElement +import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus @@ -30,6 +31,7 @@ internal class FirTypeAliasImpl( override var resolvePhase: FirResolvePhase, override val origin: FirDeclarationOrigin, override val attributes: FirDeclarationAttributes, + override var deprecation: DeprecationsPerUseSite?, override var status: FirDeclarationStatus, override val typeParameters: MutableList, override val name: Name, @@ -80,6 +82,10 @@ internal class FirTypeAliasImpl( resolvePhase = newResolvePhase } + override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) { + deprecation = newDeprecation + } + override fun replaceExpandedTypeRef(newExpandedTypeRef: FirTypeRef) { expandedTypeRef = newExpandedTypeRef } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirValueParameterImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirValueParameterImpl.kt index 02fa28cd82d..b4e7267035a 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirValueParameterImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirValueParameterImpl.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.declarations.impl import org.jetbrains.kotlin.fir.FirModuleData import org.jetbrains.kotlin.fir.FirSourceElement +import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite import org.jetbrains.kotlin.fir.declarations.FirDeclarationAttributes import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus @@ -37,6 +38,7 @@ internal class FirValueParameterImpl( override val origin: FirDeclarationOrigin, override val attributes: FirDeclarationAttributes, override var returnTypeRef: FirTypeRef, + override var deprecation: DeprecationsPerUseSite?, override val containerSource: DeserializedContainerSource?, override val dispatchReceiverType: ConeKotlinType?, override val name: Name, @@ -133,6 +135,10 @@ internal class FirValueParameterImpl( override fun replaceReceiverTypeRef(newReceiverTypeRef: FirTypeRef?) {} + override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) { + deprecation = newDeprecation + } + override fun replaceInitializer(newInitializer: FirExpression?) {} override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) { diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/deprecations.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/deprecations.kt new file mode 100644 index 00000000000..0fe02817788 --- /dev/null +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/deprecations.kt @@ -0,0 +1,103 @@ +package org.jetbrains.kotlin.fir.declarations + +import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget +import org.jetbrains.kotlin.utils.keysToMap +import org.jetbrains.kotlin.utils.keysToMapExceptNulls + +/* + * Copyright 2010-2021 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. + */ + + +class DeprecationsPerUseSite( + val all: Deprecation?, + val bySpecificSite: Map? +) { + fun forUseSite(vararg sites: AnnotationUseSiteTarget): Deprecation? { + if (bySpecificSite != null) { + for (site in sites) { + bySpecificSite[site]?.let { return it } + } + } + return all + } + + fun isEmpty(): Boolean = all == null && bySpecificSite == null + fun isNotEmpty(): Boolean = !isEmpty() + + fun combineMin(other: DeprecationsPerUseSite): DeprecationsPerUseSite { + if (isEmpty() || isEmpty()) return EmptyDeprecationsPerUseSite + + return DeprecationsPerUseSite( + if (all == null || other.all == null) null else minOf(all, other.all), + if (bySpecificSite == null || other.bySpecificSite == null) { + null + } else { + bySpecificSite.keys.intersect(other.bySpecificSite.keys).keysToMap { target -> + minOf(bySpecificSite[target]!!, other.bySpecificSite[target]!!) + } + } + + ) + } + + fun combinePreferLeft(other: DeprecationsPerUseSite): DeprecationsPerUseSite { + return DeprecationsPerUseSite( + all ?: other.all, + if (bySpecificSite == null || other.bySpecificSite == null) { + bySpecificSite ?: other.bySpecificSite + } else { + bySpecificSite.keys.union(other.bySpecificSite.keys).keysToMapExceptNulls { target -> + bySpecificSite[target] ?: other.bySpecificSite[target] + } + } + + ) + } + + fun inheritableOnly(): DeprecationsPerUseSite = + DeprecationsPerUseSite( + all?.takeIf { it.inheritable }, + bySpecificSite?.filterValues { it.inheritable } + ) + + override fun toString(): String = + if (isEmpty()) "NoDeprecation" + else "org.jetbrains.kotlin.fir.declarations.DeprecationInfoForUseSites(all=$all, bySpecificSite=$bySpecificSite)" + + companion object { + fun fromMap(perUseSite: Map): DeprecationsPerUseSite { + if (perUseSite.isEmpty()) return EmptyDeprecationsPerUseSite + + @Suppress("UNCHECKED_CAST") + val specificCallSite = perUseSite.filterKeys { it != null } as Map + return DeprecationsPerUseSite( + perUseSite[null], + specificCallSite.takeIf { it.isNotEmpty() } + ) + } + } + +} + +data class Deprecation( + val level: DeprecationLevelValue, + val inheritable: Boolean, + val message: String? = null +) : Comparable { + override fun compareTo(other: Deprecation): Int { + val lr = level.compareTo(other.level) + //to prefer inheritable deprecation + return if (lr == 0 && !inheritable && other.inheritable) 1 + else lr + } +} + +// values from kotlin.DeprecationLevel +enum class DeprecationLevelValue { + WARNING, ERROR, HIDDEN +} + +val EmptyDeprecationsPerUseSite = DeprecationsPerUseSite(null, null) + diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirDefaultPropertyAccessor.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirDefaultPropertyAccessor.kt index 3f0b0ea58b3..08451519140 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirDefaultPropertyAccessor.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirDefaultPropertyAccessor.kt @@ -39,6 +39,7 @@ abstract class FirDefaultPropertyAccessor( origin, FirDeclarationAttributes(), propertyTypeRef, + deprecation = null, status = if (effectiveVisibility == null) FirDeclarationStatusImpl(visibility, Modality.FINAL) else diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/synthetic/FirSyntheticProperty.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/synthetic/FirSyntheticProperty.kt index 82ced502d3f..4942e9640c9 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/synthetic/FirSyntheticProperty.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/synthetic/FirSyntheticProperty.kt @@ -29,7 +29,8 @@ class FirSyntheticProperty( override val status: FirDeclarationStatus, override var resolvePhase: FirResolvePhase, override val getter: FirSyntheticPropertyAccessor, - override val setter: FirSyntheticPropertyAccessor? = null + override val setter: FirSyntheticPropertyAccessor? = null, + override val deprecation: DeprecationsPerUseSite? = null ) : FirProperty() { init { symbol.bind(this) @@ -145,6 +146,10 @@ class FirSyntheticProperty( throw AssertionError("Mutation of synthetic property isn't supported") } + override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) { + throw AssertionError("Mutation of synthetic property isn't supported") + } + override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) { throw AssertionError("Mutation of synthetic property isn't supported") } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/synthetic/FirSyntheticPropertyAccessor.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/synthetic/FirSyntheticPropertyAccessor.kt index 58f67b8da7d..5d3dcb0b8d8 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/synthetic/FirSyntheticPropertyAccessor.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/synthetic/FirSyntheticPropertyAccessor.kt @@ -48,6 +48,9 @@ class FirSyntheticPropertyAccessor( override val receiverTypeRef: FirTypeRef? get() = null + + override val deprecation: DeprecationsPerUseSite? + get() = delegate.deprecation override val valueParameters: List get() = delegate.valueParameters @@ -135,6 +138,10 @@ class FirSyntheticPropertyAccessor( throw AssertionError("Mutation of synthetic property accessor isn't supported") } + override fun replaceDeprecation(newDeprecation: DeprecationsPerUseSite?) { + throw AssertionError("Mutation of synthetic property accessor isn't supported") + } + override fun replaceValueParameters(newValueParameters: List) { throw AssertionError("Mutation of synthetic property accessor isn't supported") } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/synthetic/FirSyntheticPropertyBuilder.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/synthetic/FirSyntheticPropertyBuilder.kt index 0d05e9a5197..dfa8ae1b77c 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/synthetic/FirSyntheticPropertyBuilder.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/synthetic/FirSyntheticPropertyBuilder.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.fir.declarations.synthetic import org.jetbrains.kotlin.fir.FirModuleData +import org.jetbrains.kotlin.fir.declarations.DeprecationsPerUseSite import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction import org.jetbrains.kotlin.fir.symbols.impl.FirAccessorSymbol @@ -16,16 +17,19 @@ class FirSyntheticPropertyBuilder { lateinit var name: Name lateinit var symbol: FirAccessorSymbol lateinit var delegateGetter: FirSimpleFunction + lateinit var deprecation: DeprecationsPerUseSite var status: FirDeclarationStatus? = null var delegateSetter: FirSimpleFunction? = null + fun build(): FirSyntheticProperty = FirSyntheticProperty( moduleData, name, isVar = delegateSetter != null, symbol = symbol, status = status ?: delegateGetter.status, resolvePhase = delegateGetter.resolvePhase, getter = FirSyntheticPropertyAccessor(delegateGetter, isGetter = true), - setter = delegateSetter?.let { FirSyntheticPropertyAccessor(it, isGetter = false) } + setter = delegateSetter?.let { FirSyntheticPropertyAccessor(it, isGetter = false) }, + deprecation = deprecation ) } diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt index 7533e281bec..3f96b69cc19 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt @@ -85,6 +85,7 @@ object NodeConfigurator : AbstractFieldConfigurator(FirTreeBuild callableDeclaration.configure { +field("receiverTypeRef", typeRef, nullable = true, withReplace = true).withTransform() + +field("deprecation", deprecationsPerUseSiteType, nullable = true).withReplace().apply { isMutable = true } +symbol("FirCallableSymbol", "out FirCallableDeclaration") } @@ -233,6 +234,7 @@ object NodeConfigurator : AbstractFieldConfigurator(FirTreeBuild classLikeDeclaration.configure { +symbol("FirClassLikeSymbol", "out FirClassLikeDeclaration") + +field("deprecation", deprecationsPerUseSiteType, nullable = true).withReplace().apply { isMutable = true} } klass.configure { diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/Types.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/Types.kt index 3aa1384b7d4..b528c7160db 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/Types.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/Types.kt @@ -91,3 +91,5 @@ val callableReferenceMappedArgumentsType = type("fir.resolve.calls", "CallableRe val functionCallOrigin = type("fir.expressions", "FirFunctionCallOrigin") val resolvedDeclarationStatusImplType = type("fir.declarations.impl", "FirResolvedDeclarationStatusImpl") + +val deprecationsPerUseSiteType = type("fir.declarations", "DeprecationsPerUseSite") diff --git a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/PositioningStrategies.kt b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/PositioningStrategies.kt index 63290c9757f..7b4dcb8dad2 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/PositioningStrategies.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/PositioningStrategies.kt @@ -955,6 +955,7 @@ object PositioningStrategies { is KtOperationExpression -> element.operationReference is KtWhenConditionInRange -> element.operationReference is KtAnnotationEntry -> element.calleeExpression ?: element + is KtTypeReference -> (element.typeElement as? KtNullableType)?.innerType ?: element else -> element } while (locateReferencedName && result is KtParenthesizedExpression) { diff --git a/compiler/testData/diagnostics/tests/LocalClassAndShortSubpackageNames.fir.kt b/compiler/testData/diagnostics/tests/LocalClassAndShortSubpackageNames.fir.kt index 7496ee5ad0a..4fd57a471e7 100644 --- a/compiler/testData/diagnostics/tests/LocalClassAndShortSubpackageNames.fir.kt +++ b/compiler/testData/diagnostics/tests/LocalClassAndShortSubpackageNames.fir.kt @@ -9,7 +9,7 @@ package foo fun f() { class Local1 { - fun g() : bar.X? = null + fun g() : bar.X? = null } class Local2 { fun g() : foo.bar.X? = null diff --git a/compiler/testData/diagnostics/tests/PackageQualified.fir.kt b/compiler/testData/diagnostics/tests/PackageQualified.fir.kt index e00b599540d..a0ac4817423 100644 --- a/compiler/testData/diagnostics/tests/PackageQualified.fir.kt +++ b/compiler/testData/diagnostics/tests/PackageQualified.fir.kt @@ -5,8 +5,8 @@ package foobar.a import java.* val a : java.util.List? = null - val a2 : util.List? = null - val a3 : LinkedList? = null + val a2 : util.List? = null + val a3 : LinkedList? = null // FILE: b.kt package foobar @@ -20,7 +20,7 @@ package foobar.a import java.util.* val b : List? = a - val b1 : util.List? = a + val b1 : util.List? = a // FILE: d.kt package foobar diff --git a/compiler/testData/diagnostics/tests/deprecated/annotationUsage.fir.kt b/compiler/testData/diagnostics/tests/deprecated/annotationUsage.fir.kt deleted file mode 100644 index 8b1d35a1758..00000000000 --- a/compiler/testData/diagnostics/tests/deprecated/annotationUsage.fir.kt +++ /dev/null @@ -1,9 +0,0 @@ -@Deprecated("text") -annotation class obsolete() - -@Deprecated("text") -annotation class obsoleteWithParam(val text: String) - -@obsolete class Obsolete - -@obsoleteWithParam("text") class Obsolete2 diff --git a/compiler/testData/diagnostics/tests/deprecated/annotationUsage.kt b/compiler/testData/diagnostics/tests/deprecated/annotationUsage.kt index f016768d1a3..0a4afb2f96d 100644 --- a/compiler/testData/diagnostics/tests/deprecated/annotationUsage.kt +++ b/compiler/testData/diagnostics/tests/deprecated/annotationUsage.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL @Deprecated("text") annotation class obsolete() diff --git a/compiler/testData/diagnostics/tests/deprecated/deprecatedConstructor.fir.kt b/compiler/testData/diagnostics/tests/deprecated/deprecatedConstructor.fir.kt deleted file mode 100644 index 9a8d8ec398b..00000000000 --- a/compiler/testData/diagnostics/tests/deprecated/deprecatedConstructor.fir.kt +++ /dev/null @@ -1,34 +0,0 @@ -// !DIAGNOSTICS: -UNUSED_PARAMETER - -// FILE: A.kt -class A(s: String) { - @Deprecated("") - constructor(i: Int) : this(i.toString()) { - - } -} - -// FILE: B.java -public class B extends A { - @Deprecated - public B(int i) { - - } - - public B(String s) { - - } -} - -// FILE: C.kt -class C @Deprecated("") constructor(s: String) { -} - -// FILE: use.kt -fun use(a: A, b: B, c: C) { - A(3) - A("") - B(3) - B("") - C("s") -} diff --git a/compiler/testData/diagnostics/tests/deprecated/deprecatedConstructor.kt b/compiler/testData/diagnostics/tests/deprecated/deprecatedConstructor.kt index bc50fba3cbe..e6cc3055424 100644 --- a/compiler/testData/diagnostics/tests/deprecated/deprecatedConstructor.kt +++ b/compiler/testData/diagnostics/tests/deprecated/deprecatedConstructor.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // !DIAGNOSTICS: -UNUSED_PARAMETER // FILE: A.kt diff --git a/compiler/testData/diagnostics/tests/deprecated/deprecatedError.fir.kt b/compiler/testData/diagnostics/tests/deprecated/deprecatedError.fir.kt deleted file mode 100644 index c39c8fb5c34..00000000000 --- a/compiler/testData/diagnostics/tests/deprecated/deprecatedError.fir.kt +++ /dev/null @@ -1,11 +0,0 @@ -// !DIAGNOSTICS: -UNUSED_PARAMETER -@Deprecated("alas", level = DeprecationLevel.ERROR) -fun foo() {} - -@Deprecated("alas", level = DeprecationLevel.ERROR) -class C - -fun test(c: C) { - foo() - C() -} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/deprecated/deprecatedError.kt b/compiler/testData/diagnostics/tests/deprecated/deprecatedError.kt index 8668c7936cd..a1dc23f49b9 100644 --- a/compiler/testData/diagnostics/tests/deprecated/deprecatedError.kt +++ b/compiler/testData/diagnostics/tests/deprecated/deprecatedError.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // !DIAGNOSTICS: -UNUSED_PARAMETER @Deprecated("alas", level = DeprecationLevel.ERROR) fun foo() {} diff --git a/compiler/testData/diagnostics/tests/deprecated/deprecatedErrorBuilder.fir.kt b/compiler/testData/diagnostics/tests/deprecated/deprecatedErrorBuilder.fir.kt deleted file mode 100644 index 05dfbdabb77..00000000000 --- a/compiler/testData/diagnostics/tests/deprecated/deprecatedErrorBuilder.fir.kt +++ /dev/null @@ -1,21 +0,0 @@ -// !DIAGNOSTICS: -UNUSED_PARAMETER -class Table -class Tr - -fun table(body: Table.() -> Unit) {} -fun Table.tr(body: Tr.() -> Unit) {} -@Deprecated("Don't call me", level = DeprecationLevel.ERROR) -fun Tr.tr(body: Tr.() -> Unit) {} - -fun builderTest() { - table { - tr { - tr {} - table { - tr { - tr {} - } - } - } - } -} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/deprecated/deprecatedErrorBuilder.kt b/compiler/testData/diagnostics/tests/deprecated/deprecatedErrorBuilder.kt index dd17c6bc4c8..ca76f961bf1 100644 --- a/compiler/testData/diagnostics/tests/deprecated/deprecatedErrorBuilder.kt +++ b/compiler/testData/diagnostics/tests/deprecated/deprecatedErrorBuilder.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // !DIAGNOSTICS: -UNUSED_PARAMETER class Table class Tr diff --git a/compiler/testData/diagnostics/tests/deprecated/deprecatedHidden.fir.kt b/compiler/testData/diagnostics/tests/deprecated/deprecatedHidden.fir.kt deleted file mode 100644 index f2449e1448c..00000000000 --- a/compiler/testData/diagnostics/tests/deprecated/deprecatedHidden.fir.kt +++ /dev/null @@ -1,11 +0,0 @@ -// !DIAGNOSTICS: -UNUSED_VARIABLE - -@Deprecated("", level = DeprecationLevel.HIDDEN) -open class Foo - -fun test(f: Foo) { - f.toString() - val g: Foo? = Foo() -} - -class Bar : Foo() diff --git a/compiler/testData/diagnostics/tests/deprecated/deprecatedHidden.kt b/compiler/testData/diagnostics/tests/deprecated/deprecatedHidden.kt index 8035eac33c0..5a615ae1360 100644 --- a/compiler/testData/diagnostics/tests/deprecated/deprecatedHidden.kt +++ b/compiler/testData/diagnostics/tests/deprecated/deprecatedHidden.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // !DIAGNOSTICS: -UNUSED_VARIABLE @Deprecated("", level = DeprecationLevel.HIDDEN) diff --git a/compiler/testData/diagnostics/tests/deprecated/deprecatedHiddenOnCallableReferenceArgument.fir.kt b/compiler/testData/diagnostics/tests/deprecated/deprecatedHiddenOnCallableReferenceArgument.fir.kt deleted file mode 100644 index e4a34b1f051..00000000000 --- a/compiler/testData/diagnostics/tests/deprecated/deprecatedHiddenOnCallableReferenceArgument.fir.kt +++ /dev/null @@ -1,23 +0,0 @@ -// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_EXPRESSION - -object Scope { - fun foo(): Int = 0 - - object Nested { - @Deprecated("err", level = DeprecationLevel.HIDDEN) - fun foo(): String = "" - - fun take(f: () -> T): T = f() - - fun test() { - val r1 = take(::foo) - r1 - - val r2 = ::foo - ")!>r2 - - val r3 = foo() - r3 - } - } -} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/deprecated/deprecatedHiddenOnCallableReferenceArgument.kt b/compiler/testData/diagnostics/tests/deprecated/deprecatedHiddenOnCallableReferenceArgument.kt index 728e6ea3330..719da4f0921 100644 --- a/compiler/testData/diagnostics/tests/deprecated/deprecatedHiddenOnCallableReferenceArgument.kt +++ b/compiler/testData/diagnostics/tests/deprecated/deprecatedHiddenOnCallableReferenceArgument.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_EXPRESSION object Scope { diff --git a/compiler/testData/diagnostics/tests/deprecated/deprecatedInheritance.fir.kt b/compiler/testData/diagnostics/tests/deprecated/deprecatedInheritance.fir.kt index a32de3b38b1..bd3f8cb757a 100644 --- a/compiler/testData/diagnostics/tests/deprecated/deprecatedInheritance.fir.kt +++ b/compiler/testData/diagnostics/tests/deprecated/deprecatedInheritance.fir.kt @@ -112,9 +112,9 @@ fun use( e2: E2, w2: W2, ew2: EW2, hew2: HEW2, explicitError: ExplicitError ) { - wd.f() - ed.f() - hd.f() + wd.f() + ed.f() + hd.f() we.f() wh.f() @@ -131,10 +131,10 @@ fun use( nwe2.f() nwe3.f() - e2.f() - w2.f() + e2.f() + w2.f() ew2.f() hew2.f() - explicitError.f() -} \ No newline at end of file + explicitError.f() +} diff --git a/compiler/testData/diagnostics/tests/deprecated/deprecatedPropertyInheritance.fir.kt b/compiler/testData/diagnostics/tests/deprecated/deprecatedPropertyInheritance.fir.kt index 7767cce15ec..ec3699c5eb4 100644 --- a/compiler/testData/diagnostics/tests/deprecated/deprecatedPropertyInheritance.fir.kt +++ b/compiler/testData/diagnostics/tests/deprecated/deprecatedPropertyInheritance.fir.kt @@ -94,20 +94,20 @@ fun use( sdh: SDH, edh: EDH, ned: NED, diff: Diff ) { - warningDeprecated.p - warningDeprecated.p = 1 + warningDeprecated.p + warningDeprecated.p = 1 - errorDeprecated.p - errorDeprecated.p = 1 + errorDeprecated.p + errorDeprecated.p = 1 - getterDeprecated.p + getterDeprecated.p getterDeprecated.p = 1 setterDeprecated.p - setterDeprecated.p = 1 + setterDeprecated.p = 1 - hiddenDeprecated.p - hiddenDeprecated.p = 1 + hiddenDeprecated.p + hiddenDeprecated.p = 1 wd.p wd.p = 1 @@ -130,6 +130,6 @@ fun use( ned.p ned.p = 1 - diff.p - diff.p = 1 -} \ No newline at end of file + diff.p + diff.p = 1 +} diff --git a/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/error.fir.kt b/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/error.fir.kt deleted file mode 100644 index a9117b7271a..00000000000 --- a/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/error.fir.kt +++ /dev/null @@ -1,37 +0,0 @@ -// !API_VERSION: 1.4 - -package kotlin - -@Deprecated("") -@DeprecatedSinceKotlin(errorSince = "1.4") -class ClassCur - -@Deprecated("") -@DeprecatedSinceKotlin(errorSince = "1.4") -fun funCur() {} - -@Deprecated("") -@DeprecatedSinceKotlin(errorSince = "1.4") -val valCur = Unit - -@Deprecated("") -@DeprecatedSinceKotlin(errorSince = "1.5") -class ClassNext - -@Deprecated("") -@DeprecatedSinceKotlin(errorSince = "1.5") -fun funNext() {} - -@Deprecated("") -@DeprecatedSinceKotlin(errorSince = "1.5") -val valNext = Unit - -fun usage() { - ClassCur() - funCur() - valCur - - ClassNext() - funNext() - valNext -} diff --git a/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/error.kt b/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/error.kt index f7ecae7a800..08dde1466d8 100644 --- a/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/error.kt +++ b/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/error.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // !API_VERSION: 1.4 package kotlin diff --git a/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/hidden.fir.kt b/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/hidden.fir.kt index 120153c3ed7..508367e9168 100644 --- a/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/hidden.fir.kt +++ b/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/hidden.fir.kt @@ -27,9 +27,9 @@ fun funNext() {} val valNext = Unit fun usage() { - ClassCur() + ClassCur() funCur() - valCur + valCur ClassNext() funNext() diff --git a/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/messageFromDeprecatedAnnotation.fir.kt b/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/messageFromDeprecatedAnnotation.fir.kt index 3caf335a2aa..43ddd2603b0 100644 --- a/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/messageFromDeprecatedAnnotation.fir.kt +++ b/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/messageFromDeprecatedAnnotation.fir.kt @@ -5,5 +5,5 @@ package kotlin fun foo() {} fun test() { - foo() + foo() } diff --git a/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/warning.fir.kt b/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/warning.fir.kt deleted file mode 100644 index 8a4c5b6dead..00000000000 --- a/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/warning.fir.kt +++ /dev/null @@ -1,37 +0,0 @@ -// !API_VERSION: 1.4 - -package kotlin - -@Deprecated("") -@DeprecatedSinceKotlin(warningSince = "1.4") -class ClassCur - -@Deprecated("") -@DeprecatedSinceKotlin(warningSince = "1.4") -fun funCur() {} - -@Deprecated("") -@DeprecatedSinceKotlin(warningSince = "1.4") -val valCur = Unit - -@Deprecated("") -@DeprecatedSinceKotlin(warningSince = "1.5") -class ClassNext - -@Deprecated("") -@DeprecatedSinceKotlin(warningSince = "1.5") -fun funNext() {} - -@Deprecated("") -@DeprecatedSinceKotlin(warningSince = "1.5") -val valNext = Unit - -fun usage() { - ClassCur() - funCur() - valCur - - ClassNext() - funNext() - valNext -} diff --git a/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/warning.kt b/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/warning.kt index 48a4d370ffc..27dc1ee1b1b 100644 --- a/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/warning.kt +++ b/compiler/testData/diagnostics/tests/deprecated/deprecatedSinceKotlin/warning.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // !API_VERSION: 1.4 package kotlin diff --git a/compiler/testData/diagnostics/tests/deprecated/functionUsage.fir.kt b/compiler/testData/diagnostics/tests/deprecated/functionUsage.fir.kt deleted file mode 100644 index de878244f06..00000000000 --- a/compiler/testData/diagnostics/tests/deprecated/functionUsage.fir.kt +++ /dev/null @@ -1,51 +0,0 @@ -// !DIAGNOSTICS: -UNUSED_EXPRESSION - -import kotlin.reflect.KProperty - -class UsefulClass(val param: Int = 2) { - operator fun getValue(instance: Any, property: KProperty<*>) : Int = 1 - operator fun setValue(instance: Any, property: KProperty<*>, value: Int) {} - - @Deprecated("message") - fun member() {} -} - -@Deprecated("message") -fun Obsolete(param: Int = 1): UsefulClass = UsefulClass(param) - -class Invocable { - @Deprecated("message") - operator fun invoke() {} -} - -object InvocableHolder { - val invocable = Invocable() -} - -fun invoker() { - val invocable = Invocable() - invocable() - InvocableHolder.invocable() -} - -fun block() { - Obsolete() - Obsolete(2) -} - -fun expression() = Obsolete() - -fun reflection() = ::Obsolete -fun reflection2() = UsefulClass::member - -class Initializer { - val x = Obsolete() -} - -@Deprecated("does nothing good") -fun Any.doNothing() = this.toString() // "this" should not be marked as deprecated despite it referes to deprecated function - -class Delegation { - val x by Obsolete() - var y by Obsolete() -} diff --git a/compiler/testData/diagnostics/tests/deprecated/functionUsage.kt b/compiler/testData/diagnostics/tests/deprecated/functionUsage.kt index 4878183f0e7..58267f389b9 100644 --- a/compiler/testData/diagnostics/tests/deprecated/functionUsage.kt +++ b/compiler/testData/diagnostics/tests/deprecated/functionUsage.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // !DIAGNOSTICS: -UNUSED_EXPRESSION import kotlin.reflect.KProperty diff --git a/compiler/testData/diagnostics/tests/deprecated/hiddenPropertyAccessors.fir.kt b/compiler/testData/diagnostics/tests/deprecated/hiddenPropertyAccessors.fir.kt index 1376223dd75..1de7c284de3 100644 --- a/compiler/testData/diagnostics/tests/deprecated/hiddenPropertyAccessors.fir.kt +++ b/compiler/testData/diagnostics/tests/deprecated/hiddenPropertyAccessors.fir.kt @@ -27,14 +27,14 @@ var v6: String set(value) {} fun test() { - v1 - v2 - v3 + v1 + v2 + v3 v3 = "" v4 - v4 = "" - v5 - v5 = "" - v6 - v6 = "" + v4 = "" + v5 + v5 = "" + v6 + v6 = "" } diff --git a/compiler/testData/diagnostics/tests/deprecated/imports.fir.kt b/compiler/testData/diagnostics/tests/deprecated/imports.fir.kt index bd3a686540d..e575820646a 100644 --- a/compiler/testData/diagnostics/tests/deprecated/imports.fir.kt +++ b/compiler/testData/diagnostics/tests/deprecated/imports.fir.kt @@ -5,4 +5,4 @@ class C { fun use() {} } -fun useAlias(c : C2) { c.use() } +fun useAlias(c : C2) { c.use() } diff --git a/compiler/testData/diagnostics/tests/deprecated/javaDeprecated.fir.kt b/compiler/testData/diagnostics/tests/deprecated/javaDeprecated.fir.kt deleted file mode 100644 index 4206722ba17..00000000000 --- a/compiler/testData/diagnostics/tests/deprecated/javaDeprecated.fir.kt +++ /dev/null @@ -1,16 +0,0 @@ -// !DIAGNOSTICS: -NO_VALUE_FOR_PARAMETER -// FILE: A.java - -@Deprecated -public class A { - @Deprecated - public String getFoo(String text) { - return text; - } -} - -// FILE: B.kt - -class B(private @property:Deprecated val foo: String) : A() { - override fun getFoo(text: String): String = super.getFoo(text + foo) -} diff --git a/compiler/testData/diagnostics/tests/deprecated/javaDeprecated.kt b/compiler/testData/diagnostics/tests/deprecated/javaDeprecated.kt index e5f2771f5bc..9bc927af24d 100644 --- a/compiler/testData/diagnostics/tests/deprecated/javaDeprecated.kt +++ b/compiler/testData/diagnostics/tests/deprecated/javaDeprecated.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // !DIAGNOSTICS: -NO_VALUE_FOR_PARAMETER // FILE: A.java diff --git a/compiler/testData/diagnostics/tests/deprecated/javaDeprecatedInheritance.fir.kt b/compiler/testData/diagnostics/tests/deprecated/javaDeprecatedInheritance.fir.kt deleted file mode 100644 index f4c1c237fa3..00000000000 --- a/compiler/testData/diagnostics/tests/deprecated/javaDeprecatedInheritance.fir.kt +++ /dev/null @@ -1,53 +0,0 @@ -// FILE: A.java - -public class A { - - @Deprecated - public static final String D = "d"; - - @Deprecated - public void f() { - return text; - } - - @Deprecated - public static void bar() { - } -} - -// FILE: B.java - -public class B extends A { - - public static final String D = "d"; - - @Override - public void f() { - return text; - } - - public static void bar() { - } -} - - -// FILE: C.java - -public class C extends A { -} - -// FILE: use.kt - -fun use(a: A, b: B, c: C) { - a.f() - b.f() - c.f() - - A.D - B.D - C.D - - A.bar() - B.bar() - C.bar() -} diff --git a/compiler/testData/diagnostics/tests/deprecated/javaDeprecatedInheritance.kt b/compiler/testData/diagnostics/tests/deprecated/javaDeprecatedInheritance.kt index 74d071751e8..4a16b5a850d 100644 --- a/compiler/testData/diagnostics/tests/deprecated/javaDeprecatedInheritance.kt +++ b/compiler/testData/diagnostics/tests/deprecated/javaDeprecatedInheritance.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // FILE: A.java public class A { diff --git a/compiler/testData/diagnostics/tests/deprecated/propertyUsage.fir.kt b/compiler/testData/diagnostics/tests/deprecated/propertyUsage.fir.kt index 7620f3c6feb..b9286b88a27 100644 --- a/compiler/testData/diagnostics/tests/deprecated/propertyUsage.fir.kt +++ b/compiler/testData/diagnostics/tests/deprecated/propertyUsage.fir.kt @@ -37,30 +37,30 @@ class PropertyHolder { } fun PropertyHolder.extFunction() { - test2 = "ext" - test1 + test2 = "ext" + test1 } fun fn() { - PropertyHolder().test1 - PropertyHolder().test2 - PropertyHolder().test2 = "" + PropertyHolder().test1 + PropertyHolder().test2 + PropertyHolder().test2 = "" - PropertyHolder().test3 + PropertyHolder().test3 PropertyHolder().test3 = "" PropertyHolder().test4 - PropertyHolder().test4 = "" + PropertyHolder().test4 = "" - val a = PropertyHolder().x - val b = PropertyHolder().name - PropertyHolder().name = "value" + val a = PropertyHolder().x + val b = PropertyHolder().name + PropertyHolder().name = "value" val d = PropertyHolder().valDelegate PropertyHolder().varDelegate = 1 } fun literals() { - PropertyHolder::test1 - PropertyHolder::name + PropertyHolder::test1 + PropertyHolder::name } diff --git a/compiler/testData/diagnostics/tests/deprecated/propertyUseSiteTargetedAnnotations.fir.kt b/compiler/testData/diagnostics/tests/deprecated/propertyUseSiteTargetedAnnotations.fir.kt index 1005ca88034..36b16c2f919 100644 --- a/compiler/testData/diagnostics/tests/deprecated/propertyUseSiteTargetedAnnotations.fir.kt +++ b/compiler/testData/diagnostics/tests/deprecated/propertyUseSiteTargetedAnnotations.fir.kt @@ -17,15 +17,15 @@ class PropertyHolder { fun fn() { val holder = PropertyHolder() - holder.a1 - holder.a2 - holder.withGetter - holder.withSetter = "A" + holder.a1 + holder.a2 + holder.withGetter + holder.withSetter = "A" } fun literals() { - PropertyHolder::a1 - PropertyHolder::a2 - PropertyHolder::withGetter + PropertyHolder::a1 + PropertyHolder::a2 + PropertyHolder::withGetter PropertyHolder::withSetter } diff --git a/compiler/testData/diagnostics/tests/deprecated/typeUsage.fir.kt b/compiler/testData/diagnostics/tests/deprecated/typeUsage.fir.kt deleted file mode 100644 index b32b9120dd3..00000000000 --- a/compiler/testData/diagnostics/tests/deprecated/typeUsage.fir.kt +++ /dev/null @@ -1,42 +0,0 @@ -@Deprecated("Class") -open class Obsolete { - fun use() {} -} - -@Deprecated("Class") -open class Obsolete2 @Deprecated("Constructor") constructor() { - fun use() {} -} - -interface Generic - -open class Derived() : Obsolete() - -class Derived2() : Derived() - -class TypeParam : Generic - -object Object : Obsolete() - -class Properties { - val x : Obsolete = Obsolete() - var y : Obsolete = Obsolete() - - var n : Obsolete - get() = Obsolete() - set(value) {} -} - -fun param(param: Obsolete) { param.use() } - -fun funcParamReceiver(param: Obsolete.()->Unit) { Obsolete().param() } -fun funcParamParam(param: (Obsolete)->Unit) { param(Obsolete()) } -fun funcParamRetVal(param: ()->Obsolete) { param() } - -fun constraint() {} - -fun Obsolete.receiver() {} - -fun retVal(): Obsolete = Obsolete() - -fun nullableRetVal(): Obsolete? = null diff --git a/compiler/testData/diagnostics/tests/deprecated/typeUsage.kt b/compiler/testData/diagnostics/tests/deprecated/typeUsage.kt index d8bd041ade2..a18a7c5ee94 100644 --- a/compiler/testData/diagnostics/tests/deprecated/typeUsage.kt +++ b/compiler/testData/diagnostics/tests/deprecated/typeUsage.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL @Deprecated("Class") open class Obsolete { fun use() {} diff --git a/compiler/testData/diagnostics/tests/deprecated/typealiasConstructor.fir.kt b/compiler/testData/diagnostics/tests/deprecated/typealiasConstructor.fir.kt index 77f1063af51..4b5948dbfd1 100644 --- a/compiler/testData/diagnostics/tests/deprecated/typealiasConstructor.fir.kt +++ b/compiler/testData/diagnostics/tests/deprecated/typealiasConstructor.fir.kt @@ -6,9 +6,9 @@ open class WithDeprecatedCtor(val x: Int) { constructor() : this(0) } -typealias DeprecatedClassAlias = DeprecatedClass +typealias DeprecatedClassAlias = DeprecatedClass typealias WithDeprecatedCtorAlias = WithDeprecatedCtor -typealias ArrayListOfDeprecatedClass = ArrayList +typealias ArrayListOfDeprecatedClass = ArrayList<DeprecatedClass> class Test1 : DeprecatedClassAlias() diff --git a/compiler/testData/diagnostics/tests/deprecated/typealiasForDeprecatedClass.fir.kt b/compiler/testData/diagnostics/tests/deprecated/typealiasForDeprecatedClass.fir.kt index da64d0df0df..a446443791a 100644 --- a/compiler/testData/diagnostics/tests/deprecated/typealiasForDeprecatedClass.fir.kt +++ b/compiler/testData/diagnostics/tests/deprecated/typealiasForDeprecatedClass.fir.kt @@ -4,12 +4,12 @@ class Foo @Deprecated("", level = DeprecationLevel.ERROR) class Err -typealias Test1 = Foo -typealias Test2 = List +typealias Test1 = Foo +typealias Test2 = List<Foo> typealias Test3 = List -typealias TestErr1 = Err -typealias TestErr2 = List +typealias TestErr1 = Err +typealias TestErr2 = List<Err> typealias TestErr3 = List fun use1(b: Test1) = b @@ -18,4 +18,4 @@ fun use3(b: Test3) = b fun useErr1(b: TestErr1) = b fun useErr2(b: TestErr2) = b -fun useErr3(b: TestErr3) = b \ No newline at end of file +fun useErr3(b: TestErr3) = b diff --git a/compiler/testData/diagnostics/tests/deprecated/typealiasUsage.fir.kt b/compiler/testData/diagnostics/tests/deprecated/typealiasUsage.fir.kt index 6ac0193e35c..111d8f7846a 100644 --- a/compiler/testData/diagnostics/tests/deprecated/typealiasUsage.fir.kt +++ b/compiler/testData/diagnostics/tests/deprecated/typealiasUsage.fir.kt @@ -11,14 +11,14 @@ typealias Obsolete = Base @Deprecated("Obsolete") typealias IObsolete = IFoo -fun test1(x: Obsolete) = x -fun test1a(x: List) = x +fun test1(x: Obsolete) = x +fun test1a(x: List<Obsolete>) = x val test2 = Obsolete() val test3 = Obsolete -class Test4: Obsolete() -class Test4a: IObsolete -class Test4b: IG -class Test4c: CG() \ No newline at end of file +class Test4: Obsolete() +class Test4a: IObsolete +class Test4b: IG<Obsolete> +class Test4c: CG<Obsolete>() diff --git a/compiler/testData/diagnostics/tests/deprecated/warningOnConstructorErrorOnClass.fir.kt b/compiler/testData/diagnostics/tests/deprecated/warningOnConstructorErrorOnClass.fir.kt index fa8936a712d..664d2389f06 100644 --- a/compiler/testData/diagnostics/tests/deprecated/warningOnConstructorErrorOnClass.fir.kt +++ b/compiler/testData/diagnostics/tests/deprecated/warningOnConstructorErrorOnClass.fir.kt @@ -3,6 +3,6 @@ @Deprecated("error", level = DeprecationLevel.ERROR) class Foo @Deprecated("warning", level = DeprecationLevel.WARNING) constructor() -fun test1() = Foo() +fun test1() = Foo() -fun test2(): Foo = Foo() +fun test2(): Foo = Foo() diff --git a/compiler/testData/diagnostics/tests/evaluate/inlineClasses/constructorOfUnsignedType.fir.kt b/compiler/testData/diagnostics/tests/evaluate/inlineClasses/constructorOfUnsignedType.fir.kt index 198ba2da10e..4812a2c3de8 100644 --- a/compiler/testData/diagnostics/tests/evaluate/inlineClasses/constructorOfUnsignedType.fir.kt +++ b/compiler/testData/diagnostics/tests/evaluate/inlineClasses/constructorOfUnsignedType.fir.kt @@ -1,6 +1,6 @@ -// FIR_IDE_IGNORE // !LANGUAGE: +InlineClasses, -JvmInlineValueClasses // SKIP_JAVAC +// ALLOW_KOTLIN_PACKAGE // FILE: uint.kt @@ -13,33 +13,33 @@ inline class ULong(private val l: Long) // FILE: test.kt -annotation class AnnoUB(val ub0: UByte, val ub1: UByte) -annotation class AnnoUS(val us0: UShort, val us1: UShort) -annotation class AnnoUI(val ui0: UInt, val ui1: UInt, val ui2: UInt, val ui3: UInt) -annotation class AnnoUL(val ul0: ULong, val ul1: ULong) +annotation class AnnoUB(val ub0: UByte, val ub1: UByte) +annotation class AnnoUS(val us0: UShort, val us1: UShort) +annotation class AnnoUI(val ui0: UInt, val ui1: UInt, val ui2: UInt, val ui3: UInt) +annotation class AnnoUL(val ul0: ULong, val ul1: ULong) -const val ub0 = UByte(1) -const val us0 = UShort(2) -const val ul0 = ULong(3) +const val ub0 = UByte(1) +const val us0 = UShort(2) +const val ul0 = ULong(3) -const val ui0 = UInt(-1) -const val ui1 = UInt(0) -const val ui2 = UInt(40 + 2) +const val ui0 = UInt(-1) +const val ui1 = UInt(0) +const val ui2 = UInt(40 + 2) -@AnnoUB(UByte(1), ub0) +@AnnoUB(UByte(1), ub0) fun f0() {} -@AnnoUS(UShort(2 + 5), us0) +@AnnoUS(UShort(2 + 5), us0) fun f1() {} -@AnnoUI(ui0, ui1, ui2, UInt(100)) +@AnnoUI(ui0, ui1, ui2, UInt(100)) fun f2() {} -@AnnoUL(ul0, ULong(5)) +@AnnoUL(ul0, ULong(5)) fun f3() {} -const val explicit: UInt = UInt(2) +const val explicit: UInt = UInt(2) -const val nullable: UInt? = UInt(3) +const val nullable: UInt? = UInt(3) -annotation class NullableAnno(val u: UInt?) +annotation class NullableAnno(val u: UInt?) diff --git a/compiler/testData/diagnostics/tests/evaluate/inlineClasses/constructorOfUnsignedType.kt b/compiler/testData/diagnostics/tests/evaluate/inlineClasses/constructorOfUnsignedType.kt index 44018a3e144..93512ea1dc3 100644 --- a/compiler/testData/diagnostics/tests/evaluate/inlineClasses/constructorOfUnsignedType.kt +++ b/compiler/testData/diagnostics/tests/evaluate/inlineClasses/constructorOfUnsignedType.kt @@ -1,6 +1,6 @@ -// FIR_IDE_IGNORE // !LANGUAGE: +InlineClasses, -JvmInlineValueClasses // SKIP_JAVAC +// ALLOW_KOTLIN_PACKAGE // FILE: uint.kt diff --git a/compiler/testData/diagnostics/tests/inner/accessingToJavaNestedClass.fir.kt b/compiler/testData/diagnostics/tests/inner/accessingToJavaNestedClass.fir.kt index b55972205cc..a046c76c5a8 100644 --- a/compiler/testData/diagnostics/tests/inner/accessingToJavaNestedClass.fir.kt +++ b/compiler/testData/diagnostics/tests/inner/accessingToJavaNestedClass.fir.kt @@ -49,16 +49,16 @@ fun test() { val bc: B.NC = B.NC() val bic: B.IC = B().IC() - val bi: B.NI? = null + val bi: B.NI? = null val cc: C.NC = C.NC() - val ci: C.NI? = null + val ci: C.NI? = null val dc: D.NC = D.NC() val dic: D.IC = D().IC() - val di: D.NI? = null + val di: D.NI? = null val kc: K.NC = K.NC() val kic: K.IC = K().IC() - val ki: K.NI? = null + val ki: K.NI? = null } diff --git a/compiler/testData/diagnostics/tests/inner/accessingToKotlinNestedClass.fir.kt b/compiler/testData/diagnostics/tests/inner/accessingToKotlinNestedClass.fir.kt index 36724bd6e63..c7e8c2d5997 100644 --- a/compiler/testData/diagnostics/tests/inner/accessingToKotlinNestedClass.fir.kt +++ b/compiler/testData/diagnostics/tests/inner/accessingToKotlinNestedClass.fir.kt @@ -33,12 +33,12 @@ fun test() { val bc: B.NC = B.NC() val bic: B.IC = B().IC() - val bi: B.NI? = null + val bi: B.NI? = null val cc: C.NC = C.NC() - val ci: C.NI? = null + val ci: C.NI? = null val dc: D.NC = D.NC() val dic: D.IC = D().IC() - val di: D.NI? = null + val di: D.NI? = null } diff --git a/compiler/testData/diagnostics/tests/j+k/deprecations/forFakeOverrides.fir.kt b/compiler/testData/diagnostics/tests/j+k/deprecations/forFakeOverrides.fir.kt deleted file mode 100644 index 6100afe2c4e..00000000000 --- a/compiler/testData/diagnostics/tests/j+k/deprecations/forFakeOverrides.fir.kt +++ /dev/null @@ -1,36 +0,0 @@ -// FILE: J.java -public interface J { - @Deprecated - public void foo(); - - @Deprecated - public String bar(); - - @Deprecated - public CharSequence baz(); -} -// FILE: J2.java -public interface J2 extends J, K { -} - -// FILE: main.kt -interface K { - fun bar(): CharSequence - fun baz(): String -} - -interface A : J, K - -fun main(j: J, j2: J2, a: A) { - j.foo() - j2.foo() - a.foo() - - j.bar() - j2.bar() - a.bar() - - j.baz() - j2.baz() - a.baz() -} diff --git a/compiler/testData/diagnostics/tests/j+k/deprecations/forFakeOverrides.kt b/compiler/testData/diagnostics/tests/j+k/deprecations/forFakeOverrides.kt index 38caa5c9085..d47bda84831 100644 --- a/compiler/testData/diagnostics/tests/j+k/deprecations/forFakeOverrides.kt +++ b/compiler/testData/diagnostics/tests/j+k/deprecations/forFakeOverrides.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // FILE: J.java public interface J { @Deprecated diff --git a/compiler/testData/diagnostics/tests/j+k/deprecations/forMixedOverride.fir.kt b/compiler/testData/diagnostics/tests/j+k/deprecations/forMixedOverride.fir.kt index 2caf9e3d1bf..0ea05d21aa5 100644 --- a/compiler/testData/diagnostics/tests/j+k/deprecations/forMixedOverride.fir.kt +++ b/compiler/testData/diagnostics/tests/j+k/deprecations/forMixedOverride.fir.kt @@ -20,7 +20,7 @@ class A : J(), WithDeprecation { } fun main() { - J().foo() + J().foo() J2().foo() A().foo() diff --git a/compiler/testData/diagnostics/tests/j+k/deprecations/forOverrides.fir.kt b/compiler/testData/diagnostics/tests/j+k/deprecations/forOverrides.fir.kt deleted file mode 100644 index e06bfaf2060..00000000000 --- a/compiler/testData/diagnostics/tests/j+k/deprecations/forOverrides.fir.kt +++ /dev/null @@ -1,23 +0,0 @@ -// FILE: J.java -public interface J { - @Deprecated - public void foo(); - -} -// FILE: J2.java -public interface J2 extends J { - @Override - public void foo(); -} - -// FILE: main.kt - -interface A : J { - override fun foo() -} - -fun main(j: J, j2: J2, a: A) { - j.foo() - j2.foo() - a.foo() -} diff --git a/compiler/testData/diagnostics/tests/j+k/deprecations/forOverrides.kt b/compiler/testData/diagnostics/tests/j+k/deprecations/forOverrides.kt index 022ec34e230..7cf76d9c189 100644 --- a/compiler/testData/diagnostics/tests/j+k/deprecations/forOverrides.kt +++ b/compiler/testData/diagnostics/tests/j+k/deprecations/forOverrides.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // FILE: J.java public interface J { @Deprecated diff --git a/compiler/testData/diagnostics/tests/multimodule/hiddenClass/deprecatedHiddenImportPriority.fir.kt b/compiler/testData/diagnostics/tests/multimodule/hiddenClass/deprecatedHiddenImportPriority.fir.kt index 12b57a58025..a1b1cbfe9de 100644 --- a/compiler/testData/diagnostics/tests/multimodule/hiddenClass/deprecatedHiddenImportPriority.fir.kt +++ b/compiler/testData/diagnostics/tests/multimodule/hiddenClass/deprecatedHiddenImportPriority.fir.kt @@ -31,7 +31,7 @@ fun test(a: A) { import p1.A import p2.* -fun test(a: A) { +fun test(a: A) { a.m1() a.m2() } diff --git a/compiler/testData/diagnostics/tests/multimodule/hiddenClass/deprecatedHiddenMultipleClasses.fir.kt b/compiler/testData/diagnostics/tests/multimodule/hiddenClass/deprecatedHiddenMultipleClasses.fir.kt index ee132551250..2302479978c 100644 --- a/compiler/testData/diagnostics/tests/multimodule/hiddenClass/deprecatedHiddenMultipleClasses.fir.kt +++ b/compiler/testData/diagnostics/tests/multimodule/hiddenClass/deprecatedHiddenMultipleClasses.fir.kt @@ -28,7 +28,7 @@ import p1.* import p2.A import p3.* -fun test(a: A) { +fun test(a: A) { a.v1 a.v2 a.v3 diff --git a/compiler/testData/diagnostics/tests/objects/kt21515/classifierFromCompanionObjectNew.fir.kt b/compiler/testData/diagnostics/tests/objects/kt21515/classifierFromCompanionObjectNew.fir.kt deleted file mode 100644 index d3a8efbae94..00000000000 --- a/compiler/testData/diagnostics/tests/objects/kt21515/classifierFromCompanionObjectNew.fir.kt +++ /dev/null @@ -1,99 +0,0 @@ -// !LANGUAGE: +ProhibitVisibilityOfNestedClassifiersFromSupertypesOfCompanion - -// See KT-21515 for a class diagram and details - -// Object is to prevent accidental short-name import -object O { - open class Alpha { - class FromAlpha - - companion object { - class FromCompanionAlpha - } - } - - open class Beta : Alpha() { - class FromBeta - - companion object { - class FromCompanionBeta - } - } - - - open class A { - class FromA - - companion object : Beta() { - class FromCompanionA - } - } - -////////////////////////// - - open class FarAway { - class FromFarAway - - } - - open class Gamma { - class FromGamma - companion object : FarAway() { - class FromCompanionGamma - } - } - - open class B : A() { - class FromB - - companion object : Gamma() { - class FromCompanionB - } - } -} - -/////////////////////////////// - - -open class Delta { - class FromDelta -} - -class C : O.B() { - companion object : Delta() { - class FromCompanionC - } - - // VISIBLE: Classifiers from direct superclasses - val c: FromA? = null - val d: FromB? = null - - // VISIBLE: Classifiers from our own companion - val n: FromCompanionC? = null - - // INVISIBLE: direct superclasses themselves. - val a: A? = null - val b: B? = null - - // DEPRECATED: Classifiers from companions of direct superclasses - val e: FromCompanionA? = null - val f: FromCompanionB? = null - - // INVISIBLE: "cousin" supertypes themselves - val g: Alpha? = null - val h: Beta? = null - val i: Gamma? = null - - // DEPRECATED: classifiers from "cousin" superclasses - val k: FromAlpha? = null - val l: FromBeta? = null - val m: FromGamma? = null - - // INVISIBLE: We don't see classifiers from companions of "cousin" superclasses - val o: FromCompanionAlpha? = null - val p: FromCompanionBeta? = null - val q: FromCompanionGamma? = null - - // DEPRECATED: Classifiers from supertypes of our own companion - val r: FromDelta? = null -} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/objects/kt21515/classifierFromCompanionObjectNew.kt b/compiler/testData/diagnostics/tests/objects/kt21515/classifierFromCompanionObjectNew.kt index 0a8b4409562..0077fc0608d 100644 --- a/compiler/testData/diagnostics/tests/objects/kt21515/classifierFromCompanionObjectNew.kt +++ b/compiler/testData/diagnostics/tests/objects/kt21515/classifierFromCompanionObjectNew.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // !LANGUAGE: +ProhibitVisibilityOfNestedClassifiersFromSupertypesOfCompanion // See KT-21515 for a class diagram and details diff --git a/compiler/testData/diagnostics/tests/objects/kt21515/classifierFromCompanionObjectOld.fir.kt b/compiler/testData/diagnostics/tests/objects/kt21515/classifierFromCompanionObjectOld.fir.kt index 945d7aaaf0c..3eaebbcb91d 100644 --- a/compiler/testData/diagnostics/tests/objects/kt21515/classifierFromCompanionObjectOld.fir.kt +++ b/compiler/testData/diagnostics/tests/objects/kt21515/classifierFromCompanionObjectOld.fir.kt @@ -71,28 +71,28 @@ class C : O.B() { val n: FromCompanionC? = null // INVISIBLE: direct superclasses themselves. - val a: A? = null - val b: B? = null + val a: A? = null + val b: B? = null // DEPRECATED: Classifiers from companions of direct superclasses - val e: FromCompanionA? = null - val f: FromCompanionB? = null + val e: FromCompanionA? = null + val f: FromCompanionB? = null // INVISIBLE: "cousin" supertypes themselves - val g: Alpha? = null - val h: Beta? = null - val i: Gamma? = null + val g: Alpha? = null + val h: Beta? = null + val i: Gamma? = null // DEPRECATED: classifiers from "cousin" superclasses - val k: FromAlpha? = null - val l: FromBeta? = null - val m: FromGamma? = null + val k: FromAlpha? = null + val l: FromBeta? = null + val m: FromGamma? = null // INVISIBLE: We don't see classifiers from companions of "cousin" superclasses - val o: FromCompanionAlpha? = null - val p: FromCompanionBeta? = null - val q: FromCompanionGamma? = null + val o: FromCompanionAlpha? = null + val p: FromCompanionBeta? = null + val q: FromCompanionGamma? = null // DEPRECATED: Classifiers from supertypes of our own companion - val r: FromDelta? = null + val r: FromDelta? = null } \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/operatorRem/resolveModIfRemIsHidden.fir.kt b/compiler/testData/diagnostics/tests/operatorRem/resolveModIfRemIsHidden.fir.kt index 23e503d87a8..2ae4b0c91b8 100644 --- a/compiler/testData/diagnostics/tests/operatorRem/resolveModIfRemIsHidden.fir.kt +++ b/compiler/testData/diagnostics/tests/operatorRem/resolveModIfRemIsHidden.fir.kt @@ -9,7 +9,7 @@ object A { } fun test() { - takeString(A % 123) + takeString(A % 123) } fun takeString(s: String) {} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/regressions/itselfAsUpperBoundLocal.fir.kt b/compiler/testData/diagnostics/tests/regressions/itselfAsUpperBoundLocal.fir.kt index f4481fc4ebc..f876caeb314 100644 --- a/compiler/testData/diagnostics/tests/regressions/itselfAsUpperBoundLocal.fir.kt +++ b/compiler/testData/diagnostics/tests/regressions/itselfAsUpperBoundLocal.fir.kt @@ -1,4 +1,4 @@ fun bar() { - fun T?> foo() {} + fun T?> foo() {} foo() } diff --git a/compiler/testData/diagnostics/tests/resolve/HiddenDeclarations.fir.kt b/compiler/testData/diagnostics/tests/resolve/HiddenDeclarations.fir.kt index d926d7909b9..fdd393fbd63 100644 --- a/compiler/testData/diagnostics/tests/resolve/HiddenDeclarations.fir.kt +++ b/compiler/testData/diagnostics/tests/resolve/HiddenDeclarations.fir.kt @@ -17,7 +17,7 @@ fun String.topLevelExtensionFun(){} val String.topLevelExtensionProperty: Int get() = 1 open class A { - constructor(p: Int) : this("") {} + constructor(p: Int) : this("") {} @Deprecated("hidden", level = DeprecationLevel.HIDDEN) constructor(s: String){} @@ -35,17 +35,17 @@ open class A { val String.memberExtensionProperty: Int get() = 1 fun foo() { - topLevelFun() - topLevelProperty++ - "".topLevelExtensionFun() - "".topLevelExtensionProperty + topLevelFun() + topLevelProperty++ + "".topLevelExtensionFun() + "".topLevelExtensionProperty - memberFun() - memberProperty - "".memberExtensionFun() - "".memberExtensionProperty + memberFun() + memberProperty + "".memberExtensionFun() + "".memberExtensionProperty - A("") + A("") } } @@ -62,13 +62,13 @@ interface I { } } -class B : A("") { +class B : A("") { // still can override it override fun memberFun() { - super.memberFun() // but cannot call super :) + super.memberFun() // but cannot call super :) } } class C : A { - constructor() : super("") -} \ No newline at end of file + constructor() : super("") +} diff --git a/compiler/testData/diagnostics/tests/syntheticExtensions/javaProperties/Deprecated.fir.kt b/compiler/testData/diagnostics/tests/syntheticExtensions/javaProperties/Deprecated.fir.kt index 83e9aa56d6b..bbef27f225d 100644 --- a/compiler/testData/diagnostics/tests/syntheticExtensions/javaProperties/Deprecated.fir.kt +++ b/compiler/testData/diagnostics/tests/syntheticExtensions/javaProperties/Deprecated.fir.kt @@ -1,18 +1,18 @@ // FILE: KotlinFile.kt fun foo(javaClass: JavaClass) { - javaClass.something1 + javaClass.something1 - javaClass.something2 + javaClass.something2 javaClass.something2 = 1 - javaClass.something2++ + javaClass.something2++ javaClass.something3 - javaClass.something3 = 1 - javaClass.something3++ + javaClass.something3 = 1 + javaClass.something3++ - javaClass.something4 - javaClass.something4 = 1 - javaClass.something4++ + javaClass.something4 + javaClass.something4 = 1 + javaClass.something4++ javaClass.something5 javaClass.something5 = 1 diff --git a/compiler/testData/diagnostics/tests/syntheticExtensions/samAdapters/Deprecated.fir.kt b/compiler/testData/diagnostics/tests/syntheticExtensions/samAdapters/Deprecated.fir.kt index 4f27061bd0f..50732e329ec 100644 --- a/compiler/testData/diagnostics/tests/syntheticExtensions/samAdapters/Deprecated.fir.kt +++ b/compiler/testData/diagnostics/tests/syntheticExtensions/samAdapters/Deprecated.fir.kt @@ -4,7 +4,7 @@ public interface I { } fun foo(javaClass: JavaClass) { - javaClass.doSomething1 { bar() } + javaClass.doSomething1 { bar() } javaClass.doSomething2 { bar() } } diff --git a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/generic.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/generic.fir.kt index 7aff9dd45a1..885c9417f61 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/generic.fir.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/generic.fir.kt @@ -2,7 +2,7 @@ // !JVM_DEFAULT_MODE: enable interface A { - @JvmDefault + @JvmDefault fun test(p: T) { } } diff --git a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/javaOverride.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/javaOverride.fir.kt index c1c6958efb7..964005615d4 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/javaOverride.fir.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/javaOverride.fir.kt @@ -13,7 +13,7 @@ public interface JavaInterface { // FILE: 1.kt interface KotlinInterface : JavaInterface { - @JvmDefault + @JvmDefault override fun test() {} override fun testForNonDefault() {} @@ -22,7 +22,7 @@ interface KotlinInterface : JavaInterface { } interface KotlinInterface2 : JavaInterface, KotlinInterface { - @JvmDefault + @JvmDefault override fun test() {} override fun testForNonDefault() {} @@ -37,7 +37,7 @@ interface KotlinInterfaceForIndirect : JavaInterface { interface KotlinInterfaceIndirectInheritance : KotlinInterfaceForIndirect { - @JvmDefault + @JvmDefault override fun test() {} override fun testForNonDefault() {} @@ -63,7 +63,7 @@ interface KotlinInterfaceX { } interface KotlinInterfaceManySuper: JavaInterface, KotlinInterfaceX { - @JvmDefault + @JvmDefault override fun test() {} override fun testForNonDefault() {} diff --git a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/javaOverrideAll.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/javaOverrideAll.fir.kt deleted file mode 100644 index 24835cb430a..00000000000 --- a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/javaOverrideAll.fir.kt +++ /dev/null @@ -1,69 +0,0 @@ -// !JVM_DEFAULT_MODE: all -// !JVM_TARGET: 1.8 - -// FILE: JavaInterface.java -public interface JavaInterface { - default void test() {} - - default void testForNonDefault() {} - - void testAbstract(); -} - -// FILE: 1.kt - -interface KotlinInterface : JavaInterface { - @JvmDefault - override fun test() {} - - override fun testForNonDefault() {} - - override fun testAbstract() {} -} - -interface KotlinInterface2 : JavaInterface, KotlinInterface { - override fun test() {} - - override fun testForNonDefault() {} - - override fun testAbstract() {} -} - - -interface KotlinInterfaceForIndirect : JavaInterface { - -} - -interface KotlinInterfaceIndirectInheritance : KotlinInterfaceForIndirect { - - override fun test() {} - - override fun testForNonDefault() {} - - override fun testAbstract() {} -} - -open class KotlinClass : JavaInterface { - override fun test() {} - - override fun testForNonDefault() {} - - override fun testAbstract() {} -} - -interface KotlinInterfaceX { - - fun test() {} - - fun testForNonDefault() {} - - fun testAbstract() {} -} - -interface KotlinInterfaceManySuper: JavaInterface, KotlinInterfaceX { - override fun test() {} - - override fun testForNonDefault() {} - - override fun testAbstract() {} -} diff --git a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/javaOverrideAll.kt b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/javaOverrideAll.kt index 99a4cb08f26..03fdc6d9125 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/javaOverrideAll.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/javaOverrideAll.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // !JVM_DEFAULT_MODE: all // !JVM_TARGET: 1.8 diff --git a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/jvmDefaultInInheritance.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/jvmDefaultInInheritance.fir.kt index b9e1fa92a73..5b887d1b909 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/jvmDefaultInInheritance.fir.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/jvmDefaultInInheritance.fir.kt @@ -1,7 +1,7 @@ // !JVM_TARGET: 1.8 interface A { - @JvmDefault + @JvmDefault fun test() { } } @@ -28,7 +28,7 @@ class Bar2 : Foo(), A class Bar3 : Foo(), B open class BarWithJvmDefault : B { - @JvmDefault + @JvmDefault override fun test() { } } diff --git a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/jvmDefaults.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/jvmDefaults.fir.kt index e5cd45535bd..ad53ea01de2 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/jvmDefaults.fir.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/jvmDefaults.fir.kt @@ -2,12 +2,12 @@ // !JVM_TARGET: 1.8 public interface KInterface { - @JvmDefault + @JvmDefault fun test(): String { return "OK"; } - @JvmDefault + @JvmDefault val property: String get() = "OK" @@ -23,7 +23,7 @@ public interface KInterface { // FILE: 1.kt interface KotlinInterface : KInterface { - @JvmDefault + @JvmDefault fun fooo() { super.test() super.property @@ -42,7 +42,7 @@ interface KotlinInterface : KInterface { } } - @JvmDefault + @JvmDefault val propertyy: String get() { super.test() @@ -105,7 +105,7 @@ interface KotlinInterface : KInterface { } interface KotlinInterfaceIndirectInheritance : KotlinInterface { - @JvmDefault + @JvmDefault fun foooo() { super.test() super.property @@ -124,7 +124,7 @@ interface KotlinInterfaceIndirectInheritance : KotlinInterface { } } - @JvmDefault + @JvmDefault val propertyyy: String get() { super.test() diff --git a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/jvmDefaultsWithJava.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/jvmDefaultsWithJava.fir.kt deleted file mode 100644 index b15d257c398..00000000000 --- a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/jvmDefaultsWithJava.fir.kt +++ /dev/null @@ -1,162 +0,0 @@ -// !JVM_DEFAULT_MODE: enable -// !JVM_TARGET: 1.8 -// FILE: JavaInterface.java - -public interface JavaInterface { - default String test() { - return "OK"; - } - - default String testOverride() { - return "OK"; - } -} - -// FILE: 1.kt - -interface KotlinInterface : JavaInterface { - @JvmDefault - fun fooo() { - super.test() - - object { - fun run () { - super@KotlinInterface.test() - } - } - } - - @JvmDefault - val propertyy: String - get() { - super.test() - - object { - fun run () { - super@KotlinInterface.test() - } - } - return "" - } - - @JvmDefault - override fun testOverride(): String { - return "OK"; - } -} - -interface KotlinInterfaceIndirectInheritance : KotlinInterface { - @JvmDefault - fun foooo() { - super.test() - - object { - fun run () { - super@KotlinInterfaceIndirectInheritance.test() - } - } - } - - @JvmDefault - val propertyyy: String - get() { - super.test() - - object { - fun run () { - super@KotlinInterfaceIndirectInheritance.test() - } - } - return "" - } -} - -open class KotlinClass : JavaInterface { - fun foo() { - super.test() - super.testOverride() - - object { - fun run () { - super@KotlinClass.test() - } - } - } - - val property: String - get() { - super.test() - super.testOverride() - - object { - fun run () { - super@KotlinClass.test() - } - } - return "" - } -} - -class KotlinClassIndirectInheritance : KotlinClass() { - fun foo2() { - super.test() - super.testOverride() - - object { - fun run () { - super@KotlinClassIndirectInheritance.test() - } - } - } - - val property2: String - get() { - super.test() - super.testOverride() - - object { - fun run () { - super@KotlinClassIndirectInheritance.test() - } - } - return "" - } -} - -class KotlinClassIndirectInheritance2 : KotlinInterfaceIndirectInheritance { - fun foo() { - super.test() - super.testOverride() - - object { - fun run () { - super@KotlinClassIndirectInheritance2.test() - } - } - } - - val property: String - get() { - super.test() - super.testOverride() - - object { - fun run () { - super@KotlinClassIndirectInheritance2.test() - } - } - return "" - } -} - -fun test() { - KotlinClass().foo() - KotlinClass().property - KotlinClassIndirectInheritance2().foo() - KotlinClassIndirectInheritance2().property - - KotlinClass().test() - KotlinClass().property - KotlinClass().testOverride() - KotlinClassIndirectInheritance().testOverride() -} diff --git a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/jvmDefaultsWithJava.kt b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/jvmDefaultsWithJava.kt index 8517f8efd38..0e4f2e708b8 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/jvmDefaultsWithJava.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/jvmDefaultsWithJava.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // !JVM_DEFAULT_MODE: enable // !JVM_TARGET: 1.8 // FILE: JavaInterface.java diff --git a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/noJvmDefaultFlag.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/noJvmDefaultFlag.fir.kt index b61ce7a12bb..404ef6a0d79 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/noJvmDefaultFlag.fir.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/noJvmDefaultFlag.fir.kt @@ -2,27 +2,27 @@ interface B { - @JvmDefault + @JvmDefault fun test() {} - @JvmDefault + @JvmDefault abstract fun test2(s: String = "") - @JvmDefault + @JvmDefault abstract fun test3() - @JvmDefault + @JvmDefault abstract val prop: String - @JvmDefault + @JvmDefault abstract val prop2: String - @JvmDefault + @JvmDefault val prop3: String get() = "" - @JvmDefault + @JvmDefault var prop4: String get() = "" set(value) {} diff --git a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/notInterface.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/notInterface.fir.kt index 73c1c6de9ae..06ac43b1967 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/notInterface.fir.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/notInterface.fir.kt @@ -2,21 +2,21 @@ abstract class A { - @JvmDefault + @JvmDefault fun test() {} - @JvmDefault + @JvmDefault abstract fun test2(s: String = "") - @JvmDefault + @JvmDefault abstract fun test3() } object B { - @JvmDefault + @JvmDefault fun test() {} - @JvmDefault + @JvmDefault fun test2(s: String = "") {} } diff --git a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/propertyAccessor.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/propertyAccessor.fir.kt index f555bdab2f2..b7f33741cdc 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/propertyAccessor.fir.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/propertyAccessor.fir.kt @@ -3,7 +3,7 @@ interface B { - @JvmDefault + @JvmDefault val prop1: String @JvmDefault get() = "" diff --git a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/simpleOverride.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/simpleOverride.fir.kt index 9e1c054796d..58c8254552a 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/simpleOverride.fir.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/simpleOverride.fir.kt @@ -2,7 +2,7 @@ // !JVM_DEFAULT_MODE: enable interface A { - @JvmDefault + @JvmDefault fun test() {} } diff --git a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/simplePropertyOverride.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/simplePropertyOverride.fir.kt index f5b65653e85..c6b3082d893 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/simplePropertyOverride.fir.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/simplePropertyOverride.fir.kt @@ -2,7 +2,7 @@ // !JVM_DEFAULT_MODE: enable interface A { - @JvmDefault + @JvmDefault val test: String get() = "OK" } diff --git a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/superCall.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/superCall.fir.kt index b9a9e3d0af0..c4ff52717ea 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/superCall.fir.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/superCall.fir.kt @@ -1,7 +1,7 @@ // !JVM_TARGET: 1.8 // FILE: 1.kt interface A { - @JvmDefault + @JvmDefault fun test() { } } @@ -12,7 +12,7 @@ interface B : A { } interface C : B { - @JvmDefault + @JvmDefault override fun test() { super.test() } diff --git a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/superCallAmbiguity.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/superCallAmbiguity.fir.kt index 54b63c6aae6..dcae633bc07 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/superCallAmbiguity.fir.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/superCallAmbiguity.fir.kt @@ -1,6 +1,6 @@ // !JVM_TARGET: 1.8 interface A { - @JvmDefault + @JvmDefault fun test() { } } @@ -16,7 +16,7 @@ interface B{ interface C : A, B { - @JvmDefault + @JvmDefault override fun test() { super.test() super.test() @@ -24,7 +24,7 @@ interface C : A, B { } interface D : B, A { - @JvmDefault + @JvmDefault override fun test() { super.test() super.test() diff --git a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/superCallAmbiguity2.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/superCallAmbiguity2.fir.kt index 8b6e555c7da..9dc6fde6b19 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/superCallAmbiguity2.fir.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/superCallAmbiguity2.fir.kt @@ -1,6 +1,6 @@ // !JVM_TARGET: 1.8 interface A { - @JvmDefault + @JvmDefault fun test() } diff --git a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/superCallAmbiguity3.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/superCallAmbiguity3.fir.kt index b34e87ce3a2..d424cd6b7e3 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/superCallAmbiguity3.fir.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/superCallAmbiguity3.fir.kt @@ -1,6 +1,6 @@ // !JVM_TARGET: 1.8 interface A { - @JvmDefault + @JvmDefault fun test() { } diff --git a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/target6.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/target6.fir.kt index 6c733fee156..9e879657d7e 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/target6.fir.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/target6.fir.kt @@ -2,27 +2,27 @@ interface B { - @JvmDefault + @JvmDefault fun test() {} - @JvmDefault + @JvmDefault abstract fun test2(s: String = "") - @JvmDefault + @JvmDefault abstract fun test3() - @JvmDefault + @JvmDefault abstract val prop: String - @JvmDefault + @JvmDefault abstract val prop2: String - @JvmDefault + @JvmDefault val prop3: String get() = "" - @JvmDefault + @JvmDefault var prop4: String get() = "" set(value) {} diff --git a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/target8.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/target8.fir.kt deleted file mode 100644 index 35b71d2bba0..00000000000 --- a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/target8.fir.kt +++ /dev/null @@ -1,30 +0,0 @@ -// !JVM_TARGET: 1.8 -// !JVM_DEFAULT_MODE: enable - -interface B { - - @JvmDefault - fun test() {} - - @JvmDefault - abstract fun test2(s: String = "") - - @JvmDefault - abstract fun test3() - - - @JvmDefault - abstract val prop: String - - @JvmDefault - abstract val prop2: String - - @JvmDefault - val prop3: String - get() = "" - - @JvmDefault - var prop4: String - get() = "" - set(value) {} -} diff --git a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/target8.kt b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/target8.kt index 7fb6e0036f9..701beb7cded 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/target8.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/annotations/jvmDefault/target8.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // !JVM_TARGET: 1.8 // !JVM_DEFAULT_MODE: enable diff --git a/compiler/testData/diagnostics/testsWithStdLib/deprecated/deprecationOnReadBytes.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/deprecated/deprecationOnReadBytes.fir.kt deleted file mode 100644 index f00e93f243d..00000000000 --- a/compiler/testData/diagnostics/testsWithStdLib/deprecated/deprecationOnReadBytes.fir.kt +++ /dev/null @@ -1,7 +0,0 @@ -import java.io.InputStream - -fun InputStream.test() { - readBytes() - - readBytes(1) -} diff --git a/compiler/testData/diagnostics/testsWithStdLib/deprecated/deprecationOnReadBytes.kt b/compiler/testData/diagnostics/testsWithStdLib/deprecated/deprecationOnReadBytes.kt index 273823eeece..84beff75137 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/deprecated/deprecationOnReadBytes.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/deprecated/deprecationOnReadBytes.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL import java.io.InputStream fun InputStream.test() { diff --git a/compiler/testData/diagnostics/testsWithStdLib/functionLiterals/pseudocodeMemoryOverhead.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/functionLiterals/pseudocodeMemoryOverhead.fir.kt index 4696568f035..8222242a840 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/functionLiterals/pseudocodeMemoryOverhead.fir.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/functionLiterals/pseudocodeMemoryOverhead.fir.kt @@ -42,38 +42,38 @@ private val unaryOperations: HashMap, Pair a.toInt() }, emptyUnaryFun), unaryOperation(BYTE, "minus", { a -> a.unaryMinus() }, { a -> a.unaryMinus() }), unaryOperation(BYTE, "minus", { a -> a.unaryMinus() }, { a -> a.unaryMinus() }), - unaryOperation(BYTE, "toChar", { a -> a.toChar() }, emptyUnaryFun), + unaryOperation(BYTE, "toChar", { a -> a.toChar() }, emptyUnaryFun), unaryOperation(BYTE, "toLong", { a -> a.toLong() }, emptyUnaryFun), unaryOperation(BYTE, "plus", { a -> a.unaryPlus() }, emptyUnaryFun), unaryOperation(BYTE, "toFloat", { a -> a.toFloat() }, emptyUnaryFun), unaryOperation(BYTE, "toDouble", { a -> a.toDouble() }, emptyUnaryFun), unaryOperation(BYTE, "toShort", { a -> a.toShort() }, emptyUnaryFun), unaryOperation(BYTE, "toByte", { a -> a.toByte() }, emptyUnaryFun), - unaryOperation(CHAR, "toInt", { a -> a.toInt() }, emptyUnaryFun), + unaryOperation(CHAR, "toInt", { a -> a.toInt() }, emptyUnaryFun), unaryOperation(CHAR, "toChar", { a -> a.toChar() }, emptyUnaryFun), - unaryOperation(CHAR, "toLong", { a -> a.toLong() }, emptyUnaryFun), - unaryOperation(CHAR, "toFloat", { a -> a.toFloat() }, emptyUnaryFun), - unaryOperation(CHAR, "toDouble", { a -> a.toDouble() }, emptyUnaryFun), - unaryOperation(CHAR, "toShort", { a -> a.toShort() }, emptyUnaryFun), - unaryOperation(CHAR, "toByte", { a -> a.toByte() }, emptyUnaryFun), + unaryOperation(CHAR, "toLong", { a -> a.toLong() }, emptyUnaryFun), + unaryOperation(CHAR, "toFloat", { a -> a.toFloat() }, emptyUnaryFun), + unaryOperation(CHAR, "toDouble", { a -> a.toDouble() }, emptyUnaryFun), + unaryOperation(CHAR, "toShort", { a -> a.toShort() }, emptyUnaryFun), + unaryOperation(CHAR, "toByte", { a -> a.toByte() }, emptyUnaryFun), unaryOperation(DOUBLE, "toInt", { a -> a.toInt() }, emptyUnaryFun), unaryOperation(DOUBLE, "minus", { a -> a.unaryMinus() }, emptyUnaryFun), - unaryOperation(DOUBLE, "toChar", { a -> a.toChar() }, emptyUnaryFun), + unaryOperation(DOUBLE, "toChar", { a -> a.toChar() }, emptyUnaryFun), unaryOperation(DOUBLE, "toLong", { a -> a.toLong() }, emptyUnaryFun), unaryOperation(DOUBLE, "plus", { a -> a.unaryPlus() }, emptyUnaryFun), unaryOperation(DOUBLE, "toFloat", { a -> a.toFloat() }, emptyUnaryFun), unaryOperation(DOUBLE, "toDouble", { a -> a.toDouble() }, emptyUnaryFun), - unaryOperation(DOUBLE, "toShort", { a -> a.toShort() }, emptyUnaryFun), - unaryOperation(DOUBLE, "toByte", { a -> a.toByte() }, emptyUnaryFun), + unaryOperation(DOUBLE, "toShort", { a -> a.toShort() }, emptyUnaryFun), + unaryOperation(DOUBLE, "toByte", { a -> a.toByte() }, emptyUnaryFun), unaryOperation(FLOAT, "toInt", { a -> a.toInt() }, emptyUnaryFun), unaryOperation(FLOAT, "minus", { a -> a.unaryMinus() }, emptyUnaryFun), - unaryOperation(FLOAT, "toChar", { a -> a.toChar() }, emptyUnaryFun), + unaryOperation(FLOAT, "toChar", { a -> a.toChar() }, emptyUnaryFun), unaryOperation(FLOAT, "toLong", { a -> a.toLong() }, emptyUnaryFun), unaryOperation(FLOAT, "plus", { a -> a.unaryPlus() }, emptyUnaryFun), unaryOperation(FLOAT, "toFloat", { a -> a.toFloat() }, emptyUnaryFun), unaryOperation(FLOAT, "toDouble", { a -> a.toDouble() }, emptyUnaryFun), - unaryOperation(FLOAT, "toShort", { a -> a.toShort() }, emptyUnaryFun), - unaryOperation(FLOAT, "toByte", { a -> a.toByte() }, emptyUnaryFun), + unaryOperation(FLOAT, "toShort", { a -> a.toShort() }, emptyUnaryFun), + unaryOperation(FLOAT, "toByte", { a -> a.toByte() }, emptyUnaryFun), unaryOperation(INT, "plus", { a -> a.unaryPlus() }, emptyUnaryFun), unaryOperation(INT, "toShort", { a -> a.toShort() }, emptyUnaryFun), unaryOperation(INT, "toByte", { a -> a.toByte() }, emptyUnaryFun), @@ -90,13 +90,13 @@ private val unaryOperations: HashMap, Pair a.inv() }, emptyUnaryFun), unaryOperation(LONG, "toInt", { a -> a.toInt() }, emptyUnaryFun), unaryOperation(LONG, "minus", { a -> a.unaryMinus() }, { a -> a.unaryMinus() }), - unaryOperation(LONG, "toChar", { a -> a.toChar() }, emptyUnaryFun), + unaryOperation(LONG, "toChar", { a -> a.toChar() }, emptyUnaryFun), unaryOperation(LONG, "toLong", { a -> a.toLong() }, emptyUnaryFun), unaryOperation(LONG, "toDouble", { a -> a.toDouble() }, emptyUnaryFun), unaryOperation(LONG, "toFloat", { a -> a.toFloat() }, emptyUnaryFun), unaryOperation(SHORT, "toInt", { a -> a.toInt() }, emptyUnaryFun), unaryOperation(SHORT, "minus", { a -> a.unaryMinus() }, { a -> a.unaryMinus() }), - unaryOperation(SHORT, "toChar", { a -> a.toChar() }, emptyUnaryFun), + unaryOperation(SHORT, "toChar", { a -> a.toChar() }, emptyUnaryFun), unaryOperation(SHORT, "toLong", { a -> a.toLong() }, emptyUnaryFun), unaryOperation(SHORT, "plus", { a -> a.unaryPlus() }, emptyUnaryFun), unaryOperation(SHORT, "toFloat", { a -> a.toFloat() }, emptyUnaryFun), diff --git a/compiler/testData/diagnostics/testsWithStdLib/targetedBuiltIns/blackListed.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/targetedBuiltIns/blackListed.fir.kt index 9106c382a88..40e8b61ed19 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/targetedBuiltIns/blackListed.fir.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/targetedBuiltIns/blackListed.fir.kt @@ -7,14 +7,14 @@ abstract class A : MutableList { } fun foo(x: MutableList, y: java.util.ArrayList, z: A, p: java.util.Comparator) { - x.sort(p) + x.sort(p) y.sort(p) z.sort(p) } fun bar(x: MutableList, y: java.util.ArrayList, z: A) { - x.sort { a, b -> a.length - b.length } + x.sort { a, b -> a.length - b.length } y.sort { a, b -> a.length - b.length } z.sort { a, b -> a.length - b.length } diff --git a/compiler/tests-spec/testData/diagnostics/notLinked/contracts/analysis/smartcasts/pos/7.fir.kt b/compiler/tests-spec/testData/diagnostics/notLinked/contracts/analysis/smartcasts/pos/7.fir.kt index 1ba41c4e7ba..b2dace5857c 100644 --- a/compiler/tests-spec/testData/diagnostics/notLinked/contracts/analysis/smartcasts/pos/7.fir.kt +++ b/compiler/tests-spec/testData/diagnostics/notLinked/contracts/analysis/smartcasts/pos/7.fir.kt @@ -219,7 +219,7 @@ fun case_1(value_1: Int?) { // TESTCASE NUMBER: 2 fun case_2(value_1: Number?) { case_2_1(value_1) - value_1.toByte() + value_1.toByte() case_2_2(value_1) value_1.inv() } @@ -278,25 +278,25 @@ fun case_5(value_1: Int?, value_2: Int?) { fun case_6(value_1: Number?, value_2: Number?) { when { case_6_1(value_1) -> { - value_1.toByte() + value_1.toByte() when { case_6_2(value_1) -> value_1.inv() } } } when { !case_6_3(value_2) -> { - value_2.toByte() + value_2.toByte() when { !case_6_4(value_2) -> value_2.inv() } } } when { case_6_5(value_2) != null -> { - value_2.toByte() + value_2.toByte() when { case_6_6(value_2) != null -> value_2.inv() } } } when { case_6_7(value_2) == null -> { - value_2.toByte() + value_2.toByte() when { case_6_8(value_2) == null -> value_2.inv() } } } diff --git a/compiler/tests-spec/testData/diagnostics/notLinked/dfa/neg/1.fir.kt b/compiler/tests-spec/testData/diagnostics/notLinked/dfa/neg/1.fir.kt index 5bd13b398fc..610fe758b7e 100644 --- a/compiler/tests-spec/testData/diagnostics/notLinked/dfa/neg/1.fir.kt +++ b/compiler/tests-spec/testData/diagnostics/notLinked/dfa/neg/1.fir.kt @@ -179,7 +179,7 @@ fun case_12(x: TypealiasNullableStringIndirect, y: TypealiasNullableStringIndire else "-1" // TESTCASE NUMBER: 13 -fun case_13(x: otherpackage.Case13?) = +fun case_13(x: otherpackage.Case13?) = if ((x == null !is Boolean) !== true) { throw Exception() } else { @@ -189,7 +189,7 @@ fun case_13(x: otherpackage.Case13?) = // TESTCASE NUMBER: 14 class Case14 { - val x: otherpackage.Case14? + val x: otherpackage.Case14? init { x = otherpackage.Case14() } diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/classMembers.txt b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/classMembers.txt index 4a63ec83ed8..ea284d8eb64 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/classMembers.txt +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/classMembers.txt @@ -1,3 +1,4 @@ + RAW_FIR: FILE: classMembers.kt public? final? [RAW_FIR] class A : R|kotlin/Any| { diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/propertyWithGetter.txt b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/propertyWithGetter.txt index bd184b1372f..f93d5826fd8 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/propertyWithGetter.txt +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/propertyWithGetter.txt @@ -1,3 +1,4 @@ + RAW_FIR: FILE: propertyWithGetter.kt public? final? [RAW_FIR] fun resolveMe(): R|kotlin/Unit| { diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/propertyWithGetterAndSetter.txt b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/propertyWithGetterAndSetter.txt index 97c3aa33ae5..cae9a57e1f8 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/propertyWithGetterAndSetter.txt +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/propertyWithGetterAndSetter.txt @@ -1,3 +1,4 @@ + RAW_FIR: FILE: propertyWithGetterAndSetter.kt public? final? [RAW_FIR] fun resolveMe(): R|kotlin/Unit| { diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/propertyWithInitializer.txt b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/propertyWithInitializer.txt index d4846cc803d..83ade361fb6 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/propertyWithInitializer.txt +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/propertyWithInitializer.txt @@ -1,3 +1,4 @@ + RAW_FIR: FILE: propertyWithInitializer.kt public? final? [RAW_FIR] fun resolveMe(): R|kotlin/Unit| { diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/secondaryConstructor.txt b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/secondaryConstructor.txt index f74344f15be..e12c240b64e 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/secondaryConstructor.txt +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/secondaryConstructor.txt @@ -1,3 +1,4 @@ + RAW_FIR: FILE: secondaryConstructor.kt public? final? [RAW_FIR] fun resolveMe(): R|kotlin/Unit| { diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/superTypes.txt b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/superTypes.txt index 6ee704e3e94..889f2f59ee1 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/superTypes.txt +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/superTypes.txt @@ -1,3 +1,4 @@ + RAW_FIR: FILE: superTypes.kt public? open [RAW_FIR] class A : R|kotlin/Any| { diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/superTypesLoop.txt b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/superTypesLoop.txt index 35b0d36e844..2819ec46e48 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/superTypesLoop.txt +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/superTypesLoop.txt @@ -1,3 +1,4 @@ + RAW_FIR: FILE: superTypesLoop.kt public? open [RAW_FIR] class resolveMe : C { diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/topLevelFunctions.txt b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/topLevelFunctions.txt index 2e31a9aaed7..e5d5e83d16b 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/topLevelFunctions.txt +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/topLevelFunctions.txt @@ -1,3 +1,4 @@ + RAW_FIR: FILE: topLevelFunctions.kt public? final? [RAW_FIR] fun resolveMe(): R|kotlin/Unit| { diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/topLevelFunctionsWithExpressionBodyAndExplicitType.txt b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/topLevelFunctionsWithExpressionBodyAndExplicitType.txt index bd0f66c45e1..93315662c42 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/topLevelFunctionsWithExpressionBodyAndExplicitType.txt +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/topLevelFunctionsWithExpressionBodyAndExplicitType.txt @@ -1,3 +1,4 @@ + RAW_FIR: FILE: topLevelFunctionsWithExpressionBodyAndExplicitType.kt public? final? [RAW_FIR] fun resolveMe(): R|kotlin/Unit| { diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/topLevelFunctionsWithImplicitType.txt b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/topLevelFunctionsWithImplicitType.txt index 95e03bb47d1..68bc5ce8974 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/topLevelFunctionsWithImplicitType.txt +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/testdata/lazyResolve/topLevelFunctionsWithImplicitType.txt @@ -1,3 +1,4 @@ + RAW_FIR: FILE: topLevelFunctionsWithImplicitType.kt public? final? [RAW_FIR] fun resolveMe(): R|kotlin/Unit| { diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDataClassConverters.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDataClassConverters.kt index 4d9da975684..79c4acc2bf5 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDataClassConverters.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDataClassConverters.kt @@ -278,6 +278,22 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert token, ) } + add(FirErrors.DEPRECATION_ERROR) { firDiagnostic -> + DeprecationErrorImpl( + firSymbolBuilder.buildSymbol(firDiagnostic.a.fir as FirDeclaration), + firDiagnostic.b, + firDiagnostic as FirPsiDiagnostic, + token, + ) + } + add(FirErrors.DEPRECATION) { firDiagnostic -> + DeprecationImpl( + firSymbolBuilder.buildSymbol(firDiagnostic.a.fir as FirDeclaration), + firDiagnostic.b, + firDiagnostic as FirPsiDiagnostic, + token, + ) + } add(FirErrors.CREATING_AN_INSTANCE_OF_ABSTRACT_CLASS) { firDiagnostic -> CreatingAnInstanceOfAbstractClassImpl( firDiagnostic as FirPsiDiagnostic, diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDiagnostics.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDiagnostics.kt index 51e4df33a89..bfbc36038dd 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDiagnostics.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDiagnostics.kt @@ -217,6 +217,18 @@ sealed class KtFirDiagnostic : KtDiagnosticWithPsi { override val diagnosticClass get() = NoThis::class } + abstract class DeprecationError : KtFirDiagnostic() { + override val diagnosticClass get() = DeprecationError::class + abstract val reference: KtSymbol + abstract val message: String + } + + abstract class Deprecation : KtFirDiagnostic() { + override val diagnosticClass get() = Deprecation::class + abstract val reference: KtSymbol + abstract val message: String + } + abstract class CreatingAnInstanceOfAbstractClass : KtFirDiagnostic() { override val diagnosticClass get() = CreatingAnInstanceOfAbstractClass::class } diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDiagnosticsImpl.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDiagnosticsImpl.kt index f6188d23da5..a7167166c51 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDiagnosticsImpl.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/diagnostics/KtFirDiagnosticsImpl.kt @@ -323,6 +323,24 @@ internal class NoThisImpl( override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic) } +internal class DeprecationErrorImpl( + override val reference: KtSymbol, + override val message: String, + firDiagnostic: FirPsiDiagnostic, + override val token: ValidityToken, +) : KtFirDiagnostic.DeprecationError(), KtAbstractFirDiagnostic { + override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic) +} + +internal class DeprecationImpl( + override val reference: KtSymbol, + override val message: String, + firDiagnostic: FirPsiDiagnostic, + override val token: ValidityToken, +) : KtFirDiagnostic.Deprecation(), KtAbstractFirDiagnostic { + override val firDiagnostic: FirPsiDiagnostic by weakRef(firDiagnostic) +} + internal class CreatingAnInstanceOfAbstractClassImpl( firDiagnostic: FirPsiDiagnostic, override val token: ValidityToken,