[FIR] Allow "missing from dependencies" severity names in opt-in usage checker
- KT-62397 occurs in the IDE because enum entry symbols from libraries are deserialized from stubs, which currently produce `FirFromMissingDependenciesNamedReference`. - During opt-in usage checks, the compiler only considered resolved references when getting the severity name, but we can just take the name from the `FirFromMissingDependenciesNamedReference`. ^KT-62397 fixed
This commit is contained in:
committed by
Space Team
parent
570d9dbb19
commit
fd1c885c5b
+9
-2
@@ -21,7 +21,8 @@ import org.jetbrains.kotlin.fir.declarations.utils.isData
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.nameOrSpecialName
|
||||
import org.jetbrains.kotlin.fir.expressions.FirConstExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccessExpression
|
||||
import org.jetbrains.kotlin.fir.references.resolved
|
||||
import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
|
||||
import org.jetbrains.kotlin.fir.references.FirNamedReference
|
||||
import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
|
||||
import org.jetbrains.kotlin.fir.resolve.toFirRegularClassSymbol
|
||||
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
||||
@@ -273,7 +274,13 @@ object FirOptInUsageBaseChecker {
|
||||
?: return null
|
||||
|
||||
val levelArgument = experimental.findArgumentByName(LEVEL) as? FirQualifiedAccessExpression
|
||||
val levelName = levelArgument?.calleeReference?.resolved?.name?.asString()
|
||||
|
||||
val levelName = when (val calleeReference = levelArgument?.calleeReference) {
|
||||
is FirErrorNamedReference -> null
|
||||
is FirNamedReference -> calleeReference.name.asString()
|
||||
else -> null
|
||||
}
|
||||
|
||||
val severity = Experimentality.Severity.values().firstOrNull { it.name == levelName } ?: Experimentality.DEFAULT_SEVERITY
|
||||
val message = (experimental.findArgumentByName(MESSAGE) as? FirConstExpression<*>)?.value as? String
|
||||
return Experimentality(symbol.classId, severity, message, annotatedOwnerClassName)
|
||||
|
||||
Reference in New Issue
Block a user