From ceed3e7355226c1ab186609a7ce6dfba2e759275 Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Tue, 16 Mar 2021 11:15:13 +0100 Subject: [PATCH] FIR IDE: separate KtSymbolByFirBuilder.buildVariableSymbol into functions --- .../frontend/api/fir/KtSymbolByFirBuilder.kt | 30 +++++++++++++++---- 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/KtSymbolByFirBuilder.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/KtSymbolByFirBuilder.kt index e7555e00bd1..26a2625f0c8 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/KtSymbolByFirBuilder.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/KtSymbolByFirBuilder.kt @@ -207,14 +207,32 @@ internal class KtSymbolByFirBuilder private constructor( } } - //TODO separate to functions fun buildVariableSymbol(fir: FirProperty): KtVariableSymbol { + return when { + fir.isLocal -> buildLocalVariableSymbol(fir) + fir is FirSyntheticProperty -> buildSyntheticJavaPropertySymbol(fir) + else -> buildPropertySymbol(fir) + } + } + + fun buildPropertySymbol(fir: FirProperty): KtPropertySymbol { + require(!fir.isLocal) + require(fir !is FirSyntheticProperty) return symbolsCache.cache(fir) { - when { - fir.isLocal -> KtFirLocalVariableSymbol(fir, resolveState, token, this@KtSymbolByFirBuilder) - fir is FirSyntheticProperty -> KtFirSyntheticJavaPropertySymbol(fir, resolveState, token, this@KtSymbolByFirBuilder) - else -> KtFirKotlinPropertySymbol(fir, resolveState, token, this@KtSymbolByFirBuilder) - } + KtFirKotlinPropertySymbol(fir, resolveState, token, this@KtSymbolByFirBuilder) + } + } + + fun buildLocalVariableSymbol(fir: FirProperty): KtFirLocalVariableSymbol { + require(fir.isLocal) + return symbolsCache.cache(fir) { + KtFirLocalVariableSymbol(fir, resolveState, token, this@KtSymbolByFirBuilder) + } + } + + fun buildSyntheticJavaPropertySymbol(fir: FirSyntheticProperty): KtFirSyntheticJavaPropertySymbol { + return symbolsCache.cache(fir) { + KtFirSyntheticJavaPropertySymbol(fir, resolveState, token, this@KtSymbolByFirBuilder) } }