]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
enclose prefix increment and decrement unary expressions transformend to
authorRaffaele Sandrini <raffaele@sandrini.ch>
Mon, 20 Aug 2007 14:48:27 +0000 (14:48 +0000)
committerRaffaele Sandrini <rasa@src.gnome.org>
Mon, 20 Aug 2007 14:48:27 +0000 (14:48 +0000)
2007-08-20  Raffaele Sandrini  <raffaele@sandrini.ch>

* vala/valasemanticanalyzer.vala: enclose prefix increment and decrement unary
  expressions transformend to binary expressions into parenthesis

svn path=/trunk/; revision=485

ChangeLog
vala/valasemanticanalyzer.vala

index b3b7ca768aecf2602452ab9c71823cc26a6a6753..1951b9813cb150bd3a1165255bb7b4b7aada43ee 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2007-08-20  Raffaele Sandrini  <raffaele@sandrini.ch>
+
+       * vala/valasemanticanalyzer.vala: enclose prefix increment and decrement unary
+         expressions transformend to binary expressions into parenthesis
+
 2007-08-20  Jürg Billeter  <j@bitron.ch>
 
        * vala/valasemanticanalyzer.vala: report error and fix critical to
index 161beb3b3429ac8a7dd304095ff0aaec38dc1405..184384d521730f32c36da2c622905b3586bd2fec 100644 (file)
@@ -1932,12 +1932,13 @@ public class Vala.SemanticAnalyzer : CodeVisitor {
                                return;
                        }
 
-                       var old_value = new MemberAccess (ma.inner, ma.member_name);
-                       var bin = new BinaryExpression (expr.operator == UnaryOperator.INCREMENT ? BinaryOperator.PLUS : BinaryOperator.MINUS, old_value, new LiteralExpression (new IntegerLiteral ("1")));
+                       var old_value = new MemberAccess (ma.inner, ma.member_name, expr.inner.source_reference);
+                       var bin = new BinaryExpression (expr.operator == UnaryOperator.INCREMENT ? BinaryOperator.PLUS : BinaryOperator.MINUS, old_value, new LiteralExpression (new IntegerLiteral ("1")), expr.source_reference);
 
-                       var assignment = new Assignment (ma, bin);
-                       expr.parent_node.replace (expr, assignment);
-                       assignment.accept (this);
+                       var assignment = new Assignment (ma, bin, AssignmentOperator.SIMPLE, expr.source_reference);
+                       var parenthexp = new ParenthesizedExpression (assignment, expr.source_reference);
+                       expr.parent_node.replace (expr, parenthexp);
+                       parenthexp.accept (this);
                        return;
                } else if (expr.operator == UnaryOperator.REF) {
                        // value type