UNUSED_VARIABLE is now reported only for last entry of destructuring declaration (if applicable) #KT-14221 Fixed
This commit is contained in:
@@ -572,7 +572,7 @@ class ControlFlowInformationProvider private constructor(
|
||||
val element = instruction.variableDeclarationElement as? KtNamedDeclaration ?: return@traverse
|
||||
element.nameIdentifier ?: return@traverse
|
||||
if (!VariableUseState.isUsed(variableUseState)) {
|
||||
if (KtPsiUtil.isVariableNotParameterDeclaration(element)) {
|
||||
if (KtPsiUtil.isRemovableVariableDeclaration(element)) {
|
||||
report(Errors.UNUSED_VARIABLE.on(element, variableDescriptor), ctxt)
|
||||
}
|
||||
else if (element is KtParameter) {
|
||||
@@ -607,7 +607,7 @@ class ControlFlowInformationProvider private constructor(
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (variableUseState === ONLY_WRITTEN_NEVER_READ && KtPsiUtil.isVariableNotParameterDeclaration(element)) {
|
||||
else if (variableUseState === ONLY_WRITTEN_NEVER_READ && KtPsiUtil.isRemovableVariableDeclaration(element)) {
|
||||
report(Errors.ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE.on(element, variableDescriptor), ctxt)
|
||||
}
|
||||
else if (variableUseState === WRITTEN_AFTER_READ && element is KtVariableDeclaration) {
|
||||
|
||||
@@ -276,12 +276,13 @@ public class KtPsiUtil {
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean isVariableNotParameterDeclaration(@NotNull KtDeclaration declaration) {
|
||||
public static boolean isRemovableVariableDeclaration(@NotNull KtDeclaration declaration) {
|
||||
if (!(declaration instanceof KtVariableDeclaration)) return false;
|
||||
if (declaration instanceof KtProperty) return true;
|
||||
assert declaration instanceof KtDestructuringDeclarationEntry;
|
||||
KtDestructuringDeclarationEntry multiDeclarationEntry = (KtDestructuringDeclarationEntry) declaration;
|
||||
return !(multiDeclarationEntry.getParent().getParent().getParent() instanceof KtForExpression);
|
||||
KtDestructuringDeclaration parentDeclaration = (KtDestructuringDeclaration) declaration.getParent();
|
||||
List<KtDestructuringDeclarationEntry> entries = parentDeclaration.getEntries();
|
||||
return entries.size() > 1 && entries.get(entries.size() - 1) == declaration;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
|
||||
Reference in New Issue
Block a user