Parser: Precise: Recognize 'precise', tag types, and do related semantic checking.
This partly overlaps pull request #222, we have divided the work on this one.
diff --git a/Test/baseResults/310.vert.out b/Test/baseResults/310.vert.out
index f42b44c..c32f5d8 100644
--- a/Test/baseResults/310.vert.out
+++ b/Test/baseResults/310.vert.out
@@ -29,6 +29,7 @@
ERROR: 0:135: 'centroid' : cannot use centroid qualifier on an interface block
ERROR: 0:139: 'invariant' : cannot use invariant qualifier on an interface block
ERROR: 0:155: 'precise' : Reserved word.
+ERROR: 0:155: 'precise' : not supported for this version or the enabled extensions
ERROR: 0:156: 'fma' : required extension not requested: Possible extensions include:
GL_EXT_gpu_shader5
GL_OES_gpu_shader5
@@ -96,7 +97,7 @@
ERROR: 0:400: 'interpolateAtCentroid' : no matching overloaded function found
ERROR: 0:401: 'interpolateAtSample' : no matching overloaded function found
ERROR: 0:402: 'interpolateAtOffset' : no matching overloaded function found
-ERROR: 92 compilation errors. No code generated.
+ERROR: 93 compilation errors. No code generated.
Shader version: 310
@@ -285,11 +286,11 @@
0:153 Function Parameters:
0:? Sequence
0:156 move second child to first child (temp highp 2-component vector of float)
-0:156 'h' (temp highp 2-component vector of float)
+0:156 'h' (noContraction temp highp 2-component vector of float)
0:156 fma (global highp 2-component vector of float)
0:156 'inf' (in highp 2-component vector of float)
0:156 'ing' (in highp 2-component vector of float)
-0:156 'h' (temp highp 2-component vector of float)
+0:156 'h' (noContraction temp highp 2-component vector of float)
0:157 indirect index (temp highp sampler2D)
0:157 'sArray' (uniform 4-element array of highp sampler2D)
0:157 add (temp highp int)
@@ -360,11 +361,11 @@
0:171 Function Parameters:
0:? Sequence
0:174 move second child to first child (temp highp 2-component vector of float)
-0:174 'h' (temp highp 2-component vector of float)
+0:174 'h' (noContraction temp highp 2-component vector of float)
0:174 fma (global highp 2-component vector of float)
0:174 'inf' (in highp 2-component vector of float)
0:174 'ing' (in highp 2-component vector of float)
-0:174 'h' (temp highp 2-component vector of float)
+0:174 'h' (noContraction temp highp 2-component vector of float)
0:175 indirect index (temp highp sampler2D)
0:175 'sArray' (uniform 4-element array of highp sampler2D)
0:175 add (temp highp int)
@@ -1216,11 +1217,11 @@
0:153 Function Parameters:
0:? Sequence
0:156 move second child to first child (temp highp 2-component vector of float)
-0:156 'h' (temp highp 2-component vector of float)
+0:156 'h' (noContraction temp highp 2-component vector of float)
0:156 fma (global highp 2-component vector of float)
0:156 'inf' (in highp 2-component vector of float)
0:156 'ing' (in highp 2-component vector of float)
-0:156 'h' (temp highp 2-component vector of float)
+0:156 'h' (noContraction temp highp 2-component vector of float)
0:157 indirect index (temp highp sampler2D)
0:157 'sArray' (uniform 4-element array of highp sampler2D)
0:157 add (temp highp int)
@@ -1291,11 +1292,11 @@
0:171 Function Parameters:
0:? Sequence
0:174 move second child to first child (temp highp 2-component vector of float)
-0:174 'h' (temp highp 2-component vector of float)
+0:174 'h' (noContraction temp highp 2-component vector of float)
0:174 fma (global highp 2-component vector of float)
0:174 'inf' (in highp 2-component vector of float)
0:174 'ing' (in highp 2-component vector of float)
-0:174 'h' (temp highp 2-component vector of float)
+0:174 'h' (noContraction temp highp 2-component vector of float)
0:175 indirect index (temp highp sampler2D)
0:175 'sArray' (uniform 4-element array of highp sampler2D)
0:175 add (temp highp int)