summaryrefslogtreecommitdiff
path: root/src/glsl/glcpp/glcpp-lex.l
diff options
context:
space:
mode:
authorCarl Worth <cworth@cworth.org>2010-07-20 14:13:32 -0700
committerIan Romanick <ian.d.romanick@intel.com>2010-07-20 17:01:11 -0700
commit1d7e03e48e87328ce0081021dde133921b78b406 (patch)
tree6bd7be0087307fe520cd2ab672b73e48a65f145c /src/glsl/glcpp/glcpp-lex.l
parent17f9beb6c313b41ca08984add7b76ecb84a7339e (diff)
glcpp: Fix support for nested #ifdef and nested #ifndef
Previously, if the outer #ifdef/#ifndef evaluated to false, the inner directive would not be parsed correctly, (the identifier as the subject of the #ifdef/#ifndef would inadvertently be skipped along with the other content correctly being skipped). We fix this by setting the lexing_if state in each case here. We also add a new test to the test suite to ensure that this case is tested.
Diffstat (limited to 'src/glsl/glcpp/glcpp-lex.l')
-rw-r--r--src/glsl/glcpp/glcpp-lex.l6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/glsl/glcpp/glcpp-lex.l b/src/glsl/glcpp/glcpp-lex.l
index a81c8f92c1..6773832f29 100644
--- a/src/glsl/glcpp/glcpp-lex.l
+++ b/src/glsl/glcpp/glcpp-lex.l
@@ -90,16 +90,18 @@ HEXADECIMAL_INTEGER 0[xX][0-9a-fA-F]+[uU]?
}
{HASH}ifdef/.*\n {
+ yyextra->lexing_if = 1;
yyextra->space_tokens = 0;
return HASH_IFDEF;
}
{HASH}ifndef/.*\n {
+ yyextra->lexing_if = 1;
yyextra->space_tokens = 0;
return HASH_IFNDEF;
}
-{HASH}if{HSPACE}*/[^_a-zA-Z0-9].*\n {
+{HASH}if/[^_a-zA-Z0-9].*\n {
yyextra->lexing_if = 1;
yyextra->space_tokens = 0;
return HASH_IF;
@@ -122,7 +124,7 @@ HEXADECIMAL_INTEGER 0[xX][0-9a-fA-F]+[uU]?
}
/* When skipping (due to an #if 0 or similar) consume anything
- * up to a newline. We do this less priroty than any
+ * up to a newline. We do this with less priority than any
* #if-related directive (#if, #elif, #else, #endif), but with
* more priority than any other directive or token to avoid
* any side-effects from skipped content.