[FIR] Adapt VAL_OR_VAR strategy & use it in CanBeValChecker
This commit is contained in:
+1
-3
@@ -12,11 +12,9 @@ import org.jetbrains.kotlin.fir.analysis.cfa.*
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.getChildren
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.DiagnosticReporter
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors
|
||||
import org.jetbrains.kotlin.fir.analysis.getChild
|
||||
import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference
|
||||
import org.jetbrains.kotlin.fir.resolve.dfa.cfg.*
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
|
||||
import org.jetbrains.kotlin.lexer.KtTokens
|
||||
|
||||
object CanBeValChecker : AbstractFirPropertyInitializationChecker() {
|
||||
override fun analyze(
|
||||
@@ -42,7 +40,7 @@ object CanBeValChecker : AbstractFirPropertyInitializationChecker() {
|
||||
var lastDestructuredVariables = 0
|
||||
|
||||
for ((symbol, value) in propertiesCharacteristics) {
|
||||
val source = symbol.fir.source?.getChild(setOf(KtTokens.VAL_KEYWORD, KtTokens.VAR_KEYWORD), depth = 1)
|
||||
val source = symbol.fir.source
|
||||
if (symbol.isDestructuring) {
|
||||
lastDestructuringSource = source
|
||||
lastDestructuredVariables = symbol.getDestructuringChildrenCount() ?: continue
|
||||
|
||||
+1
-1
@@ -159,7 +159,7 @@ object FirErrors {
|
||||
val REDUNDANT_RETURN_UNIT_TYPE by warning0<FirSourceElement, PsiTypeElement>()
|
||||
val REDUNDANT_EXPLICIT_TYPE by warning0<FirSourceElement, PsiElement>()
|
||||
val REDUNDANT_SINGLE_EXPRESSION_STRING_TEMPLATE by warning0<FirSourceElement, PsiElement>()
|
||||
val CAN_BE_VAL by warning0<FirSourceElement, PsiElement>()
|
||||
val CAN_BE_VAL by warning0<FirSourceElement, KtDeclaration>(SourceElementPositioningStrategies.VAL_OR_VAR_NODE)
|
||||
val CAN_BE_REPLACED_WITH_OPERATOR_ASSIGNMENT by warning0<FirSourceElement, KtExpression>(SourceElementPositioningStrategies.OPERATOR)
|
||||
val REDUNDANT_CALL_OF_CONVERSION_METHOD by warning0<FirSourceElement, PsiElement>()
|
||||
val ARRAY_EQUALITY_OPERATOR_CAN_BE_REPLACED_WITH_EQUALS by warning0<FirSourceElement, KtExpression>(SourceElementPositioningStrategies.OPERATOR)
|
||||
|
||||
@@ -477,11 +477,12 @@ object PositioningStrategies {
|
||||
}
|
||||
|
||||
@JvmField
|
||||
val VAL_OR_VAR_NODE: PositioningStrategy<KtNamedDeclaration> = object : PositioningStrategy<KtNamedDeclaration>() {
|
||||
override fun mark(element: KtNamedDeclaration): List<TextRange> {
|
||||
val VAL_OR_VAR_NODE: PositioningStrategy<KtDeclaration> = object : PositioningStrategy<KtDeclaration>() {
|
||||
override fun mark(element: KtDeclaration): List<TextRange> {
|
||||
return when (element) {
|
||||
is KtParameter -> markElement(element.valOrVarKeyword ?: element)
|
||||
is KtProperty -> markElement(element.valOrVarKeyword)
|
||||
is KtDestructuringDeclaration -> markElement(element.valOrVarKeyword ?: element)
|
||||
else -> error("Declaration is neither a parameter nor a property: " + element.getElementTextWithContext())
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user