diff options
Diffstat (limited to 'tests/preprocessor')
| -rw-r--r-- | tests/preprocessor/define-function-like.spire | 19 | ||||
| -rw-r--r-- | tests/preprocessor/define-function-like.spire.expected | 7 | ||||
| -rw-r--r-- | tests/preprocessor/define-simple.spire | 14 | ||||
| -rw-r--r-- | tests/preprocessor/if.spire | 15 | ||||
| -rw-r--r-- | tests/preprocessor/ifdef.spire | 16 | ||||
| -rw-r--r-- | tests/preprocessor/include-a.spireh | 3 | ||||
| -rw-r--r-- | tests/preprocessor/include.spire | 8 |
7 files changed, 82 insertions, 0 deletions
diff --git a/tests/preprocessor/define-function-like.spire b/tests/preprocessor/define-function-like.spire new file mode 100644 index 000000000..f1dd9caa4 --- /dev/null +++ b/tests/preprocessor/define-function-like.spire @@ -0,0 +1,19 @@ +//TEST:SIMPLE: +// support for function-like macros + +#define FOO(x) 1.0 + x + +float foo(float y) { return FOO(y) * 2.0; } + +// simple token pasting + +#define PASTE(a,b) a##b + +PASTE(flo,at) bar() { return 0.0; } + +// no space before parens? not a function-like macro + +#define M (x) - (x) + +// Error: undefined identifier `x` +float bar(float a) { return M(a); } diff --git a/tests/preprocessor/define-function-like.spire.expected b/tests/preprocessor/define-function-like.spire.expected new file mode 100644 index 000000000..e7b2a582a --- /dev/null +++ b/tests/preprocessor/define-function-like.spire.expected @@ -0,0 +1,7 @@ +result code = -1 +standard error = { +Tests/Preprocessor/define-function-like.spire(16): error 30015: undefined identifier 'x'. +Tests/Preprocessor/define-function-like.spire(16): error 30015: undefined identifier 'x'. +} +standard output = { +} diff --git a/tests/preprocessor/define-simple.spire b/tests/preprocessor/define-simple.spire new file mode 100644 index 000000000..26436b258 --- /dev/null +++ b/tests/preprocessor/define-simple.spire @@ -0,0 +1,14 @@ +//TEST:SIMPLE: +// #define support + +#define FOO 1.0f + +float foo() { return FOO + 2.0; } + +#define BAR 99 + +#if BAR > 10 +int bar() { return 0; } +#else +BadThing shouldntCompile; +#endif diff --git a/tests/preprocessor/if.spire b/tests/preprocessor/if.spire new file mode 100644 index 000000000..fe5948c33 --- /dev/null +++ b/tests/preprocessor/if.spire @@ -0,0 +1,15 @@ +//TEST:SIMPLE: +// #ifdef support + + +#if (1 - 1*2) < 0 +int foo() { return 0; } +#else +BadThing thatWontCompile; +#endif + +#if (1 >> 1) && ~999 +AnotherError onThisLine; +#else +int bar() { return foo(); } +#endif
\ No newline at end of file diff --git a/tests/preprocessor/ifdef.spire b/tests/preprocessor/ifdef.spire new file mode 100644 index 000000000..a3ca82838 --- /dev/null +++ b/tests/preprocessor/ifdef.spire @@ -0,0 +1,16 @@ +//TEST:SIMPLE: +// #ifdef support + +#define A + +#ifdef A +int foo() { return 0; } +#else +BadThing thatWontCompile; +#endif + +#ifdef BadThing +AnotherError onThisLine; +#else +int bar() { return foo(); } +#endif
\ No newline at end of file diff --git a/tests/preprocessor/include-a.spireh b/tests/preprocessor/include-a.spireh new file mode 100644 index 000000000..8fecc6a98 --- /dev/null +++ b/tests/preprocessor/include-a.spireh @@ -0,0 +1,3 @@ +// #include support + +int bar() { return foo(); }
\ No newline at end of file diff --git a/tests/preprocessor/include.spire b/tests/preprocessor/include.spire new file mode 100644 index 000000000..8feca21cc --- /dev/null +++ b/tests/preprocessor/include.spire @@ -0,0 +1,8 @@ +//TEST:SIMPLE: +// #include support + +int foo() { return 0; } + +#include "include-a.spireh" + +int baz() { return bar(); }
\ No newline at end of file |
