From d66b38b7a918cc4dd834e42a7692da58b33da11e Mon Sep 17 00:00:00 2001 From: Nikolay Lunyak Date: Fri, 12 Jan 2024 13:29:17 +0200 Subject: [PATCH] [FIR] Introduce `FirPropertySymbol.initializerSource` --- .../fir/analysis/checkers/extended/UnusedChecker.kt | 10 +++------- .../kotlin/fir/symbols/impl/FirVariableSymbol.kt | 3 +++ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/extended/UnusedChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/extended/UnusedChecker.kt index 8857ec4b4bf..6806803c04d 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/extended/UnusedChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/extended/UnusedChecker.kt @@ -22,7 +22,6 @@ import org.jetbrains.kotlin.fir.declarations.FirResolvePhase import org.jetbrains.kotlin.fir.expressions.* import org.jetbrains.kotlin.fir.references.toResolvedPropertySymbol import org.jetbrains.kotlin.fir.resolve.dfa.cfg.* -import org.jetbrains.kotlin.fir.symbols.SymbolInternals import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase import org.jetbrains.kotlin.name.SpecialNames @@ -65,9 +64,7 @@ object UnusedChecker : AbstractFirPropertyInitializationChecker() { val data = dataPerNode.values.mapNotNull { it[variableSymbol] }.reduceOrNull { acc, it -> acc.merge(it) } if (data != null) { variableSymbol.lazyResolveToPhase(FirResolvePhase.BODY_RESOLVE) - @OptIn(SymbolInternals::class) - val variable = variableSymbol.fir - val variableSource = variable.source + val variableSource = variableSymbol.source if (variableSource?.elementType == KtNodeTypes.DESTRUCTURING_DECLARATION) { return @@ -84,7 +81,7 @@ object UnusedChecker : AbstractFirPropertyInitializationChecker() { } } data.isRedundantInit -> { - val source = variable.initializer?.source + val source = variableSymbol.initializerSource reporter.reportOn(source, FirErrors.VARIABLE_INITIALIZER_IS_REDUNDANT, context) } data == VariableStatus.ONLY_WRITTEN_NEVER_READ -> { @@ -297,8 +294,7 @@ object UnusedChecker : AbstractFirPropertyInitializationChecker() { private val FirPropertySymbol.isLoopIterator: Boolean get() { - @OptIn(SymbolInternals::class) - return fir.initializer?.source?.kind == KtFakeSourceElementKind.DesugaredForLoop + return initializerSource?.kind == KtFakeSourceElementKind.DesugaredForLoop } } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/FirVariableSymbol.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/FirVariableSymbol.kt index f927e228cb0..82cb64bdb59 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/FirVariableSymbol.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/FirVariableSymbol.kt @@ -48,6 +48,9 @@ open class FirPropertySymbol(callableId: CallableId, ) : FirVariableSymbol