Fix several issues in the preprocessor:
- macro expansion of hexidecimal numbers - give errors instead of warnings/silence on extra tokens after #endif, #else, etc. - give errors on reserved macro name use, reuse of argument, and redefinition with different whitespace presence - detect and give error for all cases of #elif and #else after #else git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@23982 e7fa87d3-cd2b-0410-9028-fcbf551c1848
This commit is contained in:
parent
cfe3ba5a18
commit
4d6570a1b3
14 changed files with 403 additions and 339 deletions
|
|
@ -46,8 +46,8 @@ namespace glslang {
|
|||
//
|
||||
class TInputScanner {
|
||||
public:
|
||||
TInputScanner(int n, const char* const s[], size_t L[], int b = 0) :
|
||||
numSources(n), sources(s), lengths(L), currentSource(0), currentChar(0), stringBias(b)
|
||||
TInputScanner(int n, const char* const s[], size_t L[], int b = 0, int f = 0) :
|
||||
numSources(n), sources(s), lengths(L), currentSource(0), currentChar(0), stringBias(b), finale(f)
|
||||
{
|
||||
loc = new TSourceLoc[numSources];
|
||||
loc[currentSource].string = -stringBias;
|
||||
|
|
@ -105,7 +105,7 @@ public:
|
|||
void setLine(int newLine) { loc[currentSource].line = newLine; }
|
||||
void setString(int newString) { loc[currentSource].string = newString; }
|
||||
|
||||
const TSourceLoc& getSourceLoc() const { return loc[currentSource]; }
|
||||
const TSourceLoc& getSourceLoc() const { return loc[std::max(0, std::min(currentSource, numSources - finale - 1))]; }
|
||||
|
||||
void consumeWhiteSpace(bool& foundNonSpaceTab);
|
||||
bool consumeComment();
|
||||
|
|
@ -147,6 +147,7 @@ protected:
|
|||
TSourceLoc* loc; // an array
|
||||
|
||||
int stringBias; // the first string that is the user's string number 0
|
||||
int finale; // number of internal strings after user's last string
|
||||
};
|
||||
|
||||
} // end namespace glslang
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue