glsl/glcpp: Fix to emit spaces following directives
authorCarl Worth <cworth@cworth.org>
Mon, 28 Jul 2014 15:59:25 +0000 (08:59 -0700)
committerCarl Worth <cworth@cworth.org>
Tue, 29 Jul 2014 22:11:48 +0000 (15:11 -0700)
The glcpp lexer and parser use the space_tokens state bit to avoid emitting
tokens for spaces while parsing a directive. Previously, this bit was only
being set again by the first non-space token following a directive.

This led to a bug where a space, (or a comment that should emit a space),
immediately following a directive, (optionally searated by newlines), would be
omitted from the output.

Here we fix the bug by also setting the space_tokens bit whenever we lex a
newline in the standard start conditions.

src/glsl/glcpp/glcpp-lex.l
src/glsl/glcpp/tests/125-es-short-circuit-undefined.c.expected

index a1a8e76af0a2e937beb9f723b3fd743264680bd4..cfb9f2a18be47a8e3407a0a1b7acdc4d321bb5ff 100644 (file)
@@ -355,6 +355,7 @@ HEXADECIMAL_INTEGER 0[xX][0-9a-fA-F]+[uU]?
        if (parser->commented_newlines) {
                BEGIN NEWLINE_CATCHUP;
        }
+       yyextra->space_tokens = 1;
        yyextra->lexing_directive = 0;
        yylineno++;
        yycolumn = 0;
index 93bcffb47c827d6d6e56474b38c878546c2d9240..ce5c102ed33bff11c452e53af4d5f05e2f012558 100644 (file)
@@ -8,6 +8,7 @@
 
 #version 300 es
 
 
 
 
@@ -15,8 +16,7 @@
 
 
 
-
-
 
 Success