glsl: Fix handling of function calls inside nested loops.
[mesa.git] / src / glsl / glsl_lexer.ll
index b95b254da017b1318ef29739d385a549fc7b886c..50875bf3b235dbbb20444751856a96a44dfb6d47 100644 (file)
@@ -149,7 +149,7 @@ literal_integer(char *text, int len, struct _mesa_glsl_parse_state *state,
 %option bison-bridge bison-locations reentrant noyywrap
 %option nounput noyy_top_state
 %option never-interactive
-%option prefix="_mesa_glsl_"
+%option prefix="_mesa_glsl_lexer_"
 %option extra-type="struct _mesa_glsl_parse_state *"
 
 %x PP PRAGMA
@@ -337,6 +337,7 @@ samplerExternalOES          {
                             return IDENTIFIER;
                }
 
+atomic_uint     KEYWORD_WITH_ALT(420, 300, 420, 0, yyextra->ARB_shader_atomic_counters_enable, ATOMIC_UINT);
 
 struct         return STRUCT;
 void           return VOID_TOK;
@@ -352,7 +353,7 @@ layout              {
                      return LAYOUT_TOK;
                   } else {
                      yylval->identifier = strdup(yytext);
-                     return IDENTIFIER;
+                     return classify_identifier(yyextra, yytext);
                   }
                }
 
@@ -518,9 +519,8 @@ restrict    KEYWORD(0, 300, 0, 0, RESTRICT);
 readonly       KEYWORD(0, 300, 0, 0, READONLY);
 writeonly      KEYWORD(0, 300, 0, 0, WRITEONLY);
 resource       KEYWORD(0, 300, 0, 0, RESOURCE);
-atomic_uint    KEYWORD(0, 300, 0, 0, ATOMIC_UINT);
 patch          KEYWORD(0, 300, 0, 0, PATCH);
-sample         KEYWORD(0, 300, 0, 0, SAMPLE);
+sample         KEYWORD_WITH_ALT(400, 300, 400, 0, yyextra->ARB_gpu_shader5_enable, SAMPLE);
 subroutine     KEYWORD(0, 300, 0, 0, SUBROUTINE);