Detect and give error on second occurrence of #version.

git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@24347 e7fa87d3-cd2b-0410-9028-fcbf551c1848
This commit is contained in:
John Kessenich
2013-12-04 20:08:16 +00:00
parent ef9c8ab207
commit 66cdf36521
8 changed files with 12 additions and 7 deletions

View File

@@ -1,7 +1,7 @@
// okay // okay
#version 100 #version 100
int a[3] = { 2, 3, 4, }; // ERROR int a[3] = { 2, 3, 4, }; // ERROR
#version 100
int uint; int uint;
attribute vec4 v[3]; // ERROR attribute vec4 v[3]; // ERROR

View File

@@ -1,5 +1,5 @@
#version 420 core #version 420 core
#version 420 core
varying vec2 v2; // ERROR, varying reserved varying vec2 v2; // ERROR, varying reserved
in vec4 bad[10]; in vec4 bad[10];
highp in vec4 badorder; highp in vec4 badorder;

View File

@@ -2,6 +2,7 @@
ERROR: 0:3: '{ } style initializers' : not supported with this profile: es ERROR: 0:3: '{ } style initializers' : not supported with this profile: es
ERROR: 0:3: 'initializer' : not supported for this version or the enabled extensions ERROR: 0:3: 'initializer' : not supported for this version or the enabled extensions
ERROR: 0:3: 'array initializer' : not supported for this version or the enabled extensions ERROR: 0:3: 'array initializer' : not supported for this version or the enabled extensions
ERROR: 0:4: '#version' : must occur first in shader
ERROR: 0:7: 'attribute' : not supported in this stage: fragment ERROR: 0:7: 'attribute' : not supported in this stage: fragment
ERROR: 0:7: 'float' : type requires declaration of default precision qualifier ERROR: 0:7: 'float' : type requires declaration of default precision qualifier
ERROR: 0:9: '=' : cannot convert from 'const int' to 'mediump float' ERROR: 0:9: '=' : cannot convert from 'const int' to 'mediump float'
@@ -66,7 +67,7 @@ ERROR: 0:167: 'highp' : overloaded functions must have the same parameter precis
ERROR: 0:170: 'multiple prototypes for same function' : not supported for this version or the enabled extensions ERROR: 0:170: 'multiple prototypes for same function' : not supported for this version or the enabled extensions
ERROR: 0:177: 'multiple prototypes for same function' : not supported for this version or the enabled extensions ERROR: 0:177: 'multiple prototypes for same function' : not supported for this version or the enabled extensions
ERROR: 0:179: '' : syntax error ERROR: 0:179: '' : syntax error
ERROR: 60 compilation errors. No code generated. ERROR: 61 compilation errors. No code generated.
ERROR: node is still EOpNull! ERROR: node is still EOpNull!

View File

@@ -1,5 +1,6 @@
420.vert 420.vert
Warning, version 420 is not yet complete; some version-specific features are present, but many are missing. Warning, version 420 is not yet complete; some version-specific features are present, but many are missing.
ERROR: 0:2: '#version' : must occur first in shader
WARNING: 0:3: varying deprecated in version 130; may be removed in future release WARNING: 0:3: varying deprecated in version 130; may be removed in future release
ERROR: 0:3: 'varying' : no longer supported in core profile; removed in version 420 ERROR: 0:3: 'varying' : no longer supported in core profile; removed in version 420
ERROR: 0:7: '' : vertex input cannot be further qualified ERROR: 0:7: '' : vertex input cannot be further qualified
@@ -27,7 +28,7 @@ ERROR: 0:70: 'binding' : requires uniform or buffer storage qualifier
ERROR: 0:71: 'binding' : binding is too large ERROR: 0:71: 'binding' : binding is too large
ERROR: 0:74: 'binding' : sampler binding not less than gl_MaxCombinedTextureImageUnits ERROR: 0:74: 'binding' : sampler binding not less than gl_MaxCombinedTextureImageUnits
ERROR: 0:76: 'binding' : sampler binding not less than gl_MaxCombinedTextureImageUnits (using array) ERROR: 0:76: 'binding' : sampler binding not less than gl_MaxCombinedTextureImageUnits (using array)
ERROR: 26 compilation errors. No code generated. ERROR: 27 compilation errors. No code generated.
ERROR: node is still EOpNull! ERROR: node is still EOpNull!

View File

@@ -9,5 +9,5 @@
// source have to figure out how to create revision.h just to get a build // source have to figure out how to create revision.h just to get a build
// going. However, if it is not updated, it can be a version behind. // going. However, if it is not updated, it can be a version behind.
#define GLSLANG_REVISION "24342" #define GLSLANG_REVISION "24343"
#define GLSLANG_DATE "2013/12/04 12:43:05" #define GLSLANG_DATE "2013/12/04 12:46:19"

View File

@@ -694,8 +694,9 @@ int TPpContext::CPPversion(TPpToken* ppToken)
{ {
int token = currentInput->scan(this, currentInput, ppToken); int token = currentInput->scan(this, currentInput, ppToken);
if (errorOnVersion) if (errorOnVersion || versionSeen)
parseContext.error(ppToken->loc, "must occur first in shader", "#version", ""); parseContext.error(ppToken->loc, "must occur first in shader", "#version", "");
versionSeen = true;
if (token == '\n') { if (token == '\n') {
parseContext.error(ppToken->loc, "must be followed by version number", "#version", ""); parseContext.error(ppToken->loc, "must be followed by version number", "#version", "");

View File

@@ -155,6 +155,7 @@ void TPpContext::setInput(TInputScanner& input, bool versionWillBeError)
in->prev = currentInput; in->prev = currentInput;
currentInput = in; currentInput = in;
errorOnVersion = versionWillBeError; errorOnVersion = versionWillBeError;
versionSeen = false;
} }
} // end namespace glslang } // end namespace glslang

View File

@@ -208,6 +208,7 @@ protected:
InputSrc *currentInput; InputSrc *currentInput;
bool errorOnVersion; bool errorOnVersion;
bool versionSeen;
// //
// from Pp.cpp // from Pp.cpp