Pass LanguageVersionSettings to ClassifierUsageChecker
To be used in future classifier usage checkers
This commit is contained in:
@@ -211,7 +211,7 @@ class LazyTopDownAnalyzer(
|
|||||||
|
|
||||||
resolveImportsInAllFiles(c)
|
resolveImportsInAllFiles(c)
|
||||||
|
|
||||||
ClassifierUsageChecker.check(declarations, trace, classifierUsageCheckers)
|
ClassifierUsageChecker.check(declarations, trace, languageVersionSettings, classifierUsageCheckers)
|
||||||
|
|
||||||
return c
|
return c
|
||||||
}
|
}
|
||||||
|
|||||||
+15
-4
@@ -17,6 +17,7 @@
|
|||||||
package org.jetbrains.kotlin.resolve.checkers
|
package org.jetbrains.kotlin.resolve.checkers
|
||||||
|
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
|
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.ClassifierDescriptor
|
import org.jetbrains.kotlin.descriptors.ClassifierDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptorWithSource
|
import org.jetbrains.kotlin.descriptors.DeclarationDescriptorWithSource
|
||||||
@@ -29,10 +30,20 @@ import org.jetbrains.kotlin.resolve.BindingTrace
|
|||||||
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
||||||
|
|
||||||
interface ClassifierUsageChecker {
|
interface ClassifierUsageChecker {
|
||||||
fun check(targetDescriptor: ClassifierDescriptor, trace: BindingTrace, element: PsiElement)
|
fun check(
|
||||||
|
targetDescriptor: ClassifierDescriptor,
|
||||||
|
trace: BindingTrace,
|
||||||
|
element: PsiElement,
|
||||||
|
languageVersionSettings: LanguageVersionSettings
|
||||||
|
)
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
fun check(declarations: Collection<PsiElement>, trace: BindingTrace, checkers: Iterable<ClassifierUsageChecker>) {
|
fun check(
|
||||||
|
declarations: Collection<PsiElement>,
|
||||||
|
trace: BindingTrace,
|
||||||
|
languageVersionSettings: LanguageVersionSettings,
|
||||||
|
checkers: Iterable<ClassifierUsageChecker>
|
||||||
|
) {
|
||||||
val visitor = object : KtTreeVisitorVoid() {
|
val visitor = object : KtTreeVisitorVoid() {
|
||||||
override fun visitReferenceExpression(expression: KtReferenceExpression) {
|
override fun visitReferenceExpression(expression: KtReferenceExpression) {
|
||||||
super.visitReferenceExpression(expression)
|
super.visitReferenceExpression(expression)
|
||||||
@@ -46,13 +57,13 @@ interface ClassifierUsageChecker {
|
|||||||
val target = getReferencedClassifier(expression) ?: return
|
val target = getReferencedClassifier(expression) ?: return
|
||||||
|
|
||||||
for (checker in checkers) {
|
for (checker in checkers) {
|
||||||
checker.check(target, trace, expression)
|
checker.check(target, trace, expression, languageVersionSettings)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isReferenceToCompanionViaOuterClass(expression, target)) {
|
if (isReferenceToCompanionViaOuterClass(expression, target)) {
|
||||||
val outerClass = target.containingDeclaration as ClassDescriptor
|
val outerClass = target.containingDeclaration as ClassDescriptor
|
||||||
for (checker in checkers) {
|
for (checker in checkers) {
|
||||||
checker.check(outerClass, trace, expression)
|
checker.check(outerClass, trace, expression, languageVersionSettings)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+7
-1
@@ -17,13 +17,19 @@
|
|||||||
package org.jetbrains.kotlin.resolve.checkers
|
package org.jetbrains.kotlin.resolve.checkers
|
||||||
|
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
|
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||||
import org.jetbrains.kotlin.descriptors.ClassifierDescriptor
|
import org.jetbrains.kotlin.descriptors.ClassifierDescriptor
|
||||||
import org.jetbrains.kotlin.resolve.BindingTrace
|
import org.jetbrains.kotlin.resolve.BindingTrace
|
||||||
import org.jetbrains.kotlin.resolve.createDeprecationDiagnostic
|
import org.jetbrains.kotlin.resolve.createDeprecationDiagnostic
|
||||||
import org.jetbrains.kotlin.resolve.getDeprecation
|
import org.jetbrains.kotlin.resolve.getDeprecation
|
||||||
|
|
||||||
class DeprecatedClassifierUsageChecker : ClassifierUsageChecker {
|
class DeprecatedClassifierUsageChecker : ClassifierUsageChecker {
|
||||||
override fun check(targetDescriptor: ClassifierDescriptor, trace: BindingTrace, element: PsiElement) {
|
override fun check(
|
||||||
|
targetDescriptor: ClassifierDescriptor,
|
||||||
|
trace: BindingTrace,
|
||||||
|
element: PsiElement,
|
||||||
|
languageVersionSettings: LanguageVersionSettings
|
||||||
|
) {
|
||||||
val deprecation = targetDescriptor.getDeprecation()
|
val deprecation = targetDescriptor.getDeprecation()
|
||||||
if (deprecation != null) {
|
if (deprecation != null) {
|
||||||
trace.report(createDeprecationDiagnostic(element, deprecation))
|
trace.report(createDeprecationDiagnostic(element, deprecation))
|
||||||
|
|||||||
Reference in New Issue
Block a user