FIR: Extract common code in FirPackageMemberScope
This commit is contained in:
+13
-10
@@ -9,7 +9,10 @@ import org.jetbrains.kotlin.fir.FirSession
|
|||||||
import org.jetbrains.kotlin.fir.resolve.firSymbolProvider
|
import org.jetbrains.kotlin.fir.resolve.firSymbolProvider
|
||||||
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
|
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
|
||||||
import org.jetbrains.kotlin.fir.scopes.FirScope
|
import org.jetbrains.kotlin.fir.scopes.FirScope
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.*
|
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||||
|
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.ClassId
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
@@ -36,22 +39,22 @@ class FirPackageMemberScope(val fqName: FqName, val session: FirSession) : FirSc
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun processFunctionsByName(name: Name, processor: (FirFunctionSymbol<*>) -> Unit) {
|
override fun processFunctionsByName(name: Name, processor: (FirFunctionSymbol<*>) -> Unit) {
|
||||||
val symbols = callableCache.getOrPut(name) {
|
processCallables(name, processor)
|
||||||
symbolProvider.getTopLevelCallableSymbols(fqName, name)
|
|
||||||
}
|
|
||||||
for (symbol in symbols) {
|
|
||||||
if (symbol is FirFunctionSymbol<*>) {
|
|
||||||
processor(symbol)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun processPropertiesByName(name: Name, processor: (FirVariableSymbol<*>) -> Unit) {
|
override fun processPropertiesByName(name: Name, processor: (FirVariableSymbol<*>) -> Unit) {
|
||||||
|
processCallables(name, processor)
|
||||||
|
}
|
||||||
|
|
||||||
|
private inline fun <reified D : FirCallableSymbol<*>> processCallables(
|
||||||
|
name: Name,
|
||||||
|
processor: (D) -> Unit
|
||||||
|
) {
|
||||||
val symbols = callableCache.getOrPut(name) {
|
val symbols = callableCache.getOrPut(name) {
|
||||||
symbolProvider.getTopLevelCallableSymbols(fqName, name)
|
symbolProvider.getTopLevelCallableSymbols(fqName, name)
|
||||||
}
|
}
|
||||||
for (symbol in symbols) {
|
for (symbol in symbols) {
|
||||||
if (symbol is FirPropertySymbol) {
|
if (symbol is D) {
|
||||||
processor(symbol)
|
processor(symbol)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user