[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(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 getOwnersOfDeclaration(declaration: FirAnnotatedDeclaration): List<FirAnnotatedDeclaration>?
abstract fun fileHasPluginAnnotations(file: FirFile): Boolean 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 abstract fun matches(predicate: DeclarationPredicate, declaration: FirAnnotatedDeclaration): Boolean
fun matches(predicates: List<DeclarationPredicate>, declaration: FirAnnotatedDeclaration): Boolean { fun matches(predicates: List<DeclarationPredicate>, declaration: FirAnnotatedDeclaration): Boolean {
return predicates.any { matches(it, declaration) } return predicates.any { matches(it, declaration) }
} }
} }
@NoMutableState @NoMutableState
private class FirPredicateBasedProviderImpl(private val session: FirSession) : FirPredicateBasedProvider() { class FirPredicateBasedProviderImpl(private val session: FirSession) : FirPredicateBasedProvider() {
private val registeredPluginAnnotations = session.registeredPluginAnnotations private val registeredPluginAnnotations = session.registeredPluginAnnotations
private val cache = Cache() private val cache = Cache()
override fun getSymbolsByPredicate(predicate: DeclarationPredicate): List<FirAnnotatedDeclaration> { override fun getSymbolsByPredicate(predicate: DeclarationPredicate): List<FirAnnotatedDeclaration> {
val annotations = registeredPluginAnnotations.getAnnotationsForPredicate(predicate) val annotations = registeredPluginAnnotations.getAnnotationsForPredicate(predicate)
if (annotations.isEmpty()) return emptyList() if (annotations.isEmpty()) return emptyList()
val declarations = annotations.flatMapTo(mutableSetOf()) { cache.declarationByAnnotation[it] + cache.declarationsUnderAnnotated[it] } val declarations = annotations.flatMapTo(mutableSetOf()) {
return getSymbolsByPredicate(declarations, predicate) cache.declarationByAnnotation[it] + cache.declarationsUnderAnnotated[it]
} }
override fun getSymbolsByPredicate(
declarations: Collection<FirAnnotatedDeclaration>,
predicate: DeclarationPredicate
): List<FirAnnotatedDeclaration> {
return declarations.filter { matches(predicate, 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 { override fun fileHasPluginAnnotations(file: FirFile): Boolean {
return file in cache.filesWithPluginAnnotations return file in cache.filesWithPluginAnnotations
} }
override fun registerAnnotatedDeclaration(declaration: FirAnnotatedDeclaration, owners: PersistentList<FirAnnotatedDeclaration>) { fun registerAnnotatedDeclaration(declaration: FirAnnotatedDeclaration, owners: PersistentList<FirAnnotatedDeclaration>) {
cache.ownersForDeclaration[declaration] = owners cache.ownersForDeclaration[declaration] = owners
registerOwnersDeclarations(declaration, owners) registerOwnersDeclarations(declaration, owners)
@@ -108,11 +69,6 @@ private class FirPredicateBasedProviderImpl(private val session: FirSession) : F
return cache.ownersForDeclaration[declaration] 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>) { private fun registerOwnersDeclarations(declaration: FirAnnotatedDeclaration, owners: PersistentList<FirAnnotatedDeclaration>) {
val lastOwner = owners.lastOrNull() ?: return val lastOwner = owners.lastOrNull() ?: return
val annotationsFromLastOwner = cache.annotationsOfDeclaration[lastOwner] val annotationsFromLastOwner = cache.annotationsOfDeclaration[lastOwner]
@@ -83,6 +83,8 @@ private class FirAnnotationResolveTransformer(
session: FirSession, session: FirSession,
scopeSession: ScopeSession scopeSession: ScopeSession
) : FirAbstractAnnotationResolveTransformer<Multimap<AnnotationFqn, FirRegularClass>, PersistentList<FirAnnotatedDeclaration>>(session, scopeSession) { ) : FirAbstractAnnotationResolveTransformer<Multimap<AnnotationFqn, FirRegularClass>, PersistentList<FirAnnotatedDeclaration>>(session, scopeSession) {
private val predicateBasedProvider = session.predicateBasedProvider as FirPredicateBasedProviderImpl
var metaAnnotations: Set<AnnotationFqn> = emptySet() var metaAnnotations: Set<AnnotationFqn> = emptySet()
private val typeResolverTransformer: FirSpecificTypeResolverTransformer = FirSpecificTypeResolverTransformer( private val typeResolverTransformer: FirSpecificTypeResolverTransformer = FirSpecificTypeResolverTransformer(
session, session,
@@ -138,7 +140,7 @@ private class FirAnnotationResolveTransformer(
data: Multimap<AnnotationFqn, FirRegularClass> data: Multimap<AnnotationFqn, FirRegularClass>
): FirAnnotatedDeclaration { ): FirAnnotatedDeclaration {
return super.transformAnnotatedDeclaration(annotatedDeclaration, data).also { return super.transformAnnotatedDeclaration(annotatedDeclaration, data).also {
session.predicateBasedProvider.registerAnnotatedDeclaration(annotatedDeclaration, owners) predicateBasedProvider.registerAnnotatedDeclaration(annotatedDeclaration, owners)
} }
} }
} }