K2: Use ClassId instead of FqName in FIR diagnostics
IJ-CR-118828 KT-MR-13391
This commit is contained in:
committed by
Space Team
parent
061734d84b
commit
1766d0e86a
+6
-6
@@ -976,25 +976,25 @@ sealed interface KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
|
||||
|
||||
interface OptInUsage : KtFirDiagnostic<PsiElement> {
|
||||
override val diagnosticClass get() = OptInUsage::class
|
||||
val optInMarkerFqName: FqName
|
||||
val optInMarkerClassId: ClassId
|
||||
val message: String
|
||||
}
|
||||
|
||||
interface OptInUsageError : KtFirDiagnostic<PsiElement> {
|
||||
override val diagnosticClass get() = OptInUsageError::class
|
||||
val optInMarkerFqName: FqName
|
||||
val optInMarkerClassId: ClassId
|
||||
val message: String
|
||||
}
|
||||
|
||||
interface OptInOverride : KtFirDiagnostic<PsiElement> {
|
||||
override val diagnosticClass get() = OptInOverride::class
|
||||
val optInMarkerFqName: FqName
|
||||
val optInMarkerClassId: ClassId
|
||||
val message: String
|
||||
}
|
||||
|
||||
interface OptInOverrideError : KtFirDiagnostic<PsiElement> {
|
||||
override val diagnosticClass get() = OptInOverrideError::class
|
||||
val optInMarkerFqName: FqName
|
||||
val optInMarkerClassId: ClassId
|
||||
val message: String
|
||||
}
|
||||
|
||||
@@ -1016,7 +1016,7 @@ sealed interface KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
|
||||
|
||||
interface OptInArgumentIsNotMarker : KtFirDiagnostic<KtAnnotationEntry> {
|
||||
override val diagnosticClass get() = OptInArgumentIsNotMarker::class
|
||||
val notMarkerFqName: FqName
|
||||
val notMarkerClassId: ClassId
|
||||
}
|
||||
|
||||
interface OptInMarkerWithWrongTarget : KtFirDiagnostic<KtAnnotationEntry> {
|
||||
@@ -1799,7 +1799,7 @@ sealed interface KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
|
||||
|
||||
interface PlatformClassMappedToKotlin : KtFirDiagnostic<PsiElement> {
|
||||
override val diagnosticClass get() = PlatformClassMappedToKotlin::class
|
||||
val kotlinClass: FqName
|
||||
val kotlinClass: ClassId
|
||||
}
|
||||
|
||||
interface InferredTypeVariableIntoEmptyIntersectionError : KtFirDiagnostic<PsiElement> {
|
||||
|
||||
+6
-6
@@ -1170,28 +1170,28 @@ internal class WrongJsQualifierImpl(
|
||||
) : KtAbstractFirDiagnostic<KtElement>(firDiagnostic, token), KtFirDiagnostic.WrongJsQualifier
|
||||
|
||||
internal class OptInUsageImpl(
|
||||
override val optInMarkerFqName: FqName,
|
||||
override val optInMarkerClassId: ClassId,
|
||||
override val message: String,
|
||||
firDiagnostic: KtPsiDiagnostic,
|
||||
token: KtLifetimeToken,
|
||||
) : KtAbstractFirDiagnostic<PsiElement>(firDiagnostic, token), KtFirDiagnostic.OptInUsage
|
||||
|
||||
internal class OptInUsageErrorImpl(
|
||||
override val optInMarkerFqName: FqName,
|
||||
override val optInMarkerClassId: ClassId,
|
||||
override val message: String,
|
||||
firDiagnostic: KtPsiDiagnostic,
|
||||
token: KtLifetimeToken,
|
||||
) : KtAbstractFirDiagnostic<PsiElement>(firDiagnostic, token), KtFirDiagnostic.OptInUsageError
|
||||
|
||||
internal class OptInOverrideImpl(
|
||||
override val optInMarkerFqName: FqName,
|
||||
override val optInMarkerClassId: ClassId,
|
||||
override val message: String,
|
||||
firDiagnostic: KtPsiDiagnostic,
|
||||
token: KtLifetimeToken,
|
||||
) : KtAbstractFirDiagnostic<PsiElement>(firDiagnostic, token), KtFirDiagnostic.OptInOverride
|
||||
|
||||
internal class OptInOverrideErrorImpl(
|
||||
override val optInMarkerFqName: FqName,
|
||||
override val optInMarkerClassId: ClassId,
|
||||
override val message: String,
|
||||
firDiagnostic: KtPsiDiagnostic,
|
||||
token: KtLifetimeToken,
|
||||
@@ -1218,7 +1218,7 @@ internal class OptInWithoutArgumentsImpl(
|
||||
) : KtAbstractFirDiagnostic<KtAnnotationEntry>(firDiagnostic, token), KtFirDiagnostic.OptInWithoutArguments
|
||||
|
||||
internal class OptInArgumentIsNotMarkerImpl(
|
||||
override val notMarkerFqName: FqName,
|
||||
override val notMarkerClassId: ClassId,
|
||||
firDiagnostic: KtPsiDiagnostic,
|
||||
token: KtLifetimeToken,
|
||||
) : KtAbstractFirDiagnostic<KtAnnotationEntry>(firDiagnostic, token), KtFirDiagnostic.OptInArgumentIsNotMarker
|
||||
@@ -2161,7 +2161,7 @@ internal class RedundantNullableImpl(
|
||||
) : KtAbstractFirDiagnostic<KtTypeReference>(firDiagnostic, token), KtFirDiagnostic.RedundantNullable
|
||||
|
||||
internal class PlatformClassMappedToKotlinImpl(
|
||||
override val kotlinClass: FqName,
|
||||
override val kotlinClass: ClassId,
|
||||
firDiagnostic: KtPsiDiagnostic,
|
||||
token: KtLifetimeToken,
|
||||
) : KtAbstractFirDiagnostic<PsiElement>(firDiagnostic, token), KtFirDiagnostic.PlatformClassMappedToKotlin
|
||||
|
||||
+7
-8
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
@@ -30,7 +30,6 @@ import org.jetbrains.kotlin.lexer.KtModifierKeywordToken
|
||||
import org.jetbrains.kotlin.metadata.deserialization.VersionRequirement
|
||||
import org.jetbrains.kotlin.name.CallableId
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.resolve.ForbiddenNamedArgumentsTarget
|
||||
@@ -402,19 +401,19 @@ object DIAGNOSTICS_LIST : DiagnosticList("FirErrors") {
|
||||
|
||||
val OPT_IN by object : DiagnosticGroup("OptIn") {
|
||||
val OPT_IN_USAGE by warning<PsiElement>(PositioningStrategy.REFERENCE_BY_QUALIFIED) {
|
||||
parameter<FqName>("optInMarkerFqName")
|
||||
parameter<ClassId>("optInMarkerClassId")
|
||||
parameter<String>("message")
|
||||
}
|
||||
val OPT_IN_USAGE_ERROR by error<PsiElement>(PositioningStrategy.REFERENCE_BY_QUALIFIED) {
|
||||
parameter<FqName>("optInMarkerFqName")
|
||||
parameter<ClassId>("optInMarkerClassId")
|
||||
parameter<String>("message")
|
||||
}
|
||||
val OPT_IN_OVERRIDE by warning<PsiElement>(PositioningStrategy.DECLARATION_NAME) {
|
||||
parameter<FqName>("optInMarkerFqName")
|
||||
parameter<ClassId>("optInMarkerClassId")
|
||||
parameter<String>("message")
|
||||
}
|
||||
val OPT_IN_OVERRIDE_ERROR by error<PsiElement>(PositioningStrategy.DECLARATION_NAME) {
|
||||
parameter<FqName>("optInMarkerFqName")
|
||||
parameter<ClassId>("optInMarkerClassId")
|
||||
parameter<String>("message")
|
||||
}
|
||||
|
||||
@@ -424,7 +423,7 @@ object DIAGNOSTICS_LIST : DiagnosticList("FirErrors") {
|
||||
|
||||
val OPT_IN_WITHOUT_ARGUMENTS by warning<KtAnnotationEntry>()
|
||||
val OPT_IN_ARGUMENT_IS_NOT_MARKER by warning<KtAnnotationEntry> {
|
||||
parameter<FqName>("notMarkerFqName")
|
||||
parameter<ClassId>("notMarkerClassId")
|
||||
}
|
||||
val OPT_IN_MARKER_WITH_WRONG_TARGET by error<KtAnnotationEntry> {
|
||||
parameter<String>("target")
|
||||
@@ -849,7 +848,7 @@ object DIAGNOSTICS_LIST : DiagnosticList("FirErrors") {
|
||||
val REDUNDANT_NULLABLE by warning<KtTypeReference>(PositioningStrategy.REDUNDANT_NULLABLE)
|
||||
|
||||
val PLATFORM_CLASS_MAPPED_TO_KOTLIN by warning<PsiElement>(PositioningStrategy.REFERENCED_NAME_BY_QUALIFIED) {
|
||||
parameter<FqName>("kotlinClass")
|
||||
parameter<ClassId>("kotlinClass")
|
||||
}
|
||||
|
||||
val INFERRED_TYPE_VARIABLE_INTO_EMPTY_INTERSECTION by deprecationError<PsiElement>(
|
||||
|
||||
+6
-7
@@ -69,7 +69,6 @@ import org.jetbrains.kotlin.lexer.KtModifierKeywordToken
|
||||
import org.jetbrains.kotlin.metadata.deserialization.VersionRequirement.Version
|
||||
import org.jetbrains.kotlin.name.CallableId
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.psi.KtAnnotationEntry
|
||||
import org.jetbrains.kotlin.psi.KtAnonymousInitializer
|
||||
@@ -311,15 +310,15 @@ object FirErrors {
|
||||
val POTENTIALLY_NON_REPORTED_ANNOTATION: KtDiagnosticFactory0 by warning0<KtAnnotationEntry>()
|
||||
|
||||
// OptIn
|
||||
val OPT_IN_USAGE: KtDiagnosticFactory2<FqName, String> by warning2<PsiElement, FqName, String>(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED)
|
||||
val OPT_IN_USAGE_ERROR: KtDiagnosticFactory2<FqName, String> by error2<PsiElement, FqName, String>(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED)
|
||||
val OPT_IN_OVERRIDE: KtDiagnosticFactory2<FqName, String> by warning2<PsiElement, FqName, String>(SourceElementPositioningStrategies.DECLARATION_NAME)
|
||||
val OPT_IN_OVERRIDE_ERROR: KtDiagnosticFactory2<FqName, String> by error2<PsiElement, FqName, String>(SourceElementPositioningStrategies.DECLARATION_NAME)
|
||||
val OPT_IN_USAGE: KtDiagnosticFactory2<ClassId, String> by warning2<PsiElement, ClassId, String>(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED)
|
||||
val OPT_IN_USAGE_ERROR: KtDiagnosticFactory2<ClassId, String> by error2<PsiElement, ClassId, String>(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED)
|
||||
val OPT_IN_OVERRIDE: KtDiagnosticFactory2<ClassId, String> by warning2<PsiElement, ClassId, String>(SourceElementPositioningStrategies.DECLARATION_NAME)
|
||||
val OPT_IN_OVERRIDE_ERROR: KtDiagnosticFactory2<ClassId, String> by error2<PsiElement, ClassId, String>(SourceElementPositioningStrategies.DECLARATION_NAME)
|
||||
val OPT_IN_IS_NOT_ENABLED: KtDiagnosticFactory0 by warning0<KtAnnotationEntry>(SourceElementPositioningStrategies.REFERENCED_NAME_BY_QUALIFIED)
|
||||
val OPT_IN_CAN_ONLY_BE_USED_AS_ANNOTATION: KtDiagnosticFactory0 by error0<PsiElement>()
|
||||
val OPT_IN_MARKER_CAN_ONLY_BE_USED_AS_ANNOTATION_OR_ARGUMENT_IN_OPT_IN: KtDiagnosticFactory0 by error0<PsiElement>()
|
||||
val OPT_IN_WITHOUT_ARGUMENTS: KtDiagnosticFactory0 by warning0<KtAnnotationEntry>()
|
||||
val OPT_IN_ARGUMENT_IS_NOT_MARKER: KtDiagnosticFactory1<FqName> by warning1<KtAnnotationEntry, FqName>()
|
||||
val OPT_IN_ARGUMENT_IS_NOT_MARKER: KtDiagnosticFactory1<ClassId> by warning1<KtAnnotationEntry, ClassId>()
|
||||
val OPT_IN_MARKER_WITH_WRONG_TARGET: KtDiagnosticFactory1<String> by error1<KtAnnotationEntry, String>()
|
||||
val OPT_IN_MARKER_WITH_WRONG_RETENTION: KtDiagnosticFactory0 by error0<KtAnnotationEntry>()
|
||||
val OPT_IN_MARKER_ON_WRONG_TARGET: KtDiagnosticFactory1<String> by error1<KtAnnotationEntry, String>()
|
||||
@@ -489,7 +488,7 @@ object FirErrors {
|
||||
val TYPE_VARIANCE_CONFLICT_IN_EXPANDED_TYPE: KtDiagnosticFactory4<FirTypeParameterSymbol, Variance, Variance, ConeKotlinType> by error4<PsiElement, FirTypeParameterSymbol, Variance, Variance, ConeKotlinType>(SourceElementPositioningStrategies.DECLARATION_SIGNATURE_OR_DEFAULT)
|
||||
val SMARTCAST_IMPOSSIBLE: KtDiagnosticFactory4<ConeKotlinType, FirExpression, String, Boolean> by error4<KtExpression, ConeKotlinType, FirExpression, String, Boolean>()
|
||||
val REDUNDANT_NULLABLE: KtDiagnosticFactory0 by warning0<KtTypeReference>(SourceElementPositioningStrategies.REDUNDANT_NULLABLE)
|
||||
val PLATFORM_CLASS_MAPPED_TO_KOTLIN: KtDiagnosticFactory1<FqName> by warning1<PsiElement, FqName>(SourceElementPositioningStrategies.REFERENCED_NAME_BY_QUALIFIED)
|
||||
val PLATFORM_CLASS_MAPPED_TO_KOTLIN: KtDiagnosticFactory1<ClassId> by warning1<PsiElement, ClassId>(SourceElementPositioningStrategies.REFERENCED_NAME_BY_QUALIFIED)
|
||||
val INFERRED_TYPE_VARIABLE_INTO_EMPTY_INTERSECTION: KtDiagnosticFactoryForDeprecation4<String, Collection<ConeKotlinType>, String, String> by deprecationError4<PsiElement, String, Collection<ConeKotlinType>, String, String>(ForbidInferringTypeVariablesIntoEmptyIntersection)
|
||||
val INFERRED_TYPE_VARIABLE_INTO_POSSIBLE_EMPTY_INTERSECTION: KtDiagnosticFactory4<String, Collection<ConeKotlinType>, String, String> by warning4<PsiElement, String, Collection<ConeKotlinType>, String, String>()
|
||||
val INCORRECT_LEFT_COMPONENT_OF_INTERSECTION: KtDiagnosticFactory0 by error0<KtTypeReference>()
|
||||
|
||||
+5
-5
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
@@ -10,13 +10,13 @@ import org.jetbrains.kotlin.config.AnalysisFlags
|
||||
import org.jetbrains.kotlin.config.LanguageFeature
|
||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.extractClassesFromArgument
|
||||
import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors
|
||||
import org.jetbrains.kotlin.diagnostics.reportOn
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.extractClassFromArgument
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.extractClassesFromArgument
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.modality
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors
|
||||
import org.jetbrains.kotlin.fir.declarations.FirClass
|
||||
import org.jetbrains.kotlin.fir.declarations.findArgumentByName
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.isFun
|
||||
@@ -102,7 +102,7 @@ object FirOptInAnnotationCallChecker : FirAnnotationCallChecker() {
|
||||
reporter.reportOn(
|
||||
source,
|
||||
FirErrors.OPT_IN_ARGUMENT_IS_NOT_MARKER,
|
||||
classSymbol.classId.asSingleFqName(),
|
||||
classSymbol.classId,
|
||||
context
|
||||
)
|
||||
}
|
||||
|
||||
+4
-5
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
@@ -303,10 +303,9 @@ object FirOptInUsageBaseChecker {
|
||||
Experimentality.Severity.WARNING -> FirErrors.OPT_IN_USAGE to "should"
|
||||
Experimentality.Severity.ERROR -> FirErrors.OPT_IN_USAGE_ERROR to "must"
|
||||
}
|
||||
val fqName = annotationClassId.asSingleFqName()
|
||||
val reportedMessage = message?.takeIf { it.isNotBlank() }
|
||||
?: OptInNames.buildDefaultDiagnosticMessage(OptInNames.buildMessagePrefix(verb), fqName.asString())
|
||||
reporter.reportOn(source, diagnostic, fqName, reportedMessage, context)
|
||||
?: OptInNames.buildDefaultDiagnosticMessage(OptInNames.buildMessagePrefix(verb), annotationClassId.asFqNameString())
|
||||
reporter.reportOn(source, diagnostic, annotationClassId, reportedMessage, context)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -332,7 +331,7 @@ object FirOptInUsageBaseChecker {
|
||||
verb,
|
||||
markerName = annotationClassId.asFqNameString()
|
||||
)
|
||||
reporter.reportOn(symbol.source, diagnostic, annotationClassId.asSingleFqName(), message, context)
|
||||
reporter.reportOn(symbol.source, diagnostic, annotationClassId, message, context)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
@@ -27,7 +27,7 @@ object PlatformClassMappedToKotlinImportsChecker : FirFileChecker() {
|
||||
|
||||
val kotlinClass = context.session.platformClassMapper.getCorrespondingKotlinClass(classId)
|
||||
if (kotlinClass != null) {
|
||||
reporter.reportOn(import.source, FirErrors.PLATFORM_CLASS_MAPPED_TO_KOTLIN, importedFqName, context)
|
||||
reporter.reportOn(import.source, FirErrors.PLATFORM_CLASS_MAPPED_TO_KOTLIN, classId, context)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
@@ -20,7 +20,7 @@ object PlatformClassMappedToKotlinTypeRefChecker : FirTypeRefChecker() {
|
||||
if (typeRef is FirResolvedTypeRef && typeRef.source != null) {
|
||||
val kotlinClass = context.session.platformClassMapper.getCorrespondingKotlinClass(typeRef.type.classId)
|
||||
if (kotlinClass != null) {
|
||||
reporter.reportOn(typeRef.source, FirErrors.PLATFORM_CLASS_MAPPED_TO_KOTLIN, kotlinClass.asSingleFqName(), context)
|
||||
reporter.reportOn(typeRef.source, FirErrors.PLATFORM_CLASS_MAPPED_TO_KOTLIN, kotlinClass, context)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user