[FIR] Introduce FirPropertySymbol.initializerSource
This commit is contained in:
committed by
Space Team
parent
f08c167729
commit
d66b38b7a9
+3
-7
@@ -22,7 +22,6 @@ import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
|||||||
import org.jetbrains.kotlin.fir.expressions.*
|
import org.jetbrains.kotlin.fir.expressions.*
|
||||||
import org.jetbrains.kotlin.fir.references.toResolvedPropertySymbol
|
import org.jetbrains.kotlin.fir.references.toResolvedPropertySymbol
|
||||||
import org.jetbrains.kotlin.fir.resolve.dfa.cfg.*
|
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.impl.FirPropertySymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
|
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
|
||||||
import org.jetbrains.kotlin.name.SpecialNames
|
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) }
|
val data = dataPerNode.values.mapNotNull { it[variableSymbol] }.reduceOrNull { acc, it -> acc.merge(it) }
|
||||||
if (data != null) {
|
if (data != null) {
|
||||||
variableSymbol.lazyResolveToPhase(FirResolvePhase.BODY_RESOLVE)
|
variableSymbol.lazyResolveToPhase(FirResolvePhase.BODY_RESOLVE)
|
||||||
@OptIn(SymbolInternals::class)
|
val variableSource = variableSymbol.source
|
||||||
val variable = variableSymbol.fir
|
|
||||||
val variableSource = variable.source
|
|
||||||
|
|
||||||
if (variableSource?.elementType == KtNodeTypes.DESTRUCTURING_DECLARATION) {
|
if (variableSource?.elementType == KtNodeTypes.DESTRUCTURING_DECLARATION) {
|
||||||
return
|
return
|
||||||
@@ -84,7 +81,7 @@ object UnusedChecker : AbstractFirPropertyInitializationChecker() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
data.isRedundantInit -> {
|
data.isRedundantInit -> {
|
||||||
val source = variable.initializer?.source
|
val source = variableSymbol.initializerSource
|
||||||
reporter.reportOn(source, FirErrors.VARIABLE_INITIALIZER_IS_REDUNDANT, context)
|
reporter.reportOn(source, FirErrors.VARIABLE_INITIALIZER_IS_REDUNDANT, context)
|
||||||
}
|
}
|
||||||
data == VariableStatus.ONLY_WRITTEN_NEVER_READ -> {
|
data == VariableStatus.ONLY_WRITTEN_NEVER_READ -> {
|
||||||
@@ -297,8 +294,7 @@ object UnusedChecker : AbstractFirPropertyInitializationChecker() {
|
|||||||
|
|
||||||
private val FirPropertySymbol.isLoopIterator: Boolean
|
private val FirPropertySymbol.isLoopIterator: Boolean
|
||||||
get() {
|
get() {
|
||||||
@OptIn(SymbolInternals::class)
|
return initializerSource?.kind == KtFakeSourceElementKind.DesugaredForLoop
|
||||||
return fir.initializer?.source?.kind == KtFakeSourceElementKind.DesugaredForLoop
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -48,6 +48,9 @@ open class FirPropertySymbol(callableId: CallableId, ) : FirVariableSymbol<FirPr
|
|||||||
val hasInitializer: Boolean
|
val hasInitializer: Boolean
|
||||||
get() = fir.initializer != null
|
get() = fir.initializer != null
|
||||||
|
|
||||||
|
val initializerSource: KtSourceElement?
|
||||||
|
get() = fir.initializer?.source
|
||||||
|
|
||||||
val resolvedInitializer: FirExpression?
|
val resolvedInitializer: FirExpression?
|
||||||
get() {
|
get() {
|
||||||
lazyResolveToPhase(FirResolvePhase.BODY_RESOLVE)
|
lazyResolveToPhase(FirResolvePhase.BODY_RESOLVE)
|
||||||
|
|||||||
Reference in New Issue
Block a user