PP: Fix #783: Catch end-of-argument expansion in token pasting.
This commit is contained in:
parent
82460b5e21
commit
97cb85c7d6
@ -8,7 +8,8 @@ ERROR: 0:69: '##' : combined token is invalid
|
|||||||
ERROR: 0:82: 'macro expansion' : Too few args in Macro rec
|
ERROR: 0:82: 'macro expansion' : Too few args in Macro rec
|
||||||
ERROR: 0:82: '##' : unexpected location
|
ERROR: 0:82: '##' : unexpected location
|
||||||
ERROR: 0:82: '##' : unexpected location
|
ERROR: 0:82: '##' : unexpected location
|
||||||
ERROR: 8 compilation errors. No code generated.
|
ERROR: 0:86: '##' : unexpected location; end of argument
|
||||||
|
ERROR: 9 compilation errors. No code generated.
|
||||||
|
|
||||||
|
|
||||||
Shader version: 450
|
Shader version: 450
|
||||||
|
@ -80,3 +80,7 @@ uniform M_OUTER2(argPaste);
|
|||||||
|
|
||||||
#define rec(x)##
|
#define rec(x)##
|
||||||
rec(rec())
|
rec(rec())
|
||||||
|
|
||||||
|
#define bax(bay)
|
||||||
|
#define baz bax(/##)
|
||||||
|
baz
|
||||||
|
@ -2,5 +2,5 @@
|
|||||||
// For the version, it uses the latest git tag followed by the number of commits.
|
// For the version, it uses the latest git tag followed by the number of commits.
|
||||||
// For the date, it uses the current date (when then script is run).
|
// For the date, it uses the current date (when then script is run).
|
||||||
|
|
||||||
#define GLSLANG_REVISION "Overload400-PrecQual.1971"
|
#define GLSLANG_REVISION "Overload400-PrecQual.1974"
|
||||||
#define GLSLANG_DATE "04-Apr-2017"
|
#define GLSLANG_DATE "04-Apr-2017"
|
||||||
|
@ -799,6 +799,7 @@ int TPpContext::tokenPaste(int token, TPpToken& ppToken)
|
|||||||
token = scanToken(&pastedPpToken);
|
token = scanToken(&pastedPpToken);
|
||||||
assert(token == PpAtomPaste);
|
assert(token == PpAtomPaste);
|
||||||
|
|
||||||
|
// This covers end of macro expansion
|
||||||
if (endOfReplacementList()) {
|
if (endOfReplacementList()) {
|
||||||
parseContext.ppError(ppToken.loc, "unexpected location; end of replacement list", "##", "");
|
parseContext.ppError(ppToken.loc, "unexpected location; end of replacement list", "##", "");
|
||||||
break;
|
break;
|
||||||
@ -807,6 +808,12 @@ int TPpContext::tokenPaste(int token, TPpToken& ppToken)
|
|||||||
// get the token after the ##
|
// get the token after the ##
|
||||||
token = scanToken(&pastedPpToken);
|
token = scanToken(&pastedPpToken);
|
||||||
|
|
||||||
|
// This covers end of argument expansion
|
||||||
|
if (token == tMarkerInput::marker) {
|
||||||
|
parseContext.ppError(ppToken.loc, "unexpected location; end of argument", "##", "");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
// get the token text
|
// get the token text
|
||||||
switch (resultToken) {
|
switch (resultToken) {
|
||||||
case PpAtomIdentifier:
|
case PpAtomIdentifier:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user