Preprocessor: Rationalize, simplify, and correct the stack of input sources and their tokenization. This included
- consistently dealing with EOF and its effect on error recovery (bug 11444, #1)
- turning a simulated OO hierarchy of function pointers and typecasting into a real C++ class hierarchy
- correctly handling '\' everywhere, in all classes of tokens, as a layer before preprocessing itself
- conditionally handling '\n' in macro expansion input, depending on whether it is in a macro expression or not
- delete some unused "memory cleanup" code
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@24626 e7fa87d3-cd2b-0410-9028-fcbf551c1848
diff --git a/Test/cppSimple.vert b/Test/cppSimple.vert
index 006d9ed..bb79568 100644
--- a/Test/cppSimple.vert
+++ b/Test/cppSimple.vert
@@ -306,6 +306,26 @@
#error good evaluation 2
#endif
+// ERRORS...
+#line 9000
+#if defined(OUNH
+#endif
+#if defined OUNH)
+#endif
+
+// recursion (okay)
+#define RECURSE RECURSE
+int RECURSE;
+#define R2 R1
+#define R1 R2
+#undef RECURSE
+int R1 = RECURSE;
+
+#define FOOOM(a,b) a + b
+int aoeua = FOOOM;
+#if FOOOM
+#endif
+
#line 10000
#if 1
#else