[FIR] Add substitution to classifiers processing

This commit is contained in:
simon.ogorodnik
2020-04-09 22:16:54 +03:00
parent cd4a7a25c3
commit d55c6550bb
21 changed files with 80 additions and 60 deletions
@@ -5,6 +5,7 @@
package org.jetbrains.kotlin.fir.scopes
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
import org.jetbrains.kotlin.fir.symbols.impl.FirClassifierSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
@@ -13,12 +14,12 @@ import org.jetbrains.kotlin.name.Name
abstract class FirIterableScope : FirScope() {
abstract val scopes: Iterable<FirScope>
override fun processClassifiersByName(
override fun processClassifiersByNameWithSubstitution(
name: Name,
processor: (FirClassifierSymbol<*>) -> Unit
processor: (FirClassifierSymbol<*>, ConeSubstitutor) -> Unit
) {
for (scope in scopes) {
scope.processClassifiersByName(name, processor)
scope.processClassifiersByNameWithSubstitution(name, processor)
}
}
@@ -5,15 +5,16 @@
package org.jetbrains.kotlin.fir.scopes
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
import org.jetbrains.kotlin.fir.symbols.impl.FirClassifierSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
import org.jetbrains.kotlin.name.Name
abstract class FirScope {
open fun processClassifiersByName(
open fun processClassifiersByNameWithSubstitution(
name: Name,
processor: (FirClassifierSymbol<*>) -> Unit
processor: (FirClassifierSymbol<*>, ConeSubstitutor) -> Unit
) {}
open fun processFunctionsByName(
@@ -48,3 +49,11 @@ enum class ProcessorAction {
return this
}
}
inline fun FirScope.processClassifiersByName(
name: Name,
noinline processor: (FirClassifierSymbol<*>) -> Unit
) {
processClassifiersByNameWithSubstitution(name) { symbol, _ -> processor(symbol) }
}