FIR IDE: implement new getTopLevelFunction(/property)Symbols in FirModuleWithDependenciesSymbolProvider

This commit is contained in:
Ilya Kirillov
2021-01-12 13:45:45 +01:00
parent 450ab33f16
commit a5e6c1d82b
@@ -45,18 +45,28 @@ internal class FirModuleWithDependenciesSymbolProvider(
@FirSymbolProviderInternals
override fun getTopLevelFunctionSymbolsTo(destination: MutableList<FirNamedFunctionSymbol>, packageFqName: FqName, name: Name) {
providers.forEach { it.getTopLevelFunctionSymbolsTo(destination, packageFqName, name) }
withDependent {
dependentProviders.forEach { it.getTopLevelFunctionSymbolsTo(destination, packageFqName, name) }
}
getTopLevelFunctionSymbolsToWithoutDependencies(destination, packageFqName, name)
dependentProviders.getTopLevelFunctionSymbolsTo(destination, packageFqName, name)
}
@FirSymbolProviderInternals
override fun getTopLevelPropertySymbolsTo(destination: MutableList<FirPropertySymbol>, packageFqName: FqName, name: Name) {
getTopLevelPropertySymbolsToWithoutDependencies(destination, packageFqName, name)
dependentProviders.getTopLevelPropertySymbolsTo(destination, packageFqName, name)
}
@FirSymbolProviderInternals
fun getTopLevelFunctionSymbolsToWithoutDependencies(
destination: MutableList<FirNamedFunctionSymbol>,
packageFqName: FqName,
name: Name
) {
providers.forEach { it.getTopLevelFunctionSymbolsTo(destination, packageFqName, name) }
}
@FirSymbolProviderInternals
fun getTopLevelPropertySymbolsToWithoutDependencies(destination: MutableList<FirPropertySymbol>, packageFqName: FqName, name: Name) {
providers.forEach { it.getTopLevelPropertySymbolsTo(destination, packageFqName, name) }
withDependent {
dependentProviders.forEach { it.getTopLevelPropertySymbolsTo(destination, packageFqName, name) }
}
}
override fun getPackage(fqName: FqName): FqName? =
@@ -89,6 +99,28 @@ private class DependentModuleProviders(session: FirSession, private val provider
}
}
@FirSymbolProviderInternals
override fun getTopLevelFunctionSymbolsTo(destination: MutableList<FirNamedFunctionSymbol>, packageFqName: FqName, name: Name) {
providers.forEach { provider ->
when (provider) {
is FirModuleWithDependenciesSymbolProvider ->
provider.getTopLevelFunctionSymbolsToWithoutDependencies(destination, packageFqName, name)
else -> provider.getTopLevelFunctionSymbolsTo(destination, packageFqName, name)
}
}
}
@FirSymbolProviderInternals
override fun getTopLevelPropertySymbolsTo(destination: MutableList<FirPropertySymbol>, packageFqName: FqName, name: Name) {
providers.forEach { provider ->
when (provider) {
is FirModuleWithDependenciesSymbolProvider ->
provider.getTopLevelPropertySymbolsToWithoutDependencies(destination, packageFqName, name)
else -> provider.getTopLevelPropertySymbolsTo(destination, packageFqName, name)
}
}
}
override fun getPackage(fqName: FqName): FqName? =
providers.firstNotNullResult { provider ->
when (provider) {