From: Jürg Billeter Date: Thu, 2 Aug 2012 12:43:22 +0000 (+0200) Subject: Accept comments in preprocessing directives X-Git-Tag: 0.17.4~14 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ab6c289627dfb2e4892a8b66827bac151a5969ae;p=thirdparty%2Fvala.git Accept comments in preprocessing directives Fixes bug 680874. --- diff --git a/vala/valascanner.vala b/vala/valascanner.vala index 39ee41a53..926a5374e 100644 --- a/vala/valascanner.vala +++ b/vala/valascanner.vala @@ -1203,6 +1203,11 @@ public class Vala.Scanner { return found; } + void pp_space () { + while (pp_whitespace () || comment ()) { + } + } + void pp_directive () { // hash sign current++; @@ -1217,7 +1222,7 @@ public class Vala.Scanner { return; } - pp_whitespace (); + pp_space (); char* begin = current; int len = 0; @@ -1264,14 +1269,14 @@ public class Vala.Scanner { } void pp_eol () { - pp_whitespace (); + pp_space (); if (current >= end || current[0] != '\n') { Report.error (get_source_reference (0), "syntax error, expected newline"); } } void parse_pp_if () { - pp_whitespace (); + pp_space (); bool condition = parse_pp_expression (); @@ -1289,7 +1294,7 @@ public class Vala.Scanner { } void parse_pp_elif () { - pp_whitespace (); + pp_space (); bool condition = parse_pp_expression (); @@ -1375,9 +1380,9 @@ public class Vala.Scanner { } else if (current[0] == '(') { current++; column++; - pp_whitespace (); + pp_space (); bool result = parse_pp_expression (); - pp_whitespace (); + pp_space (); if (current < end && current[0] == ')') { current++; column++; @@ -1395,7 +1400,7 @@ public class Vala.Scanner { if (current < end && current[0] == '!') { current++; column++; - pp_whitespace (); + pp_space (); return !parse_pp_unary_expression (); } @@ -1404,18 +1409,18 @@ public class Vala.Scanner { bool parse_pp_equality_expression () { bool left = parse_pp_unary_expression (); - pp_whitespace (); + pp_space (); while (true) { if (current < end - 1 && current[0] == '=' && current[1] == '=') { current += 2; column += 2; - pp_whitespace (); + pp_space (); bool right = parse_pp_unary_expression (); left = (left == right); } else if (current < end - 1 && current[0] == '!' && current[1] == '=') { current += 2; column += 2; - pp_whitespace (); + pp_space (); bool right = parse_pp_unary_expression (); left = (left != right); } else { @@ -1427,11 +1432,11 @@ public class Vala.Scanner { bool parse_pp_and_expression () { bool left = parse_pp_equality_expression (); - pp_whitespace (); + pp_space (); while (current < end - 1 && current[0] == '&' && current[1] == '&') { current += 2; column += 2; - pp_whitespace (); + pp_space (); bool right = parse_pp_equality_expression (); left = left && right; } @@ -1440,11 +1445,11 @@ public class Vala.Scanner { bool parse_pp_or_expression () { bool left = parse_pp_and_expression (); - pp_whitespace (); + pp_space (); while (current < end - 1 && current[0] == '|' && current[1] == '|') { current += 2; column += 2; - pp_whitespace (); + pp_space (); bool right = parse_pp_and_expression (); left = left || right; }