diff options
-rw-r--r-- | src/glsl/glcpp/glcpp-lex.l | 6 | ||||
-rw-r--r-- | src/glsl/glcpp/glcpp-parse.y | 3 | ||||
-rw-r--r-- | src/glsl/glcpp/tests/132-eof-without-newline-define.c.expected | 3 |
3 files changed, 7 insertions, 5 deletions
diff --git a/src/glsl/glcpp/glcpp-lex.l b/src/glsl/glcpp/glcpp-lex.l index c126850d0c2..6e197d12a1a 100644 --- a/src/glsl/glcpp/glcpp-lex.l +++ b/src/glsl/glcpp/glcpp-lex.l @@ -371,7 +371,7 @@ HEXADECIMAL_INTEGER 0[xX][0-9a-fA-F]+[uU]? * * Anything else, (not an identifier, not a comment, * and not whitespace). This will generate an error. */ -<HASH>define{HSPACE}+ { +<HASH>define{HSPACE}* { if (! parser->skipping) { BEGIN DEFINE; yyextra->space_tokens = 0; @@ -520,6 +520,8 @@ HEXADECIMAL_INTEGER 0[xX][0-9a-fA-F]+[uU]? <*>[\r\n] { if (parser->commented_newlines) { BEGIN NEWLINE_CATCHUP; + } else { + BEGIN INITIAL; } yyextra->space_tokens = 1; yyextra->lexing_directive = 0; @@ -531,8 +533,6 @@ HEXADECIMAL_INTEGER 0[xX][0-9a-fA-F]+[uU]? <INITIAL,COMMENT,DEFINE,HASH><<EOF>> { if (YY_START == COMMENT) glcpp_error(yylloc, yyextra, "Unterminated comment"); - if (YY_START == DEFINE) - glcpp_error(yylloc, yyextra, "#define without macro name"); BEGIN DONE; /* Don't keep matching this rule forever. */ yyextra->lexing_directive = 0; if (! parser->last_token_was_newline) diff --git a/src/glsl/glcpp/glcpp-parse.y b/src/glsl/glcpp/glcpp-parse.y index e2e8aca58a8..25da2a515b2 100644 --- a/src/glsl/glcpp/glcpp-parse.y +++ b/src/glsl/glcpp/glcpp-parse.y @@ -424,6 +424,9 @@ control_line_error: HASH_TOKEN ERROR_TOKEN NEWLINE { glcpp_error(& @1, parser, "#%s", $2); } +| HASH_TOKEN DEFINE_TOKEN NEWLINE { + glcpp_error (& @1, parser, "#define without macro name"); + } | HASH_TOKEN GARBAGE pp_tokens NEWLINE { glcpp_error (& @1, parser, "Illegal non-directive after #"); } diff --git a/src/glsl/glcpp/tests/132-eof-without-newline-define.c.expected b/src/glsl/glcpp/tests/132-eof-without-newline-define.c.expected index a3ace0f3966..341e5e2aa67 100644 --- a/src/glsl/glcpp/tests/132-eof-without-newline-define.c.expected +++ b/src/glsl/glcpp/tests/132-eof-without-newline-define.c.expected @@ -1,2 +1 @@ -0:1(2): preprocessor error: #define without macro name -0:1(2): preprocessor error: syntax error, unexpected NEWLINE, expecting FUNC_IDENTIFIER or OBJ_IDENTIFIER +0:1(1): preprocessor error: #define without macro name |