Check that layout qualifiers may only appear in declarations
In the shading language grammar, layout qualifiers may appear in loop
conditions and function declarations, but this is not valid ESSL 3.00
according to section 4.3.8.
TEST=angle_unittests, dEQP-GLES3.functional.shaders.*layout*
BUG=angleproject:1064
Change-Id: I73f805247bf6678b953f2e1d45a23391e9eacb96
Reviewed-on: https://chromium-review.googlesource.com/285040
Tested-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
diff --git a/src/compiler/translator/ParseContext.cpp b/src/compiler/translator/ParseContext.cpp
index d9806b5..7585ffd 100644
--- a/src/compiler/translator/ParseContext.cpp
+++ b/src/compiler/translator/ParseContext.cpp
@@ -1376,6 +1376,13 @@
}
else
{
+ if (!layoutQualifier.isEmpty())
+ {
+ if (globalErrorCheck(typeSpecifier.line, symbolTable.atGlobalLevel(), "layout"))
+ {
+ recover();
+ }
+ }
switch (qualifier)
{
case EvqSmoothIn: