summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Worth <cworth@cworth.org>2010-08-11 13:59:22 -0700
committerCarl Worth <cworth@cworth.org>2010-08-11 14:38:04 -0700
commit253cad3f424f71f6984431e5edbde1694ccfae3f (patch)
treeb9930838da3da94b060c6589448ab48e129a3c42
parent624dd585c72103e5bffbc600cdf7bdfba5305a15 (diff)
glcpp: Add an explicit diagnostic for #if with no expression.
This is more clear than the previously-generated diagnostic which was something confusing like "enexpected newline". This change makse test 080-if-witout-expression.c now pass.
-rw-r--r--src/glsl/glcpp/glcpp-parse.y10
-rw-r--r--src/glsl/glcpp/tests/080-if-without-expression.c.expected5
2 files changed, 14 insertions, 1 deletions
diff --git a/src/glsl/glcpp/glcpp-parse.y b/src/glsl/glcpp/glcpp-parse.y
index 795030ecfe7..0e0d9d412b6 100644
--- a/src/glsl/glcpp/glcpp-parse.y
+++ b/src/glsl/glcpp/glcpp-parse.y
@@ -241,6 +241,16 @@ control_line:
parser->skip_stack->type = SKIP_TO_ENDIF;
}
}
+| HASH_IF NEWLINE {
+ /* #if without an expression is only an error if we
+ * are not skipping */
+ if (parser->skip_stack == NULL ||
+ parser->skip_stack->type == SKIP_NO_SKIP)
+ {
+ glcpp_error(& @1, parser, "#if with no expression");
+ }
+ _glcpp_parser_skip_stack_push_if (parser, & @1, 0);
+ }
| HASH_IFDEF IDENTIFIER junk NEWLINE {
macro_t *macro = hash_table_find (parser->defines, $2);
talloc_free ($2);
diff --git a/src/glsl/glcpp/tests/080-if-without-expression.c.expected b/src/glsl/glcpp/tests/080-if-without-expression.c.expected
index 1a3e383e9ad..768ba0f473f 100644
--- a/src/glsl/glcpp/tests/080-if-without-expression.c.expected
+++ b/src/glsl/glcpp/tests/080-if-without-expression.c.expected
@@ -1,3 +1,6 @@
0:2(1): preprocessor error: #if with no expression
-
+
+
+
+