[FIR] Add substitution to classifiers processing
This commit is contained in:
@@ -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) }
|
||||
}
|
||||
Reference in New Issue
Block a user