From aeca112c5bfed4b26e8865bd857f0e2aeb807c2e Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Tue, 7 Jun 2022 15:15:03 +0200 Subject: [PATCH] [analysis api fir, refactoring] move scope utils out of KtFirDelegatingScope.kt --- .../api/fir/scopes/KtFirDelegatingScope.kt | 38 ------------- .../analysis/api/fir/scopes/firScopeUtils.kt | 53 +++++++++++++++++++ 2 files changed, 53 insertions(+), 38 deletions(-) create mode 100644 analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/scopes/firScopeUtils.kt diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/scopes/KtFirDelegatingScope.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/scopes/KtFirDelegatingScope.kt index cf1fd1e5c1a..712a90295e3 100644 --- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/scopes/KtFirDelegatingScope.kt +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/scopes/KtFirDelegatingScope.kt @@ -63,41 +63,3 @@ internal open class KtFirDelegatingScope( } -internal fun FirScope.getCallableSymbols(callableNames: Collection, builder: KtSymbolByFirBuilder) = sequence { - callableNames.forEach { name -> - val callables = mutableListOf() - processFunctionsByName(name) { firSymbol -> - callables.add(builder.functionLikeBuilder.buildFunctionSymbol(firSymbol)) - } - processPropertiesByName(name) { firSymbol -> - val symbol = when { - firSymbol is FirPropertySymbol && firSymbol.fir.isSubstitutionOverride -> { - builder.variableLikeBuilder.buildVariableSymbol(firSymbol) - } - else -> builder.callableBuilder.buildCallableSymbol(firSymbol) - } - callables.add(symbol) - } - yieldAll(callables) - } -} - -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)) - } - yieldAll(classifierSymbols) - } - } - -internal fun FirScope.getConstructors(builder: KtSymbolByFirBuilder): Sequence = - sequence { - val constructorSymbols = mutableListOf() - processDeclaredConstructors { firSymbol -> - constructorSymbols.add(builder.functionLikeBuilder.buildConstructorSymbol(firSymbol)) - } - yieldAll(constructorSymbols) - } 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 new file mode 100644 index 00000000000..9ab2875fcea --- /dev/null +++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/scopes/firScopeUtils.kt @@ -0,0 +1,53 @@ +import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder +import org.jetbrains.kotlin.analysis.api.symbols.KtCallableSymbol +import org.jetbrains.kotlin.analysis.api.symbols.KtClassifierSymbol +import org.jetbrains.kotlin.analysis.api.symbols.KtConstructorSymbol +import org.jetbrains.kotlin.fir.isSubstitutionOverride +import org.jetbrains.kotlin.fir.scopes.FirScope +import org.jetbrains.kotlin.fir.scopes.processClassifiersByName +import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol +import org.jetbrains.kotlin.name.Name + +/* + * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +internal fun FirScope.getCallableSymbols(callableNames: Collection, builder: KtSymbolByFirBuilder) = sequence { + callableNames.forEach { name -> + val callables = mutableListOf() + processFunctionsByName(name) { firSymbol -> + callables.add(builder.functionLikeBuilder.buildFunctionSymbol(firSymbol)) + } + processPropertiesByName(name) { firSymbol -> + val symbol = when { + firSymbol is FirPropertySymbol && firSymbol.fir.isSubstitutionOverride -> { + builder.variableLikeBuilder.buildVariableSymbol(firSymbol) + } + else -> builder.callableBuilder.buildCallableSymbol(firSymbol) + } + callables.add(symbol) + } + yieldAll(callables) + } +} + +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)) + } + yieldAll(classifierSymbols) + } + } + +internal fun FirScope.getConstructors(builder: KtSymbolByFirBuilder): Sequence = + sequence { + val constructorSymbols = mutableListOf() + processDeclaredConstructors { firSymbol -> + constructorSymbols.add(builder.functionLikeBuilder.buildConstructorSymbol(firSymbol)) + } + yieldAll(constructorSymbols) + }