From b94579a4ba6d4788512fe16a3e7521eebbb2c0ad Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Fri, 15 Apr 2011 19:16:31 +0400 Subject: [PATCH] Assignments to qualified expressions are supported in CF --- .../jetbrains/jet/lang/cfg/JetControlFlowProcessor.java | 5 +++++ idea/testData/cfg/Assignments.instructions | 9 +++++++++ idea/testData/cfg/Assignments.jet | 7 +++++++ 3 files changed, 21 insertions(+) diff --git a/idea/src/org/jetbrains/jet/lang/cfg/JetControlFlowProcessor.java b/idea/src/org/jetbrains/jet/lang/cfg/JetControlFlowProcessor.java index fffc992da55..1886efeddb9 100644 --- a/idea/src/org/jetbrains/jet/lang/cfg/JetControlFlowProcessor.java +++ b/idea/src/org/jetbrains/jet/lang/cfg/JetControlFlowProcessor.java @@ -187,6 +187,11 @@ public class JetControlFlowProcessor { else if (left instanceof JetArrayAccessExpression) { JetArrayAccessExpression arrayAccessExpression = (JetArrayAccessExpression) left; visitAssignToArrayAccess(expression, arrayAccessExpression); + } else if (left instanceof JetQualifiedExpression) { + JetQualifiedExpression qualifiedExpression = (JetQualifiedExpression) left; + value(qualifiedExpression.getReceiverExpression(), false, false); + value(expression.getOperationReference(), false, false); + builder.write(expression, left); } else { builder.unsupported(expression); // TODO } diff --git a/idea/testData/cfg/Assignments.instructions b/idea/testData/cfg/Assignments.instructions index b3689759034..dd1ad0bd64a 100644 --- a/idea/testData/cfg/Assignments.instructions +++ b/idea/testData/cfg/Assignments.instructions @@ -8,6 +8,9 @@ fun assignments() : Unit { val y = true && false val z = false && true + + val t = new Test(); + t.x = 1 } --------------------- l0: @@ -40,6 +43,12 @@ l4: l5: r(false && true) w(z) + r(new Test()) + w(t) + r(1) + r(t) + r(=) + w(t.x) l1: error: diff --git a/idea/testData/cfg/Assignments.jet b/idea/testData/cfg/Assignments.jet index 2bf1bd1286e..341c9c1d2c9 100644 --- a/idea/testData/cfg/Assignments.jet +++ b/idea/testData/cfg/Assignments.jet @@ -1,3 +1,7 @@ +class Test { + var x : Int; +} + fun assignments() : Unit { var x = 1 x = 2 @@ -7,4 +11,7 @@ fun assignments() : Unit { val y = true && false val z = false && true + + val t = new Test(); + t.x = 1 } \ No newline at end of file