glsl/glcpp: Don't choke on an empty pragma
The lexer was insisting that there be at least one character after "#pragma" and before the end of the line. This caused an error for a line consisting only of "#pragma" which volates at least the following sentence from the GLSL ES Specification 3.00.4: The scope as well as the effect of the optimize and debug pragmas is implementation-dependent except that their use must not generate an error. [Page 12 (Page 28 of PDF)] and likely the following sentence from that specification and also in GLSLangSpec 4.30.6: If an implementation does not recognize the tokens following #pragma, then it will ignore that pragma. Add a "make check" test to ensure no future regressions. This change fixes at least part of the following Khronos GLES3 CTS test: preprocessor.pragmas.pragma_vertex Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
@@ -180,7 +180,7 @@ HEXADECIMAL_INTEGER 0[xX][0-9a-fA-F]+[uU]?
|
||||
|
||||
/* glcpp doesn't handle #extension, #version, or #pragma directives.
|
||||
* Simply pass them through to the main compiler's lexer/parser. */
|
||||
{HASH}(extension|pragma)[^\n]+ {
|
||||
{HASH}(extension|pragma)[^\n]* {
|
||||
if (parser->commented_newlines)
|
||||
BEGIN NEWLINE_CATCHUP;
|
||||
yylval->str = ralloc_strdup (yyextra, yytext);
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
/* It seems an odd (and particularly useless) thing to have an empty pragma,
|
||||
* but we probably shouldn't trigger an error in this case. */
|
||||
#pragma
|
||||
@@ -0,0 +1,4 @@
|
||||
|
||||
|
||||
#pragma
|
||||
|
||||
Reference in New Issue
Block a user