]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
parser: -val is now parsed as a literal instead of unary expression
authorLuca Bruno <lucabru@src.gnome.org>
Sun, 21 Jun 2015 13:07:23 +0000 (15:07 +0200)
committerLuca Bruno <lucabru@src.gnome.org>
Sun, 21 Jun 2015 13:07:23 +0000 (15:07 +0200)
Fixes bug 643612

tests/Makefile.am
vala/valaparser.vala

index 343da516e70afd315b2b10040e52c5da8b0abc25..03b228d671d4a239e75984a7e543e40ac349aa82 100644 (file)
@@ -28,6 +28,7 @@ TESTS = \
        basic-types/bug596637.vala \
        basic-types/bug596785.vala \
        basic-types/bug632322.vala \
+       basic-types/bug643612.vala \
        basic-types/bug644046.vala \
        basic-types/bug647222.vala \
        basic-types/bug648364.vala \
index 247a85c84833289f39e6eb785ceea7de357d8853..e25eef89532bd033f5d148528dd3c25ec96d4432 100644 (file)
@@ -1039,6 +1039,14 @@ public class Vala.Parser : CodeVisitor {
                if (operator != UnaryOperator.NONE) {
                        next ();
                        var op = parse_unary_expression ();
+                       var lit = op as IntegerLiteral;
+                       if (lit != null) {
+                               if (operator == UnaryOperator.PLUS) {
+                                       return lit;
+                               } else if (operator == UnaryOperator.MINUS) {
+                                       return new IntegerLiteral ("-"+lit.value, get_src (begin));
+                               }
+                       }
                        return new UnaryExpression (operator, op, get_src (begin));
                }
                switch (current ()) {