[LL FIR] KT-57220 Don't merge empty synthetic function symbol providers
This commit is contained in:
committed by
Space Team
parent
eac6458500
commit
87bcc3ad08
+3
-2
@@ -55,7 +55,8 @@ internal class LLFirCombinedSyntheticFunctionSymbolProvider(
|
|||||||
override fun computeCallableNamesInPackage(packageFqName: FqName): Set<Name>? = null
|
override fun computeCallableNamesInPackage(packageFqName: FqName): Set<Name>? = null
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
fun merge(session: FirSession, providers: List<FirSyntheticFunctionInterfaceProviderBase>): FirSymbolProvider =
|
fun merge(session: FirSession, providers: List<FirSyntheticFunctionInterfaceProviderBase>): FirSymbolProvider? =
|
||||||
providers.singleOrNull() ?: LLFirCombinedSyntheticFunctionSymbolProvider(session, providers)
|
if (providers.size > 1) LLFirCombinedSyntheticFunctionSymbolProvider(session, providers)
|
||||||
|
else providers.singleOrNull()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-4
@@ -13,7 +13,6 @@ import com.intellij.psi.util.CachedValue
|
|||||||
import com.intellij.psi.util.CachedValueProvider
|
import com.intellij.psi.util.CachedValueProvider
|
||||||
import com.intellij.psi.util.CachedValuesManager
|
import com.intellij.psi.util.CachedValuesManager
|
||||||
import com.intellij.util.containers.CollectionFactory
|
import com.intellij.util.containers.CollectionFactory
|
||||||
import java.util.concurrent.ConcurrentMap
|
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirGlobalResolveComponents
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirGlobalResolveComponents
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirLazyDeclarationResolver
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirLazyDeclarationResolver
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirModuleResolveComponents
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirModuleResolveComponents
|
||||||
@@ -49,9 +48,9 @@ import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
|||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.resolve.jvm.modules.JavaModuleResolver
|
import org.jetbrains.kotlin.resolve.jvm.modules.JavaModuleResolver
|
||||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformAnalyzerServices
|
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformAnalyzerServices
|
||||||
import org.jetbrains.kotlin.analysis.providers.KotlinDeclarationProvider
|
|
||||||
import org.jetbrains.kotlin.utils.addToStdlib.partitionIsInstance
|
|
||||||
import org.jetbrains.kotlin.utils.addIfNotNull
|
import org.jetbrains.kotlin.utils.addIfNotNull
|
||||||
|
import org.jetbrains.kotlin.utils.addToStdlib.partitionIsInstance
|
||||||
|
import java.util.concurrent.ConcurrentMap
|
||||||
|
|
||||||
@OptIn(PrivateSessionConstructor::class, SessionConfiguration::class)
|
@OptIn(PrivateSessionConstructor::class, SessionConfiguration::class)
|
||||||
internal class LLFirSessionCache(private val project: Project) {
|
internal class LLFirSessionCache(private val project: Project) {
|
||||||
@@ -549,7 +548,7 @@ internal class LLFirSessionCache(private val project: Project) {
|
|||||||
// Unfortunately, the functions that an extension synthetic function symbol provider might provide differ between sessions because
|
// Unfortunately, the functions that an extension synthetic function symbol provider might provide differ between sessions because
|
||||||
// they depend on compiler plugins. However, only extension providers that are affected by compiler plugins are added in
|
// they depend on compiler plugins. However, only extension providers that are affected by compiler plugins are added in
|
||||||
// `createSourcesSession`. We can still combine these, because the `ClassId` heuristics only need to be checked once.
|
// `createSourcesSession`. We can still combine these, because the `ClassId` heuristics only need to be checked once.
|
||||||
destination.add(LLFirCombinedSyntheticFunctionSymbolProvider.merge(session, syntheticFunctionSymbolProviders))
|
destination.addIfNotNull(LLFirCombinedSyntheticFunctionSymbolProvider.merge(session, syntheticFunctionSymbolProviders))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user