[FIR] Remove unused methods from FirPredicateBasedProvider

This commit is contained in:
Dmitriy Novozhilov
2021-10-04 16:03:00 +03:00
committed by TeamCityServer
parent 6a14d91dbd
commit 1cfe4deda9
2 changed files with 9 additions and 51 deletions
@@ -24,73 +24,34 @@ abstract class FirPredicateBasedProvider : FirSessionComponent {
}
abstract fun getSymbolsByPredicate(predicate: DeclarationPredicate): List<FirAnnotatedDeclaration>
abstract fun getSymbolsByPredicate(
declarations: Collection<FirAnnotatedDeclaration>,
predicate: DeclarationPredicate
): List<FirAnnotatedDeclaration>
abstract fun getSymbolsWithOwnersByPredicate(
predicate: DeclarationPredicate
): List<Pair<FirAnnotatedDeclaration, List<FirAnnotatedDeclaration>>>
abstract fun getSymbolsWithOwnersByPredicate(
declarations: Collection<FirAnnotatedDeclaration>,
predicate: DeclarationPredicate
): List<Pair<FirAnnotatedDeclaration, List<FirAnnotatedDeclaration>>>
abstract fun getOwnersOfDeclaration(declaration: FirAnnotatedDeclaration): List<FirAnnotatedDeclaration>?
abstract fun fileHasPluginAnnotations(file: FirFile): Boolean
abstract fun registerAnnotatedDeclaration(declaration: FirAnnotatedDeclaration, owners: PersistentList<FirAnnotatedDeclaration>)
abstract fun registerGeneratedDeclaration(declaration: FirAnnotatedDeclaration, owner: FirAnnotatedDeclaration)
abstract fun matches(predicate: DeclarationPredicate, declaration: FirAnnotatedDeclaration): Boolean
fun matches(predicates: List<DeclarationPredicate>, declaration: FirAnnotatedDeclaration): Boolean {
return predicates.any { matches(it, declaration) }
}
}
@NoMutableState
private class FirPredicateBasedProviderImpl(private val session: FirSession) : FirPredicateBasedProvider() {
class FirPredicateBasedProviderImpl(private val session: FirSession) : FirPredicateBasedProvider() {
private val registeredPluginAnnotations = session.registeredPluginAnnotations
private val cache = Cache()
override fun getSymbolsByPredicate(predicate: DeclarationPredicate): List<FirAnnotatedDeclaration> {
val annotations = registeredPluginAnnotations.getAnnotationsForPredicate(predicate)
if (annotations.isEmpty()) return emptyList()
val declarations = annotations.flatMapTo(mutableSetOf()) { cache.declarationByAnnotation[it] + cache.declarationsUnderAnnotated[it] }
return getSymbolsByPredicate(declarations, predicate)
}
override fun getSymbolsByPredicate(
declarations: Collection<FirAnnotatedDeclaration>,
predicate: DeclarationPredicate
): List<FirAnnotatedDeclaration> {
val declarations = annotations.flatMapTo(mutableSetOf()) {
cache.declarationByAnnotation[it] + cache.declarationsUnderAnnotated[it]
}
return declarations.filter { matches(predicate, it) }
}
override fun getSymbolsWithOwnersByPredicate(predicate: DeclarationPredicate): List<Pair<FirAnnotatedDeclaration, List<FirAnnotatedDeclaration>>> {
return getSymbolsByPredicate(predicate).zipWithParents()
}
override fun getSymbolsWithOwnersByPredicate(
declarations: Collection<FirAnnotatedDeclaration>,
predicate: DeclarationPredicate
): List<Pair<FirAnnotatedDeclaration, List<FirAnnotatedDeclaration>>> {
return getSymbolsByPredicate(declarations, predicate).zipWithParents()
}
private fun List<FirAnnotatedDeclaration>.zipWithParents(): List<Pair<FirAnnotatedDeclaration, List<FirAnnotatedDeclaration>>> {
return this.map { it to cache.ownersForDeclaration.getValue(it) }
}
override fun fileHasPluginAnnotations(file: FirFile): Boolean {
return file in cache.filesWithPluginAnnotations
}
override fun registerAnnotatedDeclaration(declaration: FirAnnotatedDeclaration, owners: PersistentList<FirAnnotatedDeclaration>) {
fun registerAnnotatedDeclaration(declaration: FirAnnotatedDeclaration, owners: PersistentList<FirAnnotatedDeclaration>) {
cache.ownersForDeclaration[declaration] = owners
registerOwnersDeclarations(declaration, owners)
@@ -108,11 +69,6 @@ private class FirPredicateBasedProviderImpl(private val session: FirSession) : F
return cache.ownersForDeclaration[declaration]
}
override fun registerGeneratedDeclaration(declaration: FirAnnotatedDeclaration, owner: FirAnnotatedDeclaration) {
val owners = cache.ownersForDeclaration.getValue(owner).add(owner)
registerAnnotatedDeclaration(declaration, owners)
}
private fun registerOwnersDeclarations(declaration: FirAnnotatedDeclaration, owners: PersistentList<FirAnnotatedDeclaration>) {
val lastOwner = owners.lastOrNull() ?: return
val annotationsFromLastOwner = cache.annotationsOfDeclaration[lastOwner]
@@ -83,6 +83,8 @@ private class FirAnnotationResolveTransformer(
session: FirSession,
scopeSession: ScopeSession
) : FirAbstractAnnotationResolveTransformer<Multimap<AnnotationFqn, FirRegularClass>, PersistentList<FirAnnotatedDeclaration>>(session, scopeSession) {
private val predicateBasedProvider = session.predicateBasedProvider as FirPredicateBasedProviderImpl
var metaAnnotations: Set<AnnotationFqn> = emptySet()
private val typeResolverTransformer: FirSpecificTypeResolverTransformer = FirSpecificTypeResolverTransformer(
session,
@@ -138,7 +140,7 @@ private class FirAnnotationResolveTransformer(
data: Multimap<AnnotationFqn, FirRegularClass>
): FirAnnotatedDeclaration {
return super.transformAnnotatedDeclaration(annotatedDeclaration, data).also {
session.predicateBasedProvider.registerAnnotatedDeclaration(annotatedDeclaration, owners)
predicateBasedProvider.registerAnnotatedDeclaration(annotatedDeclaration, owners)
}
}
}