From 67ec48eaa6fe29ad4aa5b6d85e1b78114ff68e6c Mon Sep 17 00:00:00 2001 From: Svetlana Isakova Date: Wed, 26 Sep 2012 15:17:26 +0400 Subject: [PATCH] KT-2829 Local variables used only in multi-declaration are marked as unused #KT-2829 fixed --- .../jet/lang/cfg/JetControlFlowProcessor.java | 2 +- .../multiDeclarations/kt2829.kt | 16 ++++++++++++++++ .../checkers/JetDiagnosticsTestGenerated.java | 5 +++++ 3 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 compiler/testData/diagnostics/tests/declarationChecks/multiDeclarations/kt2829.kt diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowProcessor.java b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowProcessor.java index 9658a0f774b..804b834b864 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowProcessor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowProcessor.java @@ -700,7 +700,7 @@ public class JetControlFlowProcessor { public void visitMultiDeclaration(JetMultiDeclaration declaration) { JetExpression initializer = declaration.getInitializer(); if (initializer != null) { - builder.read(initializer); + value(initializer, false); } List entries = declaration.getEntries(); for (JetMultiDeclarationEntry entry : entries) { diff --git a/compiler/testData/diagnostics/tests/declarationChecks/multiDeclarations/kt2829.kt b/compiler/testData/diagnostics/tests/declarationChecks/multiDeclarations/kt2829.kt new file mode 100644 index 00000000000..d907ea26ca0 --- /dev/null +++ b/compiler/testData/diagnostics/tests/declarationChecks/multiDeclarations/kt2829.kt @@ -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(val a: A, val b: B) + +fun println(a: Any?) = a \ No newline at end of file diff --git a/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java b/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java index 71ee5ab3b31..bca94575645 100644 --- a/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java @@ -1336,6 +1336,11 @@ public class JetDiagnosticsTestGenerated extends AbstractDiagnosticsTestWithEage 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") public void testRedeclarationInForLoop() throws Exception { doTest("compiler/testData/diagnostics/tests/declarationChecks/multiDeclarations/RedeclarationInForLoop.kt");