Commit e95ecc54 by John Kessenich

1) Improve error recovery from arrays sized with a non constant. 2) Add double…

1) Improve error recovery from arrays sized with a non constant. 2) Add double vectors to the lexer. 3) Default to vertex shaders for unrecognized file name suffixes. Also fix issue where the keyword "shared" conflicts with the layout qualifier identifier "shared" by allowing the keyword in the layout qualifier identifier list. git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@19948 e7fa87d3-cd2b-0410-9028-fcbf551c1848
parent fabf3e40
...@@ -216,7 +216,7 @@ int C_DECL main(int argc, char* argv[]) ...@@ -216,7 +216,7 @@ int C_DECL main(int argc, char* argv[])
static EShLanguage FindLanguage(char *name) static EShLanguage FindLanguage(char *name)
{ {
if (!name) if (!name)
return EShLangFragment; return EShLangVertex;
char *ext = strrchr(name, '.'); char *ext = strrchr(name, '.');
...@@ -225,10 +225,9 @@ static EShLanguage FindLanguage(char *name) ...@@ -225,10 +225,9 @@ static EShLanguage FindLanguage(char *name)
if (ext = strrchr(name, '.')) { if (ext = strrchr(name, '.')) {
if (strncmp(ext, ".frag", 4) == 0) return EShLangFragment; if (strncmp(ext, ".frag", 4) == 0) return EShLangFragment;
if (strncmp(ext, ".vert", 4) == 0) return EShLangVertex;
} }
return EShLangFragment; return EShLangVertex;
} }
......
...@@ -712,6 +712,7 @@ bool TParseContext::arraySizeErrorCheck(int line, TIntermTyped* expr, int& size) ...@@ -712,6 +712,7 @@ bool TParseContext::arraySizeErrorCheck(int line, TIntermTyped* expr, int& size)
TIntermConstantUnion* constant = expr->getAsConstantUnion(); TIntermConstantUnion* constant = expr->getAsConstantUnion();
if (constant == 0 || constant->getBasicType() != EbtInt) { if (constant == 0 || constant->getBasicType() != EbtInt) {
error(line, "array size must be a constant integer expression", "", ""); error(line, "array size must be a constant integer expression", "", "");
size = 1;
return true; return true;
} }
......
...@@ -181,6 +181,9 @@ TSourceLoc yylineno; ...@@ -181,6 +181,9 @@ TSourceLoc yylineno;
"vec2" { pyylval->lex.line = yylineno; parseContext.lexAfterType = true; return (VEC2); } "vec2" { pyylval->lex.line = yylineno; parseContext.lexAfterType = true; return (VEC2); }
"vec3" { pyylval->lex.line = yylineno; parseContext.lexAfterType = true; return (VEC3); } "vec3" { pyylval->lex.line = yylineno; parseContext.lexAfterType = true; return (VEC3); }
"vec4" { pyylval->lex.line = yylineno; parseContext.lexAfterType = true; return (VEC4); } "vec4" { pyylval->lex.line = yylineno; parseContext.lexAfterType = true; return (VEC4); }
"dvec2" { pyylval->lex.line = yylineno; parseContext.lexAfterType = true; return (DVEC2); }
"dvec3" { pyylval->lex.line = yylineno; parseContext.lexAfterType = true; return (DVEC3); }
"dvec4" { pyylval->lex.line = yylineno; parseContext.lexAfterType = true; return (DVEC4); }
"ivec2" { pyylval->lex.line = yylineno; parseContext.lexAfterType = true; return (IVEC2); } "ivec2" { pyylval->lex.line = yylineno; parseContext.lexAfterType = true; return (IVEC2); }
"ivec3" { pyylval->lex.line = yylineno; parseContext.lexAfterType = true; return (IVEC3); } "ivec3" { pyylval->lex.line = yylineno; parseContext.lexAfterType = true; return (IVEC3); }
"ivec4" { pyylval->lex.line = yylineno; parseContext.lexAfterType = true; return (IVEC4); } "ivec4" { pyylval->lex.line = yylineno; parseContext.lexAfterType = true; return (IVEC4); }
...@@ -301,9 +304,6 @@ TSourceLoc yylineno; ...@@ -301,9 +304,6 @@ TSourceLoc yylineno;
"fvec2" { PaReservedWord(); return 0; } "fvec2" { PaReservedWord(); return 0; }
"fvec3" { PaReservedWord(); return 0; } "fvec3" { PaReservedWord(); return 0; }
"fvec4" { PaReservedWord(); return 0; } "fvec4" { PaReservedWord(); return 0; }
"dvec2" { PaReservedWord(); return 0; }
"dvec3" { PaReservedWord(); return 0; }
"dvec4" { PaReservedWord(); return 0; }
"sampler3DRect" { PaReservedWord(); return 0; } "sampler3DRect" { PaReservedWord(); return 0; }
......
...@@ -1598,6 +1598,8 @@ layout_qualifier_id ...@@ -1598,6 +1598,8 @@ layout_qualifier_id
} }
| IDENTIFIER EQUAL INTCONSTANT { | IDENTIFIER EQUAL INTCONSTANT {
} }
| SHARED {
}
; ;
precise_qualifier precise_qualifier
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment