FIR: Preparation for resolve to classifiers

This commit is contained in:
Simon Ogorodnik
2019-03-07 18:18:14 +03:00
parent 307b8a1d4c
commit 43315fd61d
3 changed files with 57 additions and 22 deletions
@@ -6,12 +6,17 @@
package org.jetbrains.kotlin.fir.scopes
import org.jetbrains.kotlin.fir.scopes.ProcessorAction.NEXT
import org.jetbrains.kotlin.fir.scopes.ProcessorAction.STOP
import org.jetbrains.kotlin.fir.symbols.ConeClassifierSymbol
import org.jetbrains.kotlin.fir.symbols.ConeFunctionSymbol
import org.jetbrains.kotlin.fir.symbols.ConeVariableSymbol
import org.jetbrains.kotlin.name.Name
interface FirScope {
@Deprecated(
"obsolete",
replaceWith = ReplaceWith("processClassifiersByNameWithAction(name, position) { if (processor()) ProcessorAction.NEXT else ProcessorAction.STOP }.next()")
)
fun processClassifiersByName(
name: Name,
position: FirPosition,
@@ -29,6 +34,18 @@ interface FirScope {
): ProcessorAction = NEXT
}
inline fun FirScope.processClassifiersByNameWithAction(
name: Name,
position: FirPosition,
crossinline processor: (ConeClassifierSymbol) -> ProcessorAction
): ProcessorAction {
val result = processClassifiersByName(name, position) {
processor(it).next()
}
return if (result) NEXT else STOP
}
enum class FirPosition(val allowTypeParameters: Boolean = true) {
SUPER_TYPE_OR_EXPANSION(allowTypeParameters = false),
OTHER