diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/scopes/firScopeUtils.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/scopes/firScopeUtils.kt index b12e8f3d260..1506c81f82e 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/scopes/firScopeUtils.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/scopes/firScopeUtils.kt @@ -20,14 +20,16 @@ internal fun FirScope.getCallableSymbols( builder: KtSymbolByFirBuilder ): Sequence = sequence { callableNames.forEach { name -> - val callables = mutableListOf() - processFunctionsByName(name) { firSymbol -> - callables.add(builder.functionLikeBuilder.buildFunctionSymbol(firSymbol)) + yieldList { + processFunctionsByName(name) { firSymbol -> + add(builder.functionLikeBuilder.buildFunctionSymbol(firSymbol)) + } } - processPropertiesByName(name) { firSymbol -> - callables.add(builder.callableBuilder.buildCallableSymbol(firSymbol)) + yieldList { + processPropertiesByName(name) { firSymbol -> + add(builder.callableBuilder.buildCallableSymbol(firSymbol)) + } } - yieldAll(callables) } } @@ -36,33 +38,39 @@ internal fun FirScope.getCallableSignatures( builder: KtSymbolByFirBuilder ): Sequence> = sequence { callableNames.forEach { name -> - val signatures = mutableListOf>() - processFunctionsByName(name) { firSymbol -> - signatures.add(builder.functionLikeBuilder.buildFunctionLikeSignature(firSymbol)) + yieldList { + processFunctionsByName(name) { firSymbol -> + add(builder.functionLikeBuilder.buildFunctionLikeSignature(firSymbol)) + } } - processPropertiesByName(name) { firSymbol -> - signatures.add(builder.variableLikeBuilder.buildVariableLikeSignature(firSymbol)) + yieldList { + processPropertiesByName(name) { firSymbol -> + add(builder.variableLikeBuilder.buildVariableLikeSignature(firSymbol)) + } } - yieldAll(signatures) } } internal fun FirScope.getClassifierSymbols(classLikeNames: Collection, builder: KtSymbolByFirBuilder): Sequence = sequence { classLikeNames.forEach { name -> - val classifierSymbols = mutableListOf() - processClassifiersByName(name) { firSymbol -> - classifierSymbols.add(builder.classifierBuilder.buildClassifierSymbol(firSymbol)) + yieldList { + processClassifiersByName(name) { firSymbol -> + add(builder.classifierBuilder.buildClassifierSymbol(firSymbol)) + } } - yieldAll(classifierSymbols) } } internal fun FirScope.getConstructors(builder: KtSymbolByFirBuilder): Sequence = sequence { - val constructorSymbols = mutableListOf() - processDeclaredConstructors { firSymbol -> - constructorSymbols.add(builder.functionLikeBuilder.buildConstructorSymbol(firSymbol)) + yieldList { + processDeclaredConstructors { firSymbol -> + add(builder.functionLikeBuilder.buildConstructorSymbol(firSymbol)) + } } - yieldAll(constructorSymbols) } + +private suspend inline fun SequenceScope.yieldList(listBuilder: MutableList.() -> Unit) { + yieldAll(buildList(listBuilder)) +} \ No newline at end of file