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,
|
token,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
add(FirErrors.DEPRECATED_ACCESS_TO_ENTRIES_AS_QUALIFIER) { firDiagnostic ->
|
||||||
|
DeprecatedAccessToEntriesAsQualifierImpl(
|
||||||
|
firDiagnostic as KtPsiDiagnostic,
|
||||||
|
token,
|
||||||
|
)
|
||||||
|
}
|
||||||
add(FirErrors.DEPRECATED_DECLARATION_OF_ENUM_ENTRY) { firDiagnostic ->
|
add(FirErrors.DEPRECATED_DECLARATION_OF_ENUM_ENTRY) { firDiagnostic ->
|
||||||
DeprecatedDeclarationOfEnumEntryImpl(
|
DeprecatedDeclarationOfEnumEntryImpl(
|
||||||
firDiagnostic as KtPsiDiagnostic,
|
firDiagnostic as KtPsiDiagnostic,
|
||||||
|
|||||||
+4
@@ -3502,6 +3502,10 @@ sealed interface KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI> {
|
|||||||
override val diagnosticClass get() = DeprecatedAccessToEnumEntryPropertyAsReference::class
|
override val diagnosticClass get() = DeprecatedAccessToEnumEntryPropertyAsReference::class
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface DeprecatedAccessToEntriesAsQualifier : KtFirDiagnostic<PsiElement> {
|
||||||
|
override val diagnosticClass get() = DeprecatedAccessToEntriesAsQualifier::class
|
||||||
|
}
|
||||||
|
|
||||||
interface DeprecatedDeclarationOfEnumEntry : KtFirDiagnostic<KtEnumEntry> {
|
interface DeprecatedDeclarationOfEnumEntry : KtFirDiagnostic<KtEnumEntry> {
|
||||||
override val diagnosticClass get() = DeprecatedDeclarationOfEnumEntry::class
|
override val diagnosticClass get() = DeprecatedDeclarationOfEnumEntry::class
|
||||||
}
|
}
|
||||||
|
|||||||
+5
@@ -4224,6 +4224,11 @@ internal class DeprecatedAccessToEnumEntryPropertyAsReferenceImpl(
|
|||||||
token: KtLifetimeToken,
|
token: KtLifetimeToken,
|
||||||
) : KtAbstractFirDiagnostic<PsiElement>(firDiagnostic, token), KtFirDiagnostic.DeprecatedAccessToEnumEntryPropertyAsReference
|
) : KtAbstractFirDiagnostic<PsiElement>(firDiagnostic, token), KtFirDiagnostic.DeprecatedAccessToEnumEntryPropertyAsReference
|
||||||
|
|
||||||
|
internal class DeprecatedAccessToEntriesAsQualifierImpl(
|
||||||
|
firDiagnostic: KtPsiDiagnostic,
|
||||||
|
token: KtLifetimeToken,
|
||||||
|
) : KtAbstractFirDiagnostic<PsiElement>(firDiagnostic, token), KtFirDiagnostic.DeprecatedAccessToEntriesAsQualifier
|
||||||
|
|
||||||
internal class DeprecatedDeclarationOfEnumEntryImpl(
|
internal class DeprecatedDeclarationOfEnumEntryImpl(
|
||||||
firDiagnostic: KtPsiDiagnostic,
|
firDiagnostic: KtPsiDiagnostic,
|
||||||
token: KtLifetimeToken,
|
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_ENTRY_PROPERTY_FROM_ENUM by warning<PsiElement>()
|
||||||
val DEPRECATED_ACCESS_TO_ENTRIES_PROPERTY 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_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>()
|
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_ENTRY_PROPERTY_FROM_ENUM: KtDiagnosticFactory0 by warning0<PsiElement>()
|
||||||
val DEPRECATED_ACCESS_TO_ENTRIES_PROPERTY: 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_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>()
|
val DEPRECATED_DECLARATION_OF_ENUM_ENTRY: KtDiagnosticFactory0 by warning0<KtEnumEntry>()
|
||||||
|
|
||||||
// Compatibility issues
|
// Compatibility issues
|
||||||
|
|||||||
+1
-1
@@ -21,6 +21,6 @@ object FirCustomEnumEntriesMigrationQualifierChecker : FirResolvedQualifierCheck
|
|||||||
if (expression.symbol?.name != StandardNames.ENUM_ENTRIES) return
|
if (expression.symbol?.name != StandardNames.ENUM_ENTRIES) return
|
||||||
if (expression.nonFatalDiagnostics.none { it is ConeResolutionResultOverridesOtherToPreserveCompatibility }) 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.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_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_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_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_ACCESS_TO_ENUM_ENTRY_PROPERTY_AS_REFERENCE
|
||||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.DEPRECATED_BINARY_MOD
|
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,
|
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."
|
"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(
|
map.put(
|
||||||
DEPRECATED_DECLARATION_OF_ENUM_ENTRY,
|
DEPRECATED_DECLARATION_OF_ENUM_ENTRY,
|
||||||
"Conflicting declarations: the enum entry 'entries' and the property 'Enum.entries' (KT-48872). Please rename the enum entry declaration."
|
"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() {
|
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) {
|
enum class E07(val entries: String) {
|
||||||
|
|||||||
Reference in New Issue
Block a user