glcpp: don't push #line directives into next line
authorFabian Bieler <fabianbieler@fastmail.fm>
Tue, 24 Jul 2012 13:36:46 +0000 (15:36 +0200)
committerMatt Turner <mattst88@gmail.com>
Fri, 9 Nov 2012 22:33:08 +0000 (14:33 -0800)
By moving the HASH_LINE rule out of control_line: and into line:, we avoid
adding control_line's additional \n (as seen in the first hunk).

mattst88: Carl and I determined independently of Fabian that the 091
test needed to be modified identically to this, and our patch to fix the
test was more complicated.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=51506
Reviewed-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Carl Worth <cworth@cworth.org>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/glsl/glcpp/glcpp-parse.y
src/glsl/glcpp/tests/091-hash-line.c.expected

index 16d29650dfe1c0f528a7608e3be6c1b6938c3b10..9628637dafcf94b1d49d483553b34906df708177 100644 (file)
@@ -190,6 +190,14 @@ line:
        control_line {
                ralloc_asprintf_rewrite_tail (&parser->output, &parser->output_length, "\n");
        }
+|      HASH_LINE pp_tokens NEWLINE {
+               if (parser->skip_stack == NULL ||
+                   parser->skip_stack->type == SKIP_NO_SKIP)
+               {
+                       _glcpp_parser_expand_and_lex_from (parser,
+                                                          LINE_EXPANDED, $2);
+               }
+       }
 |      text_line {
                _glcpp_parser_print_expanded_token_list (parser, $1);
                ralloc_asprintf_rewrite_tail (&parser->output, &parser->output_length, "\n");
@@ -244,14 +252,6 @@ control_line:
                }
                ralloc_free ($2);
        }
-|      HASH_LINE pp_tokens NEWLINE {
-               if (parser->skip_stack == NULL ||
-                   parser->skip_stack->type == SKIP_NO_SKIP)
-               {
-                       _glcpp_parser_expand_and_lex_from (parser,
-                                                          LINE_EXPANDED, $2);
-               }
-       }
 |      HASH_IF conditional_tokens NEWLINE {
                /* Be careful to only evaluate the 'if' expression if
                 * we are not skipping. When we are skipping, we
index 976d178dfb2072677263b99d57078fce3b9f1b87..48af0b296e436d9577d9b0a520e55b7eb0cc8807 100644 (file)
@@ -2,7 +2,6 @@
 0:25(1): preprocessor error: #error line 25 error
 1:0(1): preprocessor error: #error source 1, line 0 error
 2:30(1): preprocessor error: #error source 2, line 30 error
-
 #line 0
 
 #line 25
@@ -17,3 +16,4 @@
 #line 90 2
 
 #line 180 2
+