diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/extensions/FirPredicateBasedProvider.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/extensions/FirPredicateBasedProvider.kt index c797f62b734..b2f6610c9fc 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/extensions/FirPredicateBasedProvider.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/extensions/FirPredicateBasedProvider.kt @@ -41,7 +41,7 @@ private class FirPredicateBasedProviderImpl(private val session: FirSession) : F override fun getSymbolsByPredicate(predicate: DeclarationPredicate): List { val annotations = registeredPluginAnnotations.getAnnotationsForPredicate(predicate) if (annotations.isEmpty()) return emptyList() - return annotations.flatMap { cache.declarationByAnnotation[it] + cache.declarationsUnderAnnotated[it] }.filter { + return annotations.flatMapTo(mutableSetOf()) { cache.declarationByAnnotation[it] + cache.declarationsUnderAnnotated[it] }.filter { matches(predicate, it) } } @@ -128,10 +128,10 @@ private class FirPredicateBasedProviderImpl(private val session: FirSession) : F // ---------------------------------- Cache ---------------------------------- private class Cache { - val declarationByAnnotation: Multimap = ArrayListMultimap.create() + val declarationByAnnotation: Multimap = LinkedHashMultimap.create() val annotationsOfDeclaration: LinkedHashMultimap = LinkedHashMultimap.create() - val declarationsUnderAnnotated: Multimap = ArrayListMultimap.create() + val declarationsUnderAnnotated: Multimap = LinkedHashMultimap.create() val parentAnnotationsOfDeclaration: LinkedHashMultimap = LinkedHashMultimap.create() val ownersForDeclaration: MutableMap> = mutableMapOf()