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 f73e0bf526d..9a1a1ff1e92 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 @@ -5,7 +5,8 @@ package org.jetbrains.kotlin.fir.scopes.impl -import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration +import org.jetbrains.kotlin.fir.declarations.FirCallableMemberDeclaration +import org.jetbrains.kotlin.fir.declarations.FirConstructor import org.jetbrains.kotlin.fir.declarations.FirRegularClass import org.jetbrains.kotlin.fir.scopes.FirPosition import org.jetbrains.kotlin.fir.scopes.FirScope @@ -13,16 +14,30 @@ import org.jetbrains.kotlin.fir.scopes.ProcessorAction import org.jetbrains.kotlin.fir.scopes.ProcessorAction.NEXT import org.jetbrains.kotlin.fir.scopes.ProcessorAction.STOP import org.jetbrains.kotlin.fir.symbols.* +import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol +import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol import org.jetbrains.kotlin.name.Name class FirClassDeclaredMemberScope(klass: FirRegularClass) : FirScope { - private val callablesIndex by lazy { - klass.declarations.filterIsInstance() - .map { it.symbol }.groupBy { it.callableId.callableName } + 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 + } + } + result } - private val classIndex by lazy { - klass.declarations.filterIsInstance() - .map { it.symbol }.associateBy { it.fir.name } + private val classIndex: Map by lazy { + val result = mutableMapOf() + for (declaration in klass.declarations) { + if (declaration is FirRegularClass) { + result[declaration.name] = declaration.symbol + } + } + result } override fun processFunctionsByName(name: Name, processor: (ConeFunctionSymbol) -> ProcessorAction): ProcessorAction {