OptIn: handle usages via type aliases properly
This commit is contained in:
committed by
teamcityserver
parent
b4ee116de7
commit
eb9c658c1c
+14
-6
@@ -46,6 +46,7 @@ import org.jetbrains.kotlin.resolve.descriptorUtil.annotationClass
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.module
|
||||
import org.jetbrains.kotlin.storage.LockBasedStorageManager
|
||||
import org.jetbrains.kotlin.types.AbbreviatedType
|
||||
import org.jetbrains.kotlin.types.KotlinType
|
||||
import org.jetbrains.kotlin.types.isError
|
||||
import org.jetbrains.kotlin.utils.SmartSet
|
||||
@@ -237,12 +238,19 @@ class ExperimentalUsageChecker(project: Project) : CallChecker {
|
||||
languageVersionSettings: LanguageVersionSettings,
|
||||
visitedClassifiers: MutableSet<DeclarationDescriptor>
|
||||
): Set<Experimentality> =
|
||||
if (this?.isError != false) emptySet()
|
||||
else constructor.declarationDescriptor?.loadExperimentalities(
|
||||
moduleAnnotationsResolver, languageVersionSettings, visitedClassifiers
|
||||
).orEmpty() + arguments.flatMap {
|
||||
if (it.isStarProjection) emptySet()
|
||||
else it.type.loadExperimentalities(moduleAnnotationsResolver, languageVersionSettings, visitedClassifiers)
|
||||
when {
|
||||
this?.isError != false -> emptySet()
|
||||
this is AbbreviatedType -> abbreviation.constructor.declarationDescriptor?.loadExperimentalities(
|
||||
moduleAnnotationsResolver, languageVersionSettings, visitedClassifiers
|
||||
).orEmpty() + expandedType.loadExperimentalities(
|
||||
moduleAnnotationsResolver, languageVersionSettings, visitedClassifiers
|
||||
)
|
||||
else -> constructor.declarationDescriptor?.loadExperimentalities(
|
||||
moduleAnnotationsResolver, languageVersionSettings, visitedClassifiers
|
||||
).orEmpty() + arguments.flatMap {
|
||||
if (it.isStarProjection) emptySet()
|
||||
else it.type.loadExperimentalities(moduleAnnotationsResolver, languageVersionSettings, visitedClassifiers)
|
||||
}
|
||||
}
|
||||
|
||||
internal fun ClassDescriptor.loadExperimentalityForMarkerAnnotation(): Experimentality? {
|
||||
|
||||
Reference in New Issue
Block a user