[FE 1.0] Don't report UNUSED_* warnings on local properties with delegate

^KT-25527 Fixed
This commit is contained in:
Dmitriy Novozhilov
2022-05-13 11:39:13 +03:00
committed by teamcity
parent 4d5a4ccd6b
commit 89b1307e16
8 changed files with 127 additions and 2 deletions
@@ -676,7 +676,9 @@ class ControlFlowInformationProviderImpl private constructor(
when (expressionInQuestion) {
is KtBinaryExpression -> if (expressionInQuestion.operationToken === KtTokens.EQ) {
expressionInQuestion.right?.let {
report(Errors.UNUSED_VALUE.on(expressionInQuestion, it, variableDescriptor), ctxt)
if (!variableDescriptor.isLocalVariableWithDelegate) {
report(Errors.UNUSED_VALUE.on(expressionInQuestion, it, variableDescriptor), ctxt)
}
}
}
is KtPostfixExpression -> {
@@ -689,6 +691,9 @@ class ControlFlowInformationProviderImpl private constructor(
}
}
private val VariableDescriptor.isLocalVariableWithDelegate: Boolean
get() = this is LocalVariableDescriptor && this.isDelegated
private fun processUnusedDeclaration(
element: KtNamedDeclaration,
variableDescriptor: VariableDescriptor,
@@ -710,7 +715,9 @@ class ControlFlowInformationProviderImpl private constructor(
processUnusedParameter(ctxt, element, variableDescriptor)
}
} else if (variableUseState === ONLY_WRITTEN_NEVER_READ && KtPsiUtil.isRemovableVariableDeclaration(element)) {
report(Errors.ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE.on(element, variableDescriptor), ctxt)
if (!variableDescriptor.isLocalVariableWithDelegate) {
report(Errors.ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE.on(element, variableDescriptor), ctxt)
}
} else if (variableUseState === WRITTEN_AFTER_READ && element is KtVariableDeclaration) {
when (element) {
is KtProperty ->