FIR IDE: implement new getTopLevelFunction(/property)Symbols in FirModuleWithDependenciesSymbolProvider
This commit is contained in:
+39
-7
@@ -45,18 +45,28 @@ internal class FirModuleWithDependenciesSymbolProvider(
|
|||||||
|
|
||||||
@FirSymbolProviderInternals
|
@FirSymbolProviderInternals
|
||||||
override fun getTopLevelFunctionSymbolsTo(destination: MutableList<FirNamedFunctionSymbol>, packageFqName: FqName, name: Name) {
|
override fun getTopLevelFunctionSymbolsTo(destination: MutableList<FirNamedFunctionSymbol>, packageFqName: FqName, name: Name) {
|
||||||
providers.forEach { it.getTopLevelFunctionSymbolsTo(destination, packageFqName, name) }
|
getTopLevelFunctionSymbolsToWithoutDependencies(destination, packageFqName, name)
|
||||||
withDependent {
|
dependentProviders.getTopLevelFunctionSymbolsTo(destination, packageFqName, name)
|
||||||
dependentProviders.forEach { it.getTopLevelFunctionSymbolsTo(destination, packageFqName, name) }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@FirSymbolProviderInternals
|
@FirSymbolProviderInternals
|
||||||
override fun getTopLevelPropertySymbolsTo(destination: MutableList<FirPropertySymbol>, packageFqName: FqName, name: Name) {
|
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) }
|
providers.forEach { it.getTopLevelPropertySymbolsTo(destination, packageFqName, name) }
|
||||||
withDependent {
|
|
||||||
dependentProviders.forEach { it.getTopLevelPropertySymbolsTo(destination, packageFqName, name) }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getPackage(fqName: FqName): FqName? =
|
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? =
|
override fun getPackage(fqName: FqName): FqName? =
|
||||||
providers.firstNotNullResult { provider ->
|
providers.firstNotNullResult { provider ->
|
||||||
when (provider) {
|
when (provider) {
|
||||||
|
|||||||
Reference in New Issue
Block a user