[FIR] Add utility for checking if FirReference is one of error reference

Also simplify relevant code in checkers
This commit is contained in:
Dmitriy Novozhilov
2022-12-14 18:40:28 +02:00
committed by Space Team
parent 7334694fd9
commit 34be0f05b2
11 changed files with 55 additions and 57 deletions
@@ -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
}
}