From: Luca Bruno Date: Sun, 21 Jun 2015 13:07:23 +0000 (+0200) Subject: parser: -val is now parsed as a literal instead of unary expression X-Git-Tag: 0.29.2~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3b9c095fa3018029818cf19b4c9fcbe8bec34c72;p=thirdparty%2Fvala.git parser: -val is now parsed as a literal instead of unary expression Fixes bug 643612 --- diff --git a/tests/Makefile.am b/tests/Makefile.am index 343da516e..03b228d67 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -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 \ diff --git a/vala/valaparser.vala b/vala/valaparser.vala index 247a85c84..e25eef895 100644 --- a/vala/valaparser.vala +++ b/vala/valaparser.vala @@ -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 ()) {