diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/LazyTopDownAnalyzer.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/LazyTopDownAnalyzer.kt index 025402e5a31..91b8a49cf9b 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/LazyTopDownAnalyzer.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/LazyTopDownAnalyzer.kt @@ -211,7 +211,7 @@ class LazyTopDownAnalyzer( resolveImportsInAllFiles(c) - ClassifierUsageChecker.check(declarations, trace, classifierUsageCheckers) + ClassifierUsageChecker.check(declarations, trace, languageVersionSettings, classifierUsageCheckers) return c } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/ClassifierUsageChecker.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/ClassifierUsageChecker.kt index f0ffad9fd7d..3ac48424db9 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/ClassifierUsageChecker.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/ClassifierUsageChecker.kt @@ -17,6 +17,7 @@ package org.jetbrains.kotlin.resolve.checkers import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.config.LanguageVersionSettings import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.descriptors.ClassifierDescriptor import org.jetbrains.kotlin.descriptors.DeclarationDescriptorWithSource @@ -29,10 +30,20 @@ import org.jetbrains.kotlin.resolve.BindingTrace import org.jetbrains.kotlin.resolve.DescriptorUtils interface ClassifierUsageChecker { - fun check(targetDescriptor: ClassifierDescriptor, trace: BindingTrace, element: PsiElement) + fun check( + targetDescriptor: ClassifierDescriptor, + trace: BindingTrace, + element: PsiElement, + languageVersionSettings: LanguageVersionSettings + ) companion object { - fun check(declarations: Collection, trace: BindingTrace, checkers: Iterable) { + fun check( + declarations: Collection, + trace: BindingTrace, + languageVersionSettings: LanguageVersionSettings, + checkers: Iterable + ) { val visitor = object : KtTreeVisitorVoid() { override fun visitReferenceExpression(expression: KtReferenceExpression) { super.visitReferenceExpression(expression) @@ -46,13 +57,13 @@ interface ClassifierUsageChecker { val target = getReferencedClassifier(expression) ?: return for (checker in checkers) { - checker.check(target, trace, expression) + checker.check(target, trace, expression, languageVersionSettings) } if (isReferenceToCompanionViaOuterClass(expression, target)) { val outerClass = target.containingDeclaration as ClassDescriptor for (checker in checkers) { - checker.check(outerClass, trace, expression) + checker.check(outerClass, trace, expression, languageVersionSettings) } } } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/DeprecatedClassifierUsageChecker.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/DeprecatedClassifierUsageChecker.kt index 48e606cc6e6..4c8a555d835 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/DeprecatedClassifierUsageChecker.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/DeprecatedClassifierUsageChecker.kt @@ -17,13 +17,19 @@ package org.jetbrains.kotlin.resolve.checkers import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.config.LanguageVersionSettings import org.jetbrains.kotlin.descriptors.ClassifierDescriptor import org.jetbrains.kotlin.resolve.BindingTrace import org.jetbrains.kotlin.resolve.createDeprecationDiagnostic import org.jetbrains.kotlin.resolve.getDeprecation 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() if (deprecation != null) { trace.report(createDeprecationDiagnostic(element, deprecation))