Fix inaccurate report of DEPRECATED_ACCESS_TO_ENTRY_PROPERTY_FROM_ENUM
Add separate diagnostic for the case when it is reported on qualifiers. ^KT-64488
This commit is contained in:
committed by
Space Team
parent
02b5fed389
commit
23ae617ea0
+6
@@ -5031,6 +5031,12 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
|
||||
token,
|
||||
)
|
||||
}
|
||||
add(FirErrors.DEPRECATED_ACCESS_TO_ENTRIES_AS_QUALIFIER) { firDiagnostic ->
|
||||
DeprecatedAccessToEntriesAsQualifierImpl(
|
||||
firDiagnostic as KtPsiDiagnostic,
|
||||
token,
|
||||
)
|
||||
}
|
||||
add(FirErrors.DEPRECATED_DECLARATION_OF_ENUM_ENTRY) { firDiagnostic ->
|
||||
DeprecatedDeclarationOfEnumEntryImpl(
|
||||
firDiagnostic as KtPsiDiagnostic,
|
||||
|
||||
+4
@@ -3502,6 +3502,10 @@ sealed interface KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
|
||||
override val diagnosticClass get() = DeprecatedAccessToEnumEntryPropertyAsReference::class
|
||||
}
|
||||
|
||||
interface DeprecatedAccessToEntriesAsQualifier : KtFirDiagnostic<PsiElement> {
|
||||
override val diagnosticClass get() = DeprecatedAccessToEntriesAsQualifier::class
|
||||
}
|
||||
|
||||
interface DeprecatedDeclarationOfEnumEntry : KtFirDiagnostic<KtEnumEntry> {
|
||||
override val diagnosticClass get() = DeprecatedDeclarationOfEnumEntry::class
|
||||
}
|
||||
|
||||
+5
@@ -4224,6 +4224,11 @@ internal class DeprecatedAccessToEnumEntryPropertyAsReferenceImpl(
|
||||
token: KtLifetimeToken,
|
||||
) : KtAbstractFirDiagnostic<PsiElement>(firDiagnostic, token), KtFirDiagnostic.DeprecatedAccessToEnumEntryPropertyAsReference
|
||||
|
||||
internal class DeprecatedAccessToEntriesAsQualifierImpl(
|
||||
firDiagnostic: KtPsiDiagnostic,
|
||||
token: KtLifetimeToken,
|
||||
) : KtAbstractFirDiagnostic<PsiElement>(firDiagnostic, token), KtFirDiagnostic.DeprecatedAccessToEntriesAsQualifier
|
||||
|
||||
internal class DeprecatedDeclarationOfEnumEntryImpl(
|
||||
firDiagnostic: KtPsiDiagnostic,
|
||||
token: KtLifetimeToken,
|
||||
|
||||
+1
@@ -1779,6 +1779,7 @@ object DIAGNOSTICS_LIST : DiagnosticList("FirErrors") {
|
||||
val DEPRECATED_ACCESS_TO_ENTRY_PROPERTY_FROM_ENUM by warning<PsiElement>()
|
||||
val DEPRECATED_ACCESS_TO_ENTRIES_PROPERTY by warning<PsiElement>()
|
||||
val DEPRECATED_ACCESS_TO_ENUM_ENTRY_PROPERTY_AS_REFERENCE by warning<PsiElement>(PositioningStrategy.REFERENCED_NAME_BY_QUALIFIED)
|
||||
val DEPRECATED_ACCESS_TO_ENTRIES_AS_QUALIFIER by warning<PsiElement>()
|
||||
val DEPRECATED_DECLARATION_OF_ENUM_ENTRY by warning<KtEnumEntry>()
|
||||
}
|
||||
|
||||
|
||||
@@ -885,6 +885,7 @@ object FirErrors {
|
||||
val DEPRECATED_ACCESS_TO_ENTRY_PROPERTY_FROM_ENUM: KtDiagnosticFactory0 by warning0<PsiElement>()
|
||||
val DEPRECATED_ACCESS_TO_ENTRIES_PROPERTY: KtDiagnosticFactory0 by warning0<PsiElement>()
|
||||
val DEPRECATED_ACCESS_TO_ENUM_ENTRY_PROPERTY_AS_REFERENCE: KtDiagnosticFactory0 by warning0<PsiElement>(SourceElementPositioningStrategies.REFERENCED_NAME_BY_QUALIFIED)
|
||||
val DEPRECATED_ACCESS_TO_ENTRIES_AS_QUALIFIER: KtDiagnosticFactory0 by warning0<PsiElement>()
|
||||
val DEPRECATED_DECLARATION_OF_ENUM_ENTRY: KtDiagnosticFactory0 by warning0<KtEnumEntry>()
|
||||
|
||||
// Compatibility issues
|
||||
|
||||
+1
-1
@@ -21,6 +21,6 @@ object FirCustomEnumEntriesMigrationQualifierChecker : FirResolvedQualifierCheck
|
||||
if (expression.symbol?.name != StandardNames.ENUM_ENTRIES) return
|
||||
if (expression.nonFatalDiagnostics.none { it is ConeResolutionResultOverridesOtherToPreserveCompatibility }) return
|
||||
|
||||
reporter.reportOn(expression.source, FirErrors.DEPRECATED_ACCESS_TO_ENTRY_PROPERTY_FROM_ENUM, context)
|
||||
reporter.reportOn(expression.source, FirErrors.DEPRECATED_ACCESS_TO_ENTRIES_AS_QUALIFIER, context)
|
||||
}
|
||||
}
|
||||
|
||||
+5
@@ -192,6 +192,7 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.DELEGATION_NOT_TO
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.DELEGATION_SUPER_CALL_IN_ENUM_CONSTRUCTOR
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.DEPRECATED_ACCESS_TO_ENTRIES_PROPERTY
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.DEPRECATED_ACCESS_TO_ENTRY_PROPERTY_FROM_ENUM
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.DEPRECATED_ACCESS_TO_ENTRIES_AS_QUALIFIER
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.DEPRECATED_ACCESS_TO_ENUM_ENTRY_COMPANION_PROPERTY
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.DEPRECATED_ACCESS_TO_ENUM_ENTRY_PROPERTY_AS_REFERENCE
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.DEPRECATED_BINARY_MOD
|
||||
@@ -2595,6 +2596,10 @@ object FirErrorsDefaultMessages : BaseDiagnosticRendererFactory() {
|
||||
DEPRECATED_ACCESS_TO_ENUM_ENTRY_PROPERTY_AS_REFERENCE,
|
||||
"Ambiguous access to the 'entries' property is deprecated. Please specify the type of the referenced expression explicitly."
|
||||
)
|
||||
map.put(
|
||||
DEPRECATED_ACCESS_TO_ENTRIES_AS_QUALIFIER,
|
||||
"Ambiguous access to the 'entries' qualifier is deprecated. In the future, it will be shadowed by enum 'entries' property. Please resolve the ambiguity (e.g. by renaming conflicting declaration)."
|
||||
)
|
||||
map.put(
|
||||
DEPRECATED_DECLARATION_OF_ENUM_ENTRY,
|
||||
"Conflicting declarations: the enum entry 'entries' and the property 'Enum.entries' (KT-48872). Please rename the enum entry declaration."
|
||||
|
||||
@@ -8,7 +8,7 @@ enum class E05 {
|
||||
}
|
||||
|
||||
fun test05() {
|
||||
println(<!DEPRECATED_ACCESS_TO_ENTRY_PROPERTY_FROM_ENUM!>E05.entries<!>)
|
||||
println(<!DEPRECATED_ACCESS_TO_ENTRIES_AS_QUALIFIER!>E05.entries<!>)
|
||||
}
|
||||
|
||||
enum class E07(val entries: String) {
|
||||
|
||||
Reference in New Issue
Block a user