Report warning on unused entities that can be renamed to _

Currently it's all about lambda parameters/destructuring entries

 #KT-14347 In Progress
This commit is contained in:
Denis Zharkov
2016-10-13 16:44:27 +03:00
parent a9fcee098d
commit 4c69416f2b
56 changed files with 123 additions and 121 deletions
@@ -578,6 +578,7 @@ class ControlFlowInformationProvider private constructor(
}
else if (element is KtParameter) {
val owner = element.parent?.parent
if (element.isSingleUnderscore) return@traverse
when (owner) {
is KtPrimaryConstructor -> if (!element.hasValOrVar()) {
val containingClass = owner.getContainingClassOrObject()
@@ -590,7 +591,6 @@ class ControlFlowInformationProvider private constructor(
is KtFunction -> {
val mainFunctionDetector = MainFunctionDetector(trace.bindingContext)
val isMain = owner is KtNamedFunction && mainFunctionDetector.isMain(owner)
if (owner is KtFunctionLiteral) return@traverse
val functionDescriptor =
trace.get(BindingContext.DECLARATION_TO_DESCRIPTOR, owner) as? FunctionDescriptor
?: throw AssertionError(owner.text)
@@ -42,7 +42,6 @@ import org.jetbrains.kotlin.parsing.KotlinExpressionParsing;
import org.jetbrains.kotlin.psi.psiUtil.KtPsiUtilKt;
import org.jetbrains.kotlin.resolve.StatementFilter;
import org.jetbrains.kotlin.resolve.StatementFilterKt;
import org.jetbrains.kotlin.types.expressions.OperatorConventions;
import java.util.Collection;
import java.util.HashSet;
@@ -280,9 +279,8 @@ public class KtPsiUtil {
if (!(declaration instanceof KtVariableDeclaration)) return false;
if (declaration instanceof KtProperty) return true;
assert declaration instanceof KtDestructuringDeclarationEntry;
KtDestructuringDeclaration parentDeclaration = (KtDestructuringDeclaration) declaration.getParent();
List<KtDestructuringDeclarationEntry> entries = parentDeclaration.getEntries();
return entries.size() > 1 && entries.get(entries.size() - 1) == declaration;
// We can always replace destructuring entry with _
return true;
}
@Nullable