[Mesa-dev] toto

Olivier Galibert galibert at pobox.com
Wed Apr 11 01:46:14 PDT 2012


Type selection must be extended w.r.t version and extension lines as
soon as it is possible, and in any case before the lookahead is done
to check the nature of the next line.  Otherwise code such as:

  #version 400

  dmat2 function inverse(dmat2 m) { ... }

fails because "dmat2" has already been lexed as a NEW_IDENTIFIER
before _mesa_glsl_initialize_types is called.

Signed-off-by: Olivier Galibert <galibert at pobox.com>
---
 src/glsl/glsl_parser.yy |    5 ++---
 1 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/src/glsl/glsl_parser.yy b/src/glsl/glsl_parser.yy
index 64506b6..9a0af95 100644
--- a/src/glsl/glsl_parser.yy
+++ b/src/glsl/glsl_parser.yy
@@ -233,9 +233,6 @@ static void yyerror(YYLTYPE *loc, _mesa_glsl_parse_state *st, const char *msg)
 
 translation_unit: 
 	version_statement extension_statement_list
-	{
-	   _mesa_glsl_initialize_types(state);
-	}
 	external_declaration_list
 	{
 	   delete state->symbols;
@@ -285,6 +282,7 @@ version_statement:
 			       state->version_string,
 			       state->supported_version_string);
 	   }
+	   _mesa_glsl_initialize_types(state);
 	}
 	;
 
@@ -322,6 +320,7 @@ extension_statement:
 	   if (!_mesa_glsl_process_extension($2, & @2, $4, & @4, state)) {
 	      YYERROR;
 	   }
+	   _mesa_glsl_initialize_types(state);
 	}
 	;
 
-- 
1.7.4



More information about the mesa-dev mailing list