From 411dc5d60e5adc49039689cc979b493cd02cadc1 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Thu, 7 Nov 2019 18:20:42 +0300 Subject: [PATCH] FIR nested classifier scope building: optimize companion search --- .../transformers/FirAbstractTreeTransformerWithSuperTypes.kt | 4 ++-- .../body/resolve/FirDeclarationsResolveTransformer.kt | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirAbstractTreeTransformerWithSuperTypes.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirAbstractTreeTransformerWithSuperTypes.kt index 98ce81a8c06..87468f64aa6 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirAbstractTreeTransformerWithSuperTypes.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirAbstractTreeTransformerWithSuperTypes.kt @@ -41,8 +41,8 @@ abstract class FirAbstractTreeTransformerWithSuperTypes( nestedClassifierScope(it.lookupTag.classId, session) } regularClass.addTypeParametersScope() - val companionObjects = regularClass.declarations.filterIsInstance().filter { it.isCompanion } - for (companionObject in companionObjects) { + val companionObject = regularClass.companionObject + if (companionObject != null) { towerScope.scopes += nestedClassifierScope(companionObject) } towerScope.scopes += nestedClassifierScope(regularClass) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt index dc746d35907..b9ea678c983 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt @@ -231,8 +231,8 @@ class FirDeclarationsResolveTransformer(transformer: FirBodyResolveTransformer) if (regularClass.symbol.classId.isLocal) { prepareLocalClassForBodyResolve(regularClass) } - val companionObjects = regularClass.declarations.filterIsInstance().filter { it.isCompanion } - for (companionObject in companionObjects) { + val companionObject = regularClass.companionObject + if (companionObject != null) { topLevelScopes += nestedClassifierScope(companionObject) } topLevelScopes += nestedClassifierScope(regularClass)