KT-2829 Local variables used only in multi-declaration are marked as unused
#KT-2829 fixed
This commit is contained in:
@@ -700,7 +700,7 @@ public class JetControlFlowProcessor {
|
|||||||
public void visitMultiDeclaration(JetMultiDeclaration declaration) {
|
public void visitMultiDeclaration(JetMultiDeclaration declaration) {
|
||||||
JetExpression initializer = declaration.getInitializer();
|
JetExpression initializer = declaration.getInitializer();
|
||||||
if (initializer != null) {
|
if (initializer != null) {
|
||||||
builder.read(initializer);
|
value(initializer, false);
|
||||||
}
|
}
|
||||||
List<JetMultiDeclarationEntry> entries = declaration.getEntries();
|
List<JetMultiDeclarationEntry> entries = declaration.getEntries();
|
||||||
for (JetMultiDeclarationEntry entry : entries) {
|
for (JetMultiDeclarationEntry entry : entries) {
|
||||||
|
|||||||
@@ -0,0 +1,16 @@
|
|||||||
|
package test
|
||||||
|
|
||||||
|
fun a(s: String) { // <- ERROR
|
||||||
|
val (x, y) = Pair("", s)
|
||||||
|
println(x + y)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun b(s: String) {
|
||||||
|
val x = Pair("", s)
|
||||||
|
println(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
//from library
|
||||||
|
data class Pair<A, B>(val a: A, val b: B)
|
||||||
|
|
||||||
|
fun println(a: Any?) = a
|
||||||
@@ -1336,6 +1336,11 @@ public class JetDiagnosticsTestGenerated extends AbstractDiagnosticsTestWithEage
|
|||||||
doTest("compiler/testData/diagnostics/tests/declarationChecks/multiDeclarations/ForWithExplicitTypes.kt");
|
doTest("compiler/testData/diagnostics/tests/declarationChecks/multiDeclarations/ForWithExplicitTypes.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("kt2829.kt")
|
||||||
|
public void testKt2829() throws Exception {
|
||||||
|
doTest("compiler/testData/diagnostics/tests/declarationChecks/multiDeclarations/kt2829.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("RedeclarationInForLoop.kt")
|
@TestMetadata("RedeclarationInForLoop.kt")
|
||||||
public void testRedeclarationInForLoop() throws Exception {
|
public void testRedeclarationInForLoop() throws Exception {
|
||||||
doTest("compiler/testData/diagnostics/tests/declarationChecks/multiDeclarations/RedeclarationInForLoop.kt");
|
doTest("compiler/testData/diagnostics/tests/declarationChecks/multiDeclarations/RedeclarationInForLoop.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user