[FIR] Introduce FirPropertySymbol.initializerSource

This commit is contained in:
Nikolay Lunyak
2024-01-12 13:29:17 +02:00
committed by Space Team
parent f08c167729
commit d66b38b7a9
2 changed files with 6 additions and 7 deletions
@@ -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
}
}
@@ -48,6 +48,9 @@ open class FirPropertySymbol(callableId: CallableId, ) : FirVariableSymbol<FirPr
val hasInitializer: Boolean
get() = fir.initializer != null
val initializerSource: KtSourceElement?
get() = fir.initializer?.source
val resolvedInitializer: FirExpression?
get() {
lazyResolveToPhase(FirResolvePhase.BODY_RESOLVE)