From 69a13a32691ea3b952f763aa958e276128474718 Mon Sep 17 00:00:00 2001 From: Ivan Kochurkin Date: Tue, 7 Sep 2021 18:26:56 +0300 Subject: [PATCH] [FIR] Use getAnnotationByClassId instead of getAnnotationByFqName in JVM checkers --- .../diagnostics/FirJvmDiagnosticsList.kt | 4 ++-- .../analysis/diagnostics/jvm/FirJvmErrors.kt | 2 +- .../declaration/FirJvmDefaultChecker.kt | 8 ++++---- .../FirJvmFieldApplicabilityChecker.kt | 9 +++------ .../declaration/FirJvmRecordChecker.kt | 9 +++------ .../FirJvmSyntheticApplicabilityChecker.kt | 6 +++--- .../declaration/FirOverloadsChecker.kt | 7 +++---- .../FirRepeatableAnnotationChecker.kt | 16 +++++++-------- .../FirStrictfpApplicabilityChecker.kt | 7 +++---- .../FirSynchronizedAnnotationChecker.kt | 7 +++---- .../FirVolatileAnnotationChecker.kt | 8 ++++---- .../FirDeprecatedJavaAnnotationsChecker.kt | 15 +++++++------- .../analysis/checkers/FirAnnotationHelpers.kt | 14 ++++--------- .../FirOptInAnnotationClassChecker.kt | 1 + .../type/FirOptInUsageTypeRefChecker.kt | 2 +- .../fir/backend/jvm/FirJvmMangleComputer.kt | 1 - .../fir/declarations/FirAnnotationUtils.kt | 14 +++++++++++-- .../impl/FirDependenciesSymbolProviderImpl.kt | 1 - .../resolve/providers/impl/FirProviderImpl.kt | 2 +- .../providers/impl/FirTypeResolverImpl.kt | 1 - .../fir/scopes/impl/FirPackageMemberScope.kt | 1 - .../org/jetbrains/kotlin/load/java/JvmAbi.kt | 2 ++ .../kotlin/builtins/StandardNames.kt | 3 +++ .../src/org/jetbrains/kotlin/name/JvmNames.kt | 20 +++++++++++++++++++ .../low/level/api/util/declarationUtils.kt | 1 - .../api/fir/diagnostics/KtFirDiagnostics.kt | 4 ++-- .../fir/diagnostics/KtFirDiagnosticsImpl.kt | 4 ++-- .../pointers/KtFirEnumEntrySymbolPointer.kt | 4 ---- 28 files changed, 92 insertions(+), 81 deletions(-) diff --git a/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/FirJvmDiagnosticsList.kt b/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/FirJvmDiagnosticsList.kt index d4d4eba60e9..66a3955d2cf 100644 --- a/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/FirJvmDiagnosticsList.kt +++ b/compiler/fir/checkers/checkers-component-generator/src/org/jetbrains/kotlin/fir/checkers/generator/diagnostics/FirJvmDiagnosticsList.kt @@ -120,8 +120,8 @@ object JVM_DIAGNOSTICS_LIST : DiagnosticList("FirJvmErrors") { val NON_SOURCE_REPEATED_ANNOTATION by error() val REPEATED_ANNOTATION_TARGET6 by error() val REPEATED_ANNOTATION_WITH_CONTAINER by error { - parameter("name") - parameter("explicitContainerName") + parameter("name") + parameter("explicitContainerName") } val REPEATABLE_CONTAINER_MUST_HAVE_VALUE_ARRAY by deprecationError(RepeatableAnnotationContainerConstraints) { diff --git a/compiler/fir/checkers/checkers.jvm/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/jvm/FirJvmErrors.kt b/compiler/fir/checkers/checkers.jvm/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/jvm/FirJvmErrors.kt index 9e28bf08f0a..1c2500c775c 100644 --- a/compiler/fir/checkers/checkers.jvm/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/jvm/FirJvmErrors.kt +++ b/compiler/fir/checkers/checkers.jvm/gen/org/jetbrains/kotlin/fir/analysis/diagnostics/jvm/FirJvmErrors.kt @@ -97,7 +97,7 @@ object FirJvmErrors { // Repeatable Annotations val NON_SOURCE_REPEATED_ANNOTATION by error0() val REPEATED_ANNOTATION_TARGET6 by error0() - val REPEATED_ANNOTATION_WITH_CONTAINER by error2() + val REPEATED_ANNOTATION_WITH_CONTAINER by error2() val REPEATABLE_CONTAINER_MUST_HAVE_VALUE_ARRAY by deprecationError2(RepeatableAnnotationContainerConstraints) val REPEATABLE_CONTAINER_HAS_NON_DEFAULT_PARAMETER by deprecationError2(RepeatableAnnotationContainerConstraints) val REPEATABLE_CONTAINER_HAS_SHORTER_RETENTION by deprecationError4(RepeatableAnnotationContainerConstraints) diff --git a/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirJvmDefaultChecker.kt b/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirJvmDefaultChecker.kt index b18c645406e..2e8c69bb38c 100644 --- a/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirJvmDefaultChecker.kt +++ b/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirJvmDefaultChecker.kt @@ -28,8 +28,8 @@ import org.jetbrains.kotlin.fir.scopes.getDirectOverriddenFunctions import org.jetbrains.kotlin.fir.scopes.impl.FirClassUseSiteMemberScope import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirIntersectionCallableSymbol -import org.jetbrains.kotlin.name.JvmNames.JVM_DEFAULT_FQ_NAME -import org.jetbrains.kotlin.name.JvmNames.JVM_DEFAULT_NO_COMPATIBILITY_FQ_NAME +import org.jetbrains.kotlin.name.JvmNames.JVM_DEFAULT_CLASS_ID +import org.jetbrains.kotlin.name.JvmNames.JVM_DEFAULT_NO_COMPATIBILITY_CLASS_ID object FirJvmDefaultChecker : FirBasicDeclarationChecker() { override fun check(declaration: FirDeclaration, context: CheckerContext, reporter: DiagnosticReporter) { @@ -53,7 +53,7 @@ object FirJvmDefaultChecker : FirBasicDeclarationChecker() { return } } else { - val annotation = declaration.getAnnotationByFqName(JVM_DEFAULT_NO_COMPATIBILITY_FQ_NAME) + val annotation = declaration.getAnnotationByClassId(JVM_DEFAULT_NO_COMPATIBILITY_CLASS_ID) if (annotation != null) { if (isJvm6) { reporter.reportOn( @@ -140,7 +140,7 @@ object FirJvmDefaultChecker : FirBasicDeclarationChecker() { unsubstitutedScope.processFunctionsByName(member.name) {} val overriddenFunctions = unsubstitutedScope.getDirectOverriddenFunctions(member.symbol) - if (overriddenFunctions.any { it.getAnnotationByFqName(JVM_DEFAULT_FQ_NAME) != null }) { + if (overriddenFunctions.any { it.getAnnotationByClassId(JVM_DEFAULT_CLASS_ID) != null }) { reporter.reportOn(declaration.source, FirJvmErrors.JVM_DEFAULT_REQUIRED_FOR_OVERRIDE, context) } else if (jvmDefaultMode.isEnabled) { for (overriddenFunction in overriddenFunctions) { diff --git a/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirJvmFieldApplicabilityChecker.kt b/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirJvmFieldApplicabilityChecker.kt index 02c8e5fcd40..9d70d87a671 100644 --- a/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirJvmFieldApplicabilityChecker.kt +++ b/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirJvmFieldApplicabilityChecker.kt @@ -20,10 +20,7 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.DiagnosticReporter import org.jetbrains.kotlin.fir.analysis.diagnostics.jvm.FirJvmErrors import org.jetbrains.kotlin.fir.analysis.diagnostics.reportOn import org.jetbrains.kotlin.fir.containingClass -import org.jetbrains.kotlin.fir.declarations.FirFile -import org.jetbrains.kotlin.fir.declarations.FirProperty -import org.jetbrains.kotlin.fir.declarations.FirRegularClass -import org.jetbrains.kotlin.fir.declarations.getAnnotationByFqName +import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.declarations.utils.* import org.jetbrains.kotlin.fir.languageVersionSettings import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference @@ -40,7 +37,7 @@ import org.jetbrains.kotlin.psi.stubs.elements.KtParameterElementType object FirJvmFieldApplicabilityChecker : FirPropertyChecker() { override fun check(declaration: FirProperty, context: CheckerContext, reporter: DiagnosticReporter) { - val annotation = declaration.getAnnotationByFqName(JVM_FIELD_ANNOTATION_FQ_NAME) ?: return + val annotation = declaration.getAnnotationByClassId(JVM_FIELD_ANNOTATION_CLASS_ID) ?: return val session = context.session val containingClass = declaration.containingClass()?.toFirRegularClass(session) @@ -126,7 +123,7 @@ object FirJvmFieldApplicabilityChecker : FirPropertyChecker() { } private fun FirPropertySymbol.hasJvmFieldAnnotation(): Boolean { - return getAnnotationByFqName(JVM_FIELD_ANNOTATION_FQ_NAME) != null + return getAnnotationByClassId(JVM_FIELD_ANNOTATION_CLASS_ID) != null } private fun isInsideJvmMultifileClassFile(context: CheckerContext): Boolean { diff --git a/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirJvmRecordChecker.kt b/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirJvmRecordChecker.kt index 33484f1d331..f03bdedb546 100644 --- a/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirJvmRecordChecker.kt +++ b/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirJvmRecordChecker.kt @@ -16,10 +16,7 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.DiagnosticReporter import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors import org.jetbrains.kotlin.fir.analysis.diagnostics.jvm.FirJvmErrors import org.jetbrains.kotlin.fir.analysis.diagnostics.reportOn -import org.jetbrains.kotlin.fir.declarations.FirField -import org.jetbrains.kotlin.fir.declarations.FirProperty -import org.jetbrains.kotlin.fir.declarations.FirRegularClass -import org.jetbrains.kotlin.fir.declarations.getAnnotationByFqName +import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.declarations.utils.* import org.jetbrains.kotlin.fir.languageVersionSettings import org.jetbrains.kotlin.fir.types.ConeClassLikeType @@ -27,7 +24,7 @@ import org.jetbrains.kotlin.fir.types.classId import org.jetbrains.kotlin.fir.types.coneType import org.jetbrains.kotlin.fir.types.coneTypeSafe import org.jetbrains.kotlin.name.ClassId -import org.jetbrains.kotlin.name.JvmNames.JVM_RECORD_ANNOTATION_FQ_NAME +import org.jetbrains.kotlin.name.JvmNames.JVM_RECORD_ANNOTATION_CLASS_ID object FirJvmRecordChecker : FirRegularClassChecker() { private val JAVA_RECORD_CLASS_ID = ClassId.fromString("java/lang/Record") @@ -40,7 +37,7 @@ object FirJvmRecordChecker : FirRegularClassChecker() { } } - val annotationSource = declaration.getAnnotationByFqName(JVM_RECORD_ANNOTATION_FQ_NAME)?.source ?: return + val annotationSource = declaration.getAnnotationByClassId(JVM_RECORD_ANNOTATION_CLASS_ID)?.source ?: return val languageVersionSettings = context.session.languageVersionSettings if (!languageVersionSettings.supportsFeature(LanguageFeature.JvmRecordSupport)) { diff --git a/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirJvmSyntheticApplicabilityChecker.kt b/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirJvmSyntheticApplicabilityChecker.kt index 2938526f8b0..2d75b11d291 100644 --- a/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirJvmSyntheticApplicabilityChecker.kt +++ b/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirJvmSyntheticApplicabilityChecker.kt @@ -12,12 +12,12 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.DiagnosticReporter import org.jetbrains.kotlin.fir.analysis.diagnostics.jvm.FirJvmErrors import org.jetbrains.kotlin.fir.analysis.diagnostics.reportOn import org.jetbrains.kotlin.fir.declarations.FirProperty -import org.jetbrains.kotlin.fir.declarations.getAnnotationByFqName -import org.jetbrains.kotlin.name.JvmNames.JVM_SYNTHETIC_ANNOTATION_FQ_NAME +import org.jetbrains.kotlin.fir.declarations.getAnnotationByClassId +import org.jetbrains.kotlin.name.JvmNames.JVM_SYNTHETIC_ANNOTATION_CLASS_ID object FirJvmSyntheticApplicabilityChecker : FirPropertyChecker() { override fun check(declaration: FirProperty, context: CheckerContext, reporter: DiagnosticReporter) { - val annotation = declaration.delegateFieldSymbol?.getAnnotationByFqName(JVM_SYNTHETIC_ANNOTATION_FQ_NAME) + val annotation = declaration.delegateFieldSymbol?.getAnnotationByClassId(JVM_SYNTHETIC_ANNOTATION_CLASS_ID) if (annotation != null && annotation.useSiteTarget == AnnotationUseSiteTarget.PROPERTY_DELEGATE_FIELD) { reporter.reportOn(annotation.source, FirJvmErrors.JVM_SYNTHETIC_ON_DELEGATE, context) } diff --git a/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirOverloadsChecker.kt b/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirOverloadsChecker.kt index ecff8544947..4d5925b54af 100644 --- a/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirOverloadsChecker.kt +++ b/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirOverloadsChecker.kt @@ -17,18 +17,17 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.reportOn import org.jetbrains.kotlin.fir.declarations.FirConstructor import org.jetbrains.kotlin.fir.declarations.FirFunction import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction -import org.jetbrains.kotlin.fir.declarations.getAnnotationByFqName +import org.jetbrains.kotlin.fir.declarations.getAnnotationByClassId import org.jetbrains.kotlin.fir.declarations.utils.isAbstract import org.jetbrains.kotlin.fir.declarations.utils.isActual import org.jetbrains.kotlin.fir.declarations.utils.isLocal import org.jetbrains.kotlin.fir.declarations.utils.visibility import org.jetbrains.kotlin.fir.resolve.dfa.cfg.isLocalClassOrAnonymousObject -import org.jetbrains.kotlin.name.FqName -import org.jetbrains.kotlin.name.JvmNames.JVM_OVERLOADS_FQ_NAME +import org.jetbrains.kotlin.name.JvmNames.JVM_OVERLOADS_CLASS_ID object FirOverloadsChecker : FirFunctionChecker() { override fun check(declaration: FirFunction, context: CheckerContext, reporter: DiagnosticReporter) { - val annotation = declaration.getAnnotationByFqName(JVM_OVERLOADS_FQ_NAME) ?: return + val annotation = declaration.getAnnotationByClassId(JVM_OVERLOADS_CLASS_ID) ?: return //todo need to have expect declaration here to check if it has default values if (declaration.isActual) return diff --git a/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirRepeatableAnnotationChecker.kt b/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirRepeatableAnnotationChecker.kt index b932c15ed4c..091538397d3 100644 --- a/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirRepeatableAnnotationChecker.kt +++ b/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirRepeatableAnnotationChecker.kt @@ -24,7 +24,6 @@ import org.jetbrains.kotlin.fir.expressions.* import org.jetbrains.kotlin.fir.java.JavaSymbolProvider import org.jetbrains.kotlin.fir.languageVersionSettings import org.jetbrains.kotlin.fir.resolve.defaultType -import org.jetbrains.kotlin.fir.resolve.fqName import org.jetbrains.kotlin.fir.resolve.symbolProvider import org.jetbrains.kotlin.fir.scopes.getSingleClassifier import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol @@ -33,7 +32,6 @@ import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol import org.jetbrains.kotlin.fir.types.* import org.jetbrains.kotlin.load.java.JvmAbi import org.jetbrains.kotlin.name.ClassId -import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name object FirRepeatableAnnotationChecker : FirAnnotatedDeclarationChecker() { @@ -68,11 +66,11 @@ object FirRepeatableAnnotationChecker : FirAnnotatedDeclarationChecker() { // on the same element. // See https://docs.oracle.com/javase/specs/jls/se16/html/jls-9.html#jls-9.7.5. val explicitContainer = annotationClass.resolveContainerAnnotation() - if (explicitContainer != null && annotations.any { it.fqName(session) == explicitContainer }) { + if (explicitContainer != null && annotations.any { it.classId == explicitContainer }) { reporter.reportOn( annotation.source, FirJvmErrors.REPEATED_ANNOTATION_WITH_CONTAINER, - fqName, + classId, explicitContainer, context ) @@ -86,13 +84,13 @@ object FirRepeatableAnnotationChecker : FirAnnotatedDeclarationChecker() { } if (declaration is FirRegularClass) { - val javaRepeatable = annotations.find { it.fqName(session) == JAVA_REPEATABLE_ANNOTATION } + val javaRepeatable = annotations.find { it.classId == JAVA_REPEATABLE_ANNOTATION } if (javaRepeatable != null) { withSuppressedDiagnostics(javaRepeatable, context) { checkJavaRepeatableAnnotationDeclaration(javaRepeatable, declaration, context, reporter) } } else { - val kotlinRepeatable = annotations.find { it.fqName(session) == StandardNames.FqNames.repeatable } + val kotlinRepeatable = annotations.find { it.classId == StandardNames.FqNames.repeatableClassId } if (kotlinRepeatable != null) { withSuppressedDiagnostics(kotlinRepeatable, context) { checkKotlinRepeatableAnnotationDeclaration(kotlinRepeatable, declaration, context, reporter) @@ -102,10 +100,10 @@ object FirRepeatableAnnotationChecker : FirAnnotatedDeclarationChecker() { } } - private fun FirClassLikeSymbol<*>.resolveContainerAnnotation(): FqName? { + private fun FirClassLikeSymbol<*>.resolveContainerAnnotation(): ClassId? { val repeatableAnnotation = - getAnnotationByFqName(StandardNames.FqNames.repeatable) ?: getAnnotationByFqName(JAVA_REPEATABLE_ANNOTATION) ?: return null - return repeatableAnnotation.resolveContainerAnnotation()?.asSingleFqName() + getAnnotationByClassId(StandardNames.FqNames.repeatableClassId) ?: getAnnotationByClassId(JAVA_REPEATABLE_ANNOTATION) ?: return null + return repeatableAnnotation.resolveContainerAnnotation() } private fun FirAnnotationCall.resolveContainerAnnotation(): ClassId? { diff --git a/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirStrictfpApplicabilityChecker.kt b/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirStrictfpApplicabilityChecker.kt index 848e918c1c9..79d173f1af2 100644 --- a/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirStrictfpApplicabilityChecker.kt +++ b/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirStrictfpApplicabilityChecker.kt @@ -11,13 +11,12 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.DiagnosticReporter import org.jetbrains.kotlin.fir.analysis.diagnostics.jvm.FirJvmErrors import org.jetbrains.kotlin.fir.analysis.diagnostics.reportOn import org.jetbrains.kotlin.fir.declarations.FirClass -import org.jetbrains.kotlin.fir.declarations.getAnnotationByFqName -import org.jetbrains.kotlin.name.FqName -import org.jetbrains.kotlin.name.JvmNames.STRICTFP_ANNOTATION_FQ_NAME +import org.jetbrains.kotlin.fir.declarations.getAnnotationByClassId +import org.jetbrains.kotlin.name.JvmNames.STRICTFP_ANNOTATION_CLASS_ID object FirStrictfpApplicabilityChecker : FirClassChecker() { override fun check(declaration: FirClass, context: CheckerContext, reporter: DiagnosticReporter) { - val annotation = declaration.getAnnotationByFqName(STRICTFP_ANNOTATION_FQ_NAME) ?: return + val annotation = declaration.getAnnotationByClassId(STRICTFP_ANNOTATION_CLASS_ID) ?: return reporter.reportOn(annotation.source, FirJvmErrors.STRICTFP_ON_CLASS, context) } } \ No newline at end of file diff --git a/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirSynchronizedAnnotationChecker.kt b/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirSynchronizedAnnotationChecker.kt index f4f4e8d6bb1..810e724c798 100644 --- a/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirSynchronizedAnnotationChecker.kt +++ b/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirSynchronizedAnnotationChecker.kt @@ -14,15 +14,14 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.DiagnosticReporter import org.jetbrains.kotlin.fir.analysis.diagnostics.jvm.FirJvmErrors import org.jetbrains.kotlin.fir.analysis.diagnostics.reportOn import org.jetbrains.kotlin.fir.declarations.FirFunction -import org.jetbrains.kotlin.fir.declarations.getAnnotationByFqName +import org.jetbrains.kotlin.fir.declarations.getAnnotationByClassId import org.jetbrains.kotlin.fir.declarations.utils.isAbstract import org.jetbrains.kotlin.fir.declarations.utils.isInline -import org.jetbrains.kotlin.name.FqName -import org.jetbrains.kotlin.name.JvmNames.SYNCHRONIZED_ANNOTATION_FQ_NAME +import org.jetbrains.kotlin.name.JvmNames.SYNCHRONIZED_ANNOTATION_CLASS_ID object FirSynchronizedAnnotationChecker : FirFunctionChecker() { override fun check(declaration: FirFunction, context: CheckerContext, reporter: DiagnosticReporter) { - val annotation = declaration.getAnnotationByFqName(SYNCHRONIZED_ANNOTATION_FQ_NAME) ?: return + val annotation = declaration.getAnnotationByClassId(SYNCHRONIZED_ANNOTATION_CLASS_ID) ?: return if (declaration.isInline) { reporter.reportOn(annotation.source, FirJvmErrors.SYNCHRONIZED_ON_INLINE, context) diff --git a/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirVolatileAnnotationChecker.kt b/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirVolatileAnnotationChecker.kt index 62a79ce3d4b..12b550843ec 100644 --- a/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirVolatileAnnotationChecker.kt +++ b/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/declaration/FirVolatileAnnotationChecker.kt @@ -12,19 +12,19 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.DiagnosticReporter import org.jetbrains.kotlin.fir.analysis.diagnostics.jvm.FirJvmErrors import org.jetbrains.kotlin.fir.analysis.diagnostics.reportOn import org.jetbrains.kotlin.fir.declarations.FirProperty -import org.jetbrains.kotlin.fir.declarations.getAnnotationByFqName -import org.jetbrains.kotlin.name.JvmNames.VOLATILE_ANNOTATION_FQ_NAME +import org.jetbrains.kotlin.fir.declarations.getAnnotationByClassId +import org.jetbrains.kotlin.name.JvmNames.VOLATILE_ANNOTATION_CLASS_ID object FirVolatileAnnotationChecker : FirPropertyChecker() { override fun check(declaration: FirProperty, context: CheckerContext, reporter: DiagnosticReporter) { if (declaration.source?.kind != FirRealSourceElementKind) return - val fieldAnnotation = declaration.backingFieldSymbol.getAnnotationByFqName(VOLATILE_ANNOTATION_FQ_NAME) + val fieldAnnotation = declaration.backingFieldSymbol.getAnnotationByClassId(VOLATILE_ANNOTATION_CLASS_ID) if (fieldAnnotation != null && !declaration.isVar) { reporter.reportOn(fieldAnnotation.source, FirJvmErrors.VOLATILE_ON_VALUE, context) } - val delegateAnnotation = declaration.delegateFieldSymbol?.getAnnotationByFqName(VOLATILE_ANNOTATION_FQ_NAME) + val delegateAnnotation = declaration.delegateFieldSymbol?.getAnnotationByClassId(VOLATILE_ANNOTATION_CLASS_ID) if (delegateAnnotation != null) { reporter.reportOn(delegateAnnotation.source, FirJvmErrors.VOLATILE_ON_DELEGATE, context) } diff --git a/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/expression/FirDeprecatedJavaAnnotationsChecker.kt b/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/expression/FirDeprecatedJavaAnnotationsChecker.kt index 94174646e2d..407a756720e 100644 --- a/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/expression/FirDeprecatedJavaAnnotationsChecker.kt +++ b/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/expression/FirDeprecatedJavaAnnotationsChecker.kt @@ -16,23 +16,24 @@ import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.types.ConeClassLikeType import org.jetbrains.kotlin.fir.types.coneTypeSafe import org.jetbrains.kotlin.load.java.JvmAnnotationNames +import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.FqName object FirDeprecatedJavaAnnotationsChecker : FirAnnotationCallChecker() { - private val javaToKotlinNameMap: Map = + private val javaToKotlinNameMap: Map = mapOf( - JvmAnnotationNames.TARGET_ANNOTATION to StandardNames.FqNames.target, - JvmAnnotationNames.RETENTION_ANNOTATION to StandardNames.FqNames.retention, - JvmAnnotationNames.DEPRECATED_ANNOTATION to StandardNames.FqNames.deprecated, - JvmAnnotationNames.DOCUMENTED_ANNOTATION to StandardNames.FqNames.mustBeDocumented + ClassId.topLevel(JvmAnnotationNames.TARGET_ANNOTATION) to StandardNames.FqNames.target, + ClassId.topLevel(JvmAnnotationNames.RETENTION_ANNOTATION) to StandardNames.FqNames.retention, + ClassId.topLevel(JvmAnnotationNames.DEPRECATED_ANNOTATION) to StandardNames.FqNames.deprecated, + ClassId.topLevel(JvmAnnotationNames.DOCUMENTED_ANNOTATION) to StandardNames.FqNames.mustBeDocumented ) override fun check(expression: FirAnnotationCall, context: CheckerContext, reporter: DiagnosticReporter) { if (context.containingDeclarations.lastOrNull()?.source?.kind != FirRealSourceElementKind) return - + val lookupTag = expression.annotationTypeRef.coneTypeSafe()?.lookupTag ?: return - javaToKotlinNameMap[lookupTag.classId.asSingleFqName()]?.let { betterName -> + javaToKotlinNameMap[lookupTag.classId]?.let { betterName -> reporter.reportOn(expression.source, FirJvmErrors.DEPRECATED_JAVA_ANNOTATION, betterName, context) } } diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirAnnotationHelpers.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirAnnotationHelpers.kt index 6999392881d..30d35dc7cb2 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirAnnotationHelpers.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirAnnotationHelpers.kt @@ -81,21 +81,15 @@ fun FirClassLikeSymbol<*>.getAllowedAnnotationTargets(): Set { } fun FirAnnotatedDeclaration.getRetentionAnnotation(): FirAnnotationCall? { - return getAnnotationByFqName(StandardNames.FqNames.retention) + return getAnnotationByClassId(StandardNames.FqNames.retentionClassId) } fun FirAnnotatedDeclaration.getTargetAnnotation(): FirAnnotationCall? { - return getAnnotationByFqName(StandardNames.FqNames.target) + return getAnnotationByClassId(StandardNames.FqNames.targetClassId) } fun FirClassLikeSymbol<*>.getTargetAnnotation(): FirAnnotationCall? { - return getAnnotationByFqName(StandardNames.FqNames.target) -} - -fun FirAnnotationContainer.getAnnotationByClassId(classId: ClassId): FirAnnotationCall? { - return annotations.find { - (it.annotationTypeRef.coneType as? ConeClassLikeType)?.lookupTag?.classId == classId - } + return getAnnotationByClassId(StandardNames.FqNames.targetClassId) } fun FirExpression.extractClassesFromArgument(): List { @@ -140,7 +134,7 @@ fun FirClassLikeSymbol<*>.containsRepeatableAnnotation(session: FirSession): Boo } fun FirClassLikeSymbol<*>.getAnnotationRetention(): AnnotationRetention { - return getAnnotationByFqName(StandardNames.FqNames.retention)?.getRetention() ?: AnnotationRetention.RUNTIME + return getAnnotationByClassId(StandardNames.FqNames.retentionClassId)?.getRetention() ?: AnnotationRetention.RUNTIME } fun FirAnnotationContainer.getDefaultUseSiteTarget( diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirOptInAnnotationClassChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirOptInAnnotationClassChecker.kt index 9a8d7d32c2f..acc32826557 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirOptInAnnotationClassChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirOptInAnnotationClassChecker.kt @@ -13,6 +13,7 @@ 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.FirRegularClass +import org.jetbrains.kotlin.fir.declarations.getAnnotationByClassId import org.jetbrains.kotlin.resolve.checkers.Experimentality import org.jetbrains.kotlin.resolve.checkers.OptInNames diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/type/FirOptInUsageTypeRefChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/type/FirOptInUsageTypeRefChecker.kt index 1a85c4d57dd..1bad4cd71be 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/type/FirOptInUsageTypeRefChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/type/FirOptInUsageTypeRefChecker.kt @@ -8,12 +8,12 @@ package org.jetbrains.kotlin.fir.analysis.checkers.type import org.jetbrains.kotlin.fir.FirRealSourceElementKind import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext import org.jetbrains.kotlin.fir.analysis.checkers.expression.FirOptInUsageBaseChecker -import org.jetbrains.kotlin.fir.analysis.checkers.getAnnotationByClassId import org.jetbrains.kotlin.fir.analysis.diagnostics.DiagnosticReporter import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.EXPERIMENTAL_CAN_ONLY_BE_USED_AS_ANNOTATION import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.EXPERIMENTAL_MARKER_CAN_ONLY_BE_USED_AS_ANNOTATION_OR_ARGUMENT_IN_USE_EXPERIMENTAL import org.jetbrains.kotlin.fir.analysis.diagnostics.reportOn import org.jetbrains.kotlin.fir.declarations.FirResolvePhase +import org.jetbrains.kotlin.fir.declarations.getAnnotationByClassId import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.resolve.toSymbol import org.jetbrains.kotlin.fir.symbols.SymbolInternals diff --git a/compiler/fir/fir2ir/jvm-backend/src/org/jetbrains/kotlin/fir/backend/jvm/FirJvmMangleComputer.kt b/compiler/fir/fir2ir/jvm-backend/src/org/jetbrains/kotlin/fir/backend/jvm/FirJvmMangleComputer.kt index 94fdf99bdc3..d158b53ae51 100644 --- a/compiler/fir/fir2ir/jvm-backend/src/org/jetbrains/kotlin/fir/backend/jvm/FirJvmMangleComputer.kt +++ b/compiler/fir/fir2ir/jvm-backend/src/org/jetbrains/kotlin/fir/backend/jvm/FirJvmMangleComputer.kt @@ -23,7 +23,6 @@ import org.jetbrains.kotlin.fir.symbols.impl.FirTypeAliasSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol import org.jetbrains.kotlin.fir.types.* import org.jetbrains.kotlin.fir.visitors.FirVisitor -import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.SpecialNames import org.jetbrains.kotlin.util.capitalizeDecapitalize.toLowerCaseAsciiOnly import org.jetbrains.kotlin.utils.addToStdlib.ifNotEmpty 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 8ba3a9617d9..9663473e353 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 @@ -94,14 +94,24 @@ fun FirAnnotatedDeclaration.hasAnnotation(classId: ClassId): Boolean { return annotations.any { it.toAnnotationClassId() == classId } } +fun FirBasedSymbol.getAnnotationByFqName(fqName: FqName): FirAnnotationCall? where D : FirAnnotationContainer, D : FirDeclaration { + return fir.getAnnotationByFqName(fqName) +} + +fun FirBasedSymbol.getAnnotationByClassId(classId: ClassId): FirAnnotationCall? where D : FirAnnotationContainer, D : FirDeclaration { + return fir.getAnnotationByClassId(classId) +} + fun FirAnnotationContainer.getAnnotationByFqName(fqName: FqName): FirAnnotationCall? { return annotations.find { it.annotationTypeRef.coneTypeSafe()?.lookupTag?.classId?.asSingleFqName() == fqName } } -fun FirBasedSymbol.getAnnotationByFqName(fqName: FqName): FirAnnotationCall? where D : FirAnnotationContainer, D : FirDeclaration { - return fir.getAnnotationByFqName(fqName) +fun FirAnnotationContainer.getAnnotationByClassId(classId: ClassId): FirAnnotationCall? { + return annotations.find { + it.annotationTypeRef.coneTypeSafe()?.lookupTag?.classId == classId + } } fun FirAnnotationContainer.getAnnotationsByFqName(fqName: FqName): List = annotations.getAnnotationsByFqName(fqName) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirDependenciesSymbolProviderImpl.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirDependenciesSymbolProviderImpl.kt index 6c137b96a4a..064a5a9ca25 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirDependenciesSymbolProviderImpl.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirDependenciesSymbolProviderImpl.kt @@ -9,7 +9,6 @@ import org.jetbrains.kotlin.fir.* import org.jetbrains.kotlin.fir.caches.* import org.jetbrains.kotlin.fir.resolve.providers.FirDependenciesSymbolProvider import org.jetbrains.kotlin.fir.resolve.symbolProvider -import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProviderInternals import org.jetbrains.kotlin.name.CallableId import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirProviderImpl.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirProviderImpl.kt index 5adb84c5be4..014bd0f8f83 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirProviderImpl.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirProviderImpl.kt @@ -99,7 +99,7 @@ class FirProviderImpl(val session: FirSession, val kotlinScopeProvider: FirKotli state.fileMap.merge(packageName, listOf(file)) { a, b -> a + b } file.acceptChildren(FirRecorder, FirRecorderData(state, file, session.nameConflictsTracker)) } - + private class FirRecorderData( val state: State, val file: FirFile, diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirTypeResolverImpl.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirTypeResolverImpl.kt index d66533ecc24..de1fd0d8195 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirTypeResolverImpl.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirTypeResolverImpl.kt @@ -12,7 +12,6 @@ import org.jetbrains.kotlin.fir.ThreadSafeMutableState import org.jetbrains.kotlin.fir.declarations.FirEnumEntry import org.jetbrains.kotlin.fir.declarations.FirRegularClass import org.jetbrains.kotlin.fir.declarations.impl.FirOuterClassTypeParameterRef -import org.jetbrains.kotlin.fir.declarations.utils.classId import org.jetbrains.kotlin.fir.declarations.utils.isEnumClass import org.jetbrains.kotlin.fir.diagnostics.ConeSimpleDiagnostic import org.jetbrains.kotlin.fir.diagnostics.ConeUnexpectedTypeArgumentsError diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirPackageMemberScope.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirPackageMemberScope.kt index cba171ab3bf..413026f96c4 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirPackageMemberScope.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirPackageMemberScope.kt @@ -9,7 +9,6 @@ import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider import org.jetbrains.kotlin.fir.resolve.symbolProvider import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor -import org.jetbrains.kotlin.fir.resolve.transformers.ensureResolvedForCalls import org.jetbrains.kotlin.fir.scopes.FirScope import org.jetbrains.kotlin.fir.symbols.impl.FirClassifierSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol diff --git a/core/compiler.common.jvm/src/org/jetbrains/kotlin/load/java/JvmAbi.kt b/core/compiler.common.jvm/src/org/jetbrains/kotlin/load/java/JvmAbi.kt index 0215955ed59..74095cdcffe 100644 --- a/core/compiler.common.jvm/src/org/jetbrains/kotlin/load/java/JvmAbi.kt +++ b/core/compiler.common.jvm/src/org/jetbrains/kotlin/load/java/JvmAbi.kt @@ -16,6 +16,8 @@ object JvmAbi { @JvmField val JVM_FIELD_ANNOTATION_FQ_NAME = FqName("kotlin.jvm.JvmField") + @JvmField + val JVM_FIELD_ANNOTATION_CLASS_ID = ClassId.topLevel(JVM_FIELD_ANNOTATION_FQ_NAME) /** * Warning: use DEFAULT_IMPLS_CLASS_NAME and TypeMappingConfiguration.innerClassNameFactory when possible. diff --git a/core/compiler.common/src/org/jetbrains/kotlin/builtins/StandardNames.kt b/core/compiler.common/src/org/jetbrains/kotlin/builtins/StandardNames.kt index f16caddaeb8..c9aea5b3e0d 100644 --- a/core/compiler.common/src/org/jetbrains/kotlin/builtins/StandardNames.kt +++ b/core/compiler.common/src/org/jetbrains/kotlin/builtins/StandardNames.kt @@ -111,10 +111,13 @@ object StandardNames { @JvmField val parameterName: FqName = fqName("ParameterName") @JvmField val annotation: FqName = fqName("Annotation") @JvmField val target: FqName = annotationName("Target") + @JvmField val targetClassId: ClassId = ClassId.topLevel(target) @JvmField val annotationTarget: FqName = annotationName("AnnotationTarget") @JvmField val annotationRetention: FqName = annotationName("AnnotationRetention") @JvmField val retention: FqName = annotationName("Retention") + @JvmField val retentionClassId: ClassId = ClassId.topLevel(retention) @JvmField val repeatable: FqName = annotationName("Repeatable") + @JvmField val repeatableClassId: ClassId = ClassId.topLevel(repeatable) @JvmField val mustBeDocumented: FqName = annotationName("MustBeDocumented") @JvmField val unsafeVariance: FqName = fqName("UnsafeVariance") @JvmField val publishedApi: FqName = fqName("PublishedApi") diff --git a/core/compiler.common/src/org/jetbrains/kotlin/name/JvmNames.kt b/core/compiler.common/src/org/jetbrains/kotlin/name/JvmNames.kt index 5bdfa9c19e2..8b80e1fc3ef 100644 --- a/core/compiler.common/src/org/jetbrains/kotlin/name/JvmNames.kt +++ b/core/compiler.common/src/org/jetbrains/kotlin/name/JvmNames.kt @@ -16,22 +16,42 @@ object JvmNames { val JVM_PACKAGE_NAME_SHORT = JVM_PACKAGE_NAME.shortName().asString() val JVM_DEFAULT_FQ_NAME = FqName("kotlin.jvm.JvmDefault") + val JVM_DEFAULT_CLASS_ID = ClassId.topLevel(JVM_DEFAULT_FQ_NAME) val JVM_DEFAULT_NO_COMPATIBILITY_FQ_NAME = FqName("kotlin.jvm.JvmDefaultWithoutCompatibility") + val JVM_DEFAULT_NO_COMPATIBILITY_CLASS_ID = ClassId.topLevel(JVM_DEFAULT_NO_COMPATIBILITY_FQ_NAME) val JVM_OVERLOADS_FQ_NAME = FqName("kotlin.jvm.JvmOverloads") + val JVM_OVERLOADS_CLASS_ID = ClassId.topLevel(JVM_OVERLOADS_FQ_NAME) @JvmField val JVM_SYNTHETIC_ANNOTATION_FQ_NAME = FqName("kotlin.jvm.JvmSynthetic") + + @JvmField + val JVM_SYNTHETIC_ANNOTATION_CLASS_ID = ClassId.topLevel(JVM_SYNTHETIC_ANNOTATION_FQ_NAME) + + @JvmField val JVM_RECORD_ANNOTATION_FQ_NAME = FqName("kotlin.jvm.JvmRecord") + @JvmField + val JVM_RECORD_ANNOTATION_CLASS_ID = ClassId.topLevel(JVM_RECORD_ANNOTATION_FQ_NAME) + @JvmField val SYNCHRONIZED_ANNOTATION_FQ_NAME = FqName("kotlin.jvm.Synchronized") + @JvmField + val SYNCHRONIZED_ANNOTATION_CLASS_ID = ClassId.topLevel(SYNCHRONIZED_ANNOTATION_FQ_NAME) + @JvmField val STRICTFP_ANNOTATION_FQ_NAME = FqName("kotlin.jvm.Strictfp") + @JvmField + val STRICTFP_ANNOTATION_CLASS_ID = ClassId.topLevel(STRICTFP_ANNOTATION_FQ_NAME) + @JvmField val VOLATILE_ANNOTATION_FQ_NAME = FqName("kotlin.jvm.Volatile") + @JvmField + val VOLATILE_ANNOTATION_CLASS_ID = ClassId.topLevel(VOLATILE_ANNOTATION_FQ_NAME) + @JvmField val TRANSIENT_ANNOTATION_FQ_NAME = FqName("kotlin.jvm.Transient") diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/util/declarationUtils.kt b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/util/declarationUtils.kt index db1f47e762e..aea2ddab669 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/util/declarationUtils.kt +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/util/declarationUtils.kt @@ -12,7 +12,6 @@ import org.jetbrains.kotlin.fir.declarations.FirRegularClass import org.jetbrains.kotlin.fir.psi import org.jetbrains.kotlin.fir.realPsi import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider -import org.jetbrains.kotlin.idea.fir.low.level.api.api.InvalidFirElementTypeException import org.jetbrains.kotlin.idea.fir.low.level.api.api.throwUnexpectedFirElementError import org.jetbrains.kotlin.idea.fir.low.level.api.element.builder.getNonLocalContainingOrThisDeclaration import org.jetbrains.kotlin.idea.fir.low.level.api.file.builder.FirFileBuilder 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 5627a6339e0..daa658da5fa 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 @@ -2651,8 +2651,8 @@ sealed class KtFirDiagnostic : KtDiagnosticWithPsi { abstract class RepeatedAnnotationWithContainer : KtFirDiagnostic() { override val diagnosticClass get() = RepeatedAnnotationWithContainer::class - abstract val name: FqName - abstract val explicitContainerName: FqName + abstract val name: ClassId + abstract val explicitContainerName: ClassId } abstract class RepeatableContainerMustHaveValueArrayError : KtFirDiagnostic() { 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 5bb3ac7fdbc..967ce2f58cc 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 @@ -4310,8 +4310,8 @@ internal class RepeatedAnnotationTarget6Impl( } internal class RepeatedAnnotationWithContainerImpl( - override val name: FqName, - override val explicitContainerName: FqName, + override val name: ClassId, + override val explicitContainerName: ClassId, firDiagnostic: FirPsiDiagnostic, override val token: ValidityToken, ) : KtFirDiagnostic.RepeatedAnnotationWithContainer(), KtAbstractFirDiagnostic { diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/pointers/KtFirEnumEntrySymbolPointer.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/pointers/KtFirEnumEntrySymbolPointer.kt index 222ba2e3d22..8fadab1aaa5 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/pointers/KtFirEnumEntrySymbolPointer.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/symbols/pointers/KtFirEnumEntrySymbolPointer.kt @@ -6,16 +6,12 @@ package org.jetbrains.kotlin.idea.frontend.api.fir.symbols.pointers import org.jetbrains.kotlin.descriptors.ClassKind -import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.FirEnumEntry import org.jetbrains.kotlin.fir.declarations.FirRegularClass -import org.jetbrains.kotlin.fir.resolve.symbolProvider -import org.jetbrains.kotlin.fir.scopes.FirScope import org.jetbrains.kotlin.idea.frontend.api.KtAnalysisSession import org.jetbrains.kotlin.idea.frontend.api.fir.KtFirAnalysisSession import org.jetbrains.kotlin.idea.frontend.api.symbols.KtEnumEntrySymbol import org.jetbrains.kotlin.idea.frontend.api.symbols.pointers.KtSymbolPointer -import org.jetbrains.kotlin.ir.util.IdSignature import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.Name