From 792c26decc3b5de37893b08c310c0f082d4be69d Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Fri, 31 May 2019 16:53:29 +0300 Subject: [PATCH] FirClassDeclaredMemberScope: do not create nested one for constructors --- .../impl/FirClassDeclaredMemberScope.kt | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassDeclaredMemberScope.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassDeclaredMemberScope.kt index 9a1a1ff1e92..37858bd222c 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassDeclaredMemberScope.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassDeclaredMemberScope.kt @@ -22,10 +22,18 @@ class FirClassDeclaredMemberScope(klass: FirRegularClass) : FirScope { private val callablesIndex: Map> by lazy { val result = mutableMapOf>() for (declaration in klass.declarations) { - if (declaration is FirCallableMemberDeclaration) { - val name = if (declaration is FirConstructor) klass.name else declaration.name - val list = result.getOrPut(name) { mutableListOf() } - list += declaration.symbol + when (declaration) { + is FirCallableMemberDeclaration -> { + val name = if (declaration is FirConstructor) klass.name else declaration.name + result.getOrPut(name) { mutableListOf() } += declaration.symbol + } + is FirRegularClass -> { + for (nestedDeclaration in declaration.declarations) { + if (nestedDeclaration is FirConstructor) { + result.getOrPut(declaration.name) { mutableListOf() } += nestedDeclaration.symbol + } + } + } } } result @@ -41,13 +49,6 @@ class FirClassDeclaredMemberScope(klass: FirRegularClass) : FirScope { } override fun processFunctionsByName(name: Name, processor: (ConeFunctionSymbol) -> ProcessorAction): ProcessorAction { - val matchedClass = classIndex[name] - - if (matchedClass != null) { - if (FirClassDeclaredMemberScope(matchedClass.fir).processFunctionsByName(name, processor) == STOP) { - return STOP - } - } val symbols = callablesIndex[name] ?: emptyList() for (symbol in symbols) { if (symbol is ConeFunctionSymbol && !processor(symbol)) {