mirror of
https://github.com/KhronosGroup/glslang
synced 2024-11-09 20:10:06 +00:00
Fix #1079: don't give error when macro() name used without open (.
This commit is contained in:
parent
e8d21388ed
commit
88e22a6090
@ -2,10 +2,9 @@ cppBad.vert
|
||||
ERROR: 0:2: 'preprocessor evaluation' : bad expression
|
||||
ERROR: 0:2: '#if' : unexpected tokens following directive
|
||||
ERROR: 0:5: 'string' : End of line in string
|
||||
ERROR: 0:5: 'macro expansion' : expected '(' following n
|
||||
ERROR: 0:5: '""' : string literals not supported
|
||||
ERROR: 0:5: '' : syntax error, unexpected INT, expecting COMMA or SEMICOLON
|
||||
ERROR: 6 compilation errors. No code generated.
|
||||
ERROR: 5 compilation errors. No code generated.
|
||||
|
||||
|
||||
Shader version: 100
|
||||
|
67
Test/baseResults/cppPassMacroName.frag.out
Executable file
67
Test/baseResults/cppPassMacroName.frag.out
Executable file
@ -0,0 +1,67 @@
|
||||
cppPassMacroName.frag
|
||||
Shader version: 100
|
||||
0:? Sequence
|
||||
0:5 Function Definition: main( ( global void)
|
||||
0:5 Function Parameters:
|
||||
0:7 Sequence
|
||||
0:7 Sequence
|
||||
0:7 move second child to first child ( temp mediump int)
|
||||
0:7 'f1' ( temp mediump int)
|
||||
0:7 Constant:
|
||||
0:7 4 (const int)
|
||||
0:8 Sequence
|
||||
0:8 move second child to first child ( temp mediump int)
|
||||
0:8 'f2' ( temp mediump int)
|
||||
0:8 'f1' ( temp mediump int)
|
||||
0:9 Sequence
|
||||
0:9 move second child to first child ( temp mediump int)
|
||||
0:9 'f3' ( temp mediump int)
|
||||
0:9 Constant:
|
||||
0:9 9 (const int)
|
||||
0:10 Sequence
|
||||
0:10 move second child to first child ( temp mediump int)
|
||||
0:10 'f4' ( temp mediump int)
|
||||
0:10 Constant:
|
||||
0:10 1 (const int)
|
||||
0:11 Sequence
|
||||
0:11 move second child to first child ( temp mediump int)
|
||||
0:11 'f5' ( temp mediump int)
|
||||
0:11 Constant:
|
||||
0:11 5 (const int)
|
||||
0:? Linker Objects
|
||||
|
||||
|
||||
Linked fragment stage:
|
||||
|
||||
|
||||
Shader version: 100
|
||||
0:? Sequence
|
||||
0:5 Function Definition: main( ( global void)
|
||||
0:5 Function Parameters:
|
||||
0:7 Sequence
|
||||
0:7 Sequence
|
||||
0:7 move second child to first child ( temp mediump int)
|
||||
0:7 'f1' ( temp mediump int)
|
||||
0:7 Constant:
|
||||
0:7 4 (const int)
|
||||
0:8 Sequence
|
||||
0:8 move second child to first child ( temp mediump int)
|
||||
0:8 'f2' ( temp mediump int)
|
||||
0:8 'f1' ( temp mediump int)
|
||||
0:9 Sequence
|
||||
0:9 move second child to first child ( temp mediump int)
|
||||
0:9 'f3' ( temp mediump int)
|
||||
0:9 Constant:
|
||||
0:9 9 (const int)
|
||||
0:10 Sequence
|
||||
0:10 move second child to first child ( temp mediump int)
|
||||
0:10 'f4' ( temp mediump int)
|
||||
0:10 Constant:
|
||||
0:10 1 (const int)
|
||||
0:11 Sequence
|
||||
0:11 move second child to first child ( temp mediump int)
|
||||
0:11 'f5' ( temp mediump int)
|
||||
0:11 Constant:
|
||||
0:11 5 (const int)
|
||||
0:? Linker Objects
|
||||
|
@ -75,10 +75,8 @@ ERROR: 12:20051: '#error' : good evaluation 1
|
||||
ERROR: 12:20055: '#error' : good evaluation 2
|
||||
ERROR: 12:9000: 'preprocessor evaluation' : expected ')'
|
||||
ERROR: 12:9002: '#if' : unexpected tokens following directive
|
||||
ERROR: 12:9014: 'macro expansion' : expected '(' following FOOOM
|
||||
ERROR: 12:9014: 'FOOOM' : undeclared identifier
|
||||
ERROR: 12:9014: '=' : cannot convert from ' temp float' to ' global int'
|
||||
ERROR: 12:9015: 'macro expansion' : expected '(' following FOOOM
|
||||
ERROR: 12:9016: 'preprocessor evaluation' : can't evaluate expression
|
||||
ERROR: 12:9016: 'preprocessor evaluation' : bad expression
|
||||
ERROR: 12:9500: 'preprocessor evaluation' : bad expression
|
||||
@ -93,7 +91,7 @@ ERROR: 12:9508: '#error' : \ 377
|
||||
ERROR: 12:9602: 'defined' : cannot use in preprocessor expression when expanded from macros
|
||||
ERROR: 12:9603: '#error' : DEF_DEFINED then
|
||||
ERROR: 12:10002: '' : missing #endif
|
||||
ERROR: 90 compilation errors. No code generated.
|
||||
ERROR: 88 compilation errors. No code generated.
|
||||
|
||||
|
||||
Shader version: 400
|
||||
|
12
Test/cppPassMacroName.frag
Normal file
12
Test/cppPassMacroName.frag
Normal file
@ -0,0 +1,12 @@
|
||||
#define f1(i) ((i)*(i))
|
||||
#define I2(f, n) f(n) + f(n+1)
|
||||
#define I3(f, n) I2(f, n) + f(n+2)
|
||||
|
||||
void main()
|
||||
{
|
||||
int f1 = 4;
|
||||
int f2 = f1;
|
||||
int f3 = f1(3);
|
||||
int f4 = I2(f1, 0);
|
||||
int f5 = I3(f1, 0);
|
||||
}
|
@ -1157,7 +1157,6 @@ int TPpContext::MacroExpand(TPpToken* ppToken, bool expandUndef, bool newLineOka
|
||||
}
|
||||
|
||||
MacroSymbol* macro = macroAtom == 0 ? nullptr : lookupMacroDef(macroAtom);
|
||||
int token;
|
||||
int depth = 0;
|
||||
|
||||
// no recursive expansions
|
||||
@ -1179,13 +1178,12 @@ int TPpContext::MacroExpand(TPpToken* ppToken, bool expandUndef, bool newLineOka
|
||||
TSourceLoc loc = ppToken->loc; // in case we go to the next line before discovering the error
|
||||
in->mac = macro;
|
||||
if (macro->args.size() > 0 || macro->emptyArgs) {
|
||||
token = scanToken(ppToken);
|
||||
int token = scanToken(ppToken);
|
||||
if (newLineOkay) {
|
||||
while (token == '\n')
|
||||
token = scanToken(ppToken);
|
||||
}
|
||||
if (token != '(') {
|
||||
parseContext.ppError(loc, "expected '(' following", "macro expansion", atomStrings.getString(macroAtom));
|
||||
UngetToken(token, ppToken);
|
||||
delete in;
|
||||
return 0;
|
||||
|
@ -84,6 +84,7 @@ INSTANTIATE_TEST_CASE_P(
|
||||
"cppBad2.vert",
|
||||
"cppComplexExpr.vert",
|
||||
"cppDeepNest.frag",
|
||||
"cppPassMacroName.frag",
|
||||
"badChars.frag",
|
||||
"pointCoord.frag",
|
||||
"array.frag",
|
||||
|
Loading…
Reference in New Issue
Block a user