[FE 1.0] Don't report deprecation diagnostics about enum on it's own entries
^KT-37975 Fixed
This commit is contained in:
committed by
teamcity
parent
6b327d2380
commit
b2b5f4a63a
+13
@@ -17,14 +17,27 @@
|
||||
package org.jetbrains.kotlin.resolve.checkers
|
||||
|
||||
import com.intellij.psi.PsiElement
|
||||
import org.jetbrains.kotlin.config.LanguageFeature
|
||||
import org.jetbrains.kotlin.descriptors.ClassifierDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.ConstructorDescriptor
|
||||
import org.jetbrains.kotlin.psi.KtEnumEntrySuperclassReferenceExpression
|
||||
import org.jetbrains.kotlin.psi.KtThisExpression
|
||||
import org.jetbrains.kotlin.psi.synthetics.findClassDescriptor
|
||||
import org.jetbrains.kotlin.resolve.calls.util.getResolvedCall
|
||||
import org.jetbrains.kotlin.resolve.deprecation.createDeprecationDiagnostic
|
||||
|
||||
class DeprecatedClassifierUsageChecker : ClassifierUsageChecker {
|
||||
override fun check(targetDescriptor: ClassifierDescriptor, element: PsiElement, context: ClassifierUsageCheckerContext) {
|
||||
if (element.parent is KtThisExpression) return
|
||||
|
||||
if (context.languageVersionSettings.supportsFeature(LanguageFeature.NoDeprecationOnDeprecatedEnumEntries) && element is KtEnumEntrySuperclassReferenceExpression) {
|
||||
val referencedEnum =
|
||||
(element.getResolvedCall(context.trace.bindingContext)?.resultingDescriptor as? ConstructorDescriptor)?.constructedClass
|
||||
if (referencedEnum == targetDescriptor) {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
for (deprecation in context.deprecationResolver.getDeprecations(targetDescriptor)) {
|
||||
context.trace.report(createDeprecationDiagnostic(element, deprecation, context.languageVersionSettings))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user