Do not report experimental usage errors in import statements

#KT-25545 Fixed
This commit is contained in:
Alexander Udalov
2018-09-19 21:10:47 +03:00
parent 9d27771f86
commit 3e90d367f2
5 changed files with 70 additions and 3 deletions
@@ -28,6 +28,7 @@ import org.jetbrains.kotlin.incremental.components.NoLookupLocation
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.getParentOfType
import org.jetbrains.kotlin.psi.psiUtil.getTopmostParentQualifiedExpressionForSelector
import org.jetbrains.kotlin.resolve.*
import org.jetbrains.kotlin.resolve.calls.checkers.CallChecker
@@ -263,9 +264,6 @@ class ExperimentalUsageChecker(project: Project) : CallChecker {
}
}
val experimentalities = targetDescriptor.loadExperimentalities(moduleAnnotationsResolver, context.languageVersionSettings)
reportNotAcceptedExperimentalities(experimentalities, element, context)
val targetClass = when (targetDescriptor) {
is ClassDescriptor -> targetDescriptor
is TypeAliasDescriptor -> targetDescriptor.classDescriptor
@@ -280,6 +278,11 @@ class ExperimentalUsageChecker(project: Project) : CallChecker {
)
}
}
if (element.getParentOfType<KtImportDirective>(false) == null) {
val experimentalities = targetDescriptor.loadExperimentalities(moduleAnnotationsResolver, context.languageVersionSettings)
reportNotAcceptedExperimentalities(experimentalities, element, context)
}
}
private fun checkUsageOfKotlinExperimentalOrUseExperimental(element: PsiElement, context: CheckerContext) {