[FIR] Add utility for checking if FirReference is one of error reference
Also simplify relevant code in checkers
This commit is contained in:
committed by
Space Team
parent
7334694fd9
commit
34be0f05b2
@@ -5,8 +5,11 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir.references
|
||||
|
||||
import org.jetbrains.kotlin.fir.diagnostics.FirDiagnosticHolder
|
||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.*
|
||||
import kotlin.contracts.ExperimentalContracts
|
||||
import kotlin.contracts.contract
|
||||
|
||||
val FirReference.resolved: FirResolvedNamedReference? get() = this as? FirResolvedNamedReference
|
||||
|
||||
@@ -52,3 +55,14 @@ fun FirReference.toResolvedFunctionSymbol(discardErrorReference: Boolean = false
|
||||
fun FirReference.toResolvedConstructorSymbol(discardErrorReference: Boolean = false): FirConstructorSymbol? {
|
||||
return this.toResolvedSymbol<FirConstructorSymbol>(discardErrorReference)
|
||||
}
|
||||
|
||||
@OptIn(ExperimentalContracts::class)
|
||||
fun FirReference.isError(): Boolean {
|
||||
contract {
|
||||
returns(true) implies (this@isError is FirDiagnosticHolder)
|
||||
}
|
||||
return when (this) {
|
||||
is FirResolvedErrorReference, is FirErrorNamedReference -> true
|
||||
else -> false
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user