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
--- /dev/null
+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
+
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
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
--- /dev/null
+#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);
+}
}
MacroSymbol* macro = macroAtom == 0 ? nullptr : lookupMacroDef(macroAtom);
- int token;
int depth = 0;
// no recursive expansions
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;
"cppBad2.vert",
"cppComplexExpr.vert",
"cppDeepNest.frag",
+ "cppPassMacroName.frag",
"badChars.frag",
"pointCoord.frag",
"array.frag",