PP: Don't report certain error about '#' when #if'd out

Don't report the following error when scanning inactive code (e.g. code inside #if 0):
"error: '#' : (#) can be preceded in its line only by spaces or horizontal tab"
Adds a variable to PpContext to say whether we're currently skipping over an inactive #if/#ifdef/#elif/#else, and don't report the error inside scanToken if true.

fixes 3704
This commit is contained in:
U-NVIDIA.COM\rjennings 2024-08-26 20:31:19 -07:00 committed by arcady-lunarg
parent 45f2b112ce
commit 9cd7ca26a2
7 changed files with 68 additions and 4 deletions

View file

@ -0,0 +1,28 @@
#version 460
// This tests that the preprocessor error
// "error: '#' : (#) can be preceded in its line only by spaces or horizontal tab"
// isn't enforced when inactive (e.g. inside #if 0)
#if 0
#define STRINGIFY(X) #X
#endif
#define C 0
#if 1
#ifdef A
#elif defined B
#elif C
// OK, since preprocessor evaluates to inactive
#define STRINGIFY(X) #X
#endif
#endif
// OK in comments
// #define STRINGIFY(X) #X
void main()
{
gl_Position = vec4(1.0);
}