From 5b49974bd6ddd248b5ee1b1e29c0acfc3c422a3a Mon Sep 17 00:00:00 2001 From: Tim Foley Date: Mon, 12 Jun 2017 12:42:17 -0700 Subject: Rename tests from `*.spire` to `*.slang` Many of the existing test cases were being skipped on accident, because their file names used `.spire` and the test tool was now looking for `.slang` --- tests/diagnostics/break-outside-loop.slang | 4 ++ .../diagnostics/break-outside-loop.slang.expected | 6 +++ tests/diagnostics/break-outside-loop.spire | 4 -- .../diagnostics/break-outside-loop.spire.expected | 6 --- tests/diagnostics/call-argument-type.slang | 11 ++++ .../diagnostics/call-argument-type.slang.expected | 6 +++ tests/diagnostics/call-argument-type.spire | 11 ---- .../diagnostics/call-argument-type.spire.expected | 6 --- tests/diagnostics/continue-outside-loop.slang | 4 ++ .../continue-outside-loop.slang.expected | 6 +++ tests/diagnostics/continue-outside-loop.spire | 4 -- .../continue-outside-loop.spire.expected | 6 --- tests/diagnostics/expected-token-eof.slang | 6 +++ .../diagnostics/expected-token-eof.slang.expected | 6 +++ tests/diagnostics/expected-token-eof.spire | 6 --- .../diagnostics/expected-token-eof.spire.expected | 6 --- tests/diagnostics/expected-token.slang | 7 +++ tests/diagnostics/expected-token.slang.expected | 6 +++ tests/diagnostics/expected-token.spire | 7 --- tests/diagnostics/expected-token.spire.expected | 6 --- .../function-redefinition.slang.disabled | 5 ++ .../function-redefinition.slang.expected | 6 +++ .../function-redefinition.spire.disabled | 5 -- .../function-redefinition.spire.expected | 6 --- .../hull-shader-invalid-domain.slang.disabled | 53 +++++++++++++++++++ .../hull-shader-invalid-domain.slang.expected | 6 +++ .../hull-shader-invalid-domain.spire.disabled | 53 ------------------- .../hull-shader-invalid-domain.spire.expected | 6 --- .../hull-shader-no-domain.slang.disabled | 53 +++++++++++++++++++ .../hull-shader-no-domain.slang.expected | 6 +++ .../hull-shader-no-domain.spire.disabled | 53 ------------------- .../hull-shader-no-domain.spire.expected | 6 --- tests/diagnostics/illegal-character.slang | 5 ++ tests/diagnostics/illegal-character.slang.expected | 6 +++ tests/diagnostics/illegal-character.spire | 5 -- tests/diagnostics/illegal-character.spire.expected | 6 --- tests/diagnostics/missing-file.slang.disabled | 3 ++ tests/diagnostics/missing-file.slang.expected | 7 +++ tests/diagnostics/missing-file.spire.disabled | 3 -- tests/diagnostics/missing-file.spire.expected | 7 --- tests/diagnostics/missing-include-file.slang | 4 ++ .../missing-include-file.slang.expected | 6 +++ tests/diagnostics/missing-include-file.spire | 4 -- .../missing-include-file.spire.expected | 6 --- tests/diagnostics/parameter-already-defined.slang | 4 ++ .../parameter-already-defined.slang.expected | 6 +++ tests/diagnostics/parameter-already-defined.spire | 4 -- .../parameter-already-defined.spire.expected | 6 --- tests/diagnostics/undefined-identifier.slang | 7 +++ .../undefined-identifier.slang.expected | 6 +++ tests/diagnostics/undefined-identifier.spire | 7 --- .../undefined-identifier.spire.expected | 6 --- tests/diagnostics/variable-void-type.slang | 7 +++ .../diagnostics/variable-void-type.slang.expected | 6 +++ tests/diagnostics/variable-void-type.spire | 7 --- .../diagnostics/variable-void-type.spire.expected | 6 --- tests/diagnostics/while-predicate-type.slang | 10 ++++ .../while-predicate-type.slang.expected | 6 +++ tests/diagnostics/while-predicate-type.spire | 10 ---- .../while-predicate-type.spire.expected | 6 --- tests/front-end/lexer-comments.slang | 13 +++++ tests/front-end/lexer-comments.spire | 13 ----- tests/front-end/parser-decls.slang | 60 ++++++++++++++++++++++ tests/front-end/parser-decls.spire | 60 ---------------------- tests/front-end/parser-empty.slang | 1 + tests/front-end/parser-empty.spire | 1 - tests/front-end/parser-error-unclosed-curly.slang | 3 ++ .../parser-error-unclosed-curly.slang.expected | 6 +++ tests/front-end/parser-error-unclosed-curly.spire | 3 -- .../parser-error-unclosed-curly.spire.expected | 6 --- tests/front-end/parser-using-file-a.slang.h | 3 ++ tests/front-end/parser-using-file-a.spireh | 3 -- tests/front-end/parser-using-file.spire.disabled | 2 +- tests/front-end/pipeline-simple.slang.h | 41 +++++++++++++++ tests/front-end/pipeline-simple.spireh | 41 --------------- tests/front-end/struct.slang | 49 ++++++++++++++++++ tests/front-end/struct.spire | 49 ------------------ tests/front-end/typedef.slang | 15 ++++++ tests/front-end/typedef.spire | 15 ------ tests/preprocessor/define-function-like.slang | 19 +++++++ .../define-function-like.slang.expected | 7 +++ tests/preprocessor/define-function-like.spire | 19 ------- .../define-function-like.spire.expected | 7 --- tests/preprocessor/define-simple.slang | 14 +++++ tests/preprocessor/define-simple.spire | 14 ----- tests/preprocessor/if.slang | 15 ++++++ tests/preprocessor/if.spire | 15 ------ tests/preprocessor/ifdef.slang | 16 ++++++ tests/preprocessor/ifdef.spire | 16 ------ tests/preprocessor/include-a.slang.h | 3 ++ tests/preprocessor/include-a.spireh | 3 -- tests/preprocessor/include.slang | 8 +++ tests/preprocessor/include.spire | 8 --- 93 files changed, 548 insertions(+), 548 deletions(-) create mode 100644 tests/diagnostics/break-outside-loop.slang create mode 100644 tests/diagnostics/break-outside-loop.slang.expected delete mode 100644 tests/diagnostics/break-outside-loop.spire delete mode 100644 tests/diagnostics/break-outside-loop.spire.expected create mode 100644 tests/diagnostics/call-argument-type.slang create mode 100644 tests/diagnostics/call-argument-type.slang.expected delete mode 100644 tests/diagnostics/call-argument-type.spire delete mode 100644 tests/diagnostics/call-argument-type.spire.expected create mode 100644 tests/diagnostics/continue-outside-loop.slang create mode 100644 tests/diagnostics/continue-outside-loop.slang.expected delete mode 100644 tests/diagnostics/continue-outside-loop.spire delete mode 100644 tests/diagnostics/continue-outside-loop.spire.expected create mode 100644 tests/diagnostics/expected-token-eof.slang create mode 100644 tests/diagnostics/expected-token-eof.slang.expected delete mode 100644 tests/diagnostics/expected-token-eof.spire delete mode 100644 tests/diagnostics/expected-token-eof.spire.expected create mode 100644 tests/diagnostics/expected-token.slang create mode 100644 tests/diagnostics/expected-token.slang.expected delete mode 100644 tests/diagnostics/expected-token.spire delete mode 100644 tests/diagnostics/expected-token.spire.expected create mode 100644 tests/diagnostics/function-redefinition.slang.disabled create mode 100644 tests/diagnostics/function-redefinition.slang.expected delete mode 100644 tests/diagnostics/function-redefinition.spire.disabled delete mode 100644 tests/diagnostics/function-redefinition.spire.expected create mode 100644 tests/diagnostics/hull-shader-invalid-domain.slang.disabled create mode 100644 tests/diagnostics/hull-shader-invalid-domain.slang.expected delete mode 100644 tests/diagnostics/hull-shader-invalid-domain.spire.disabled delete mode 100644 tests/diagnostics/hull-shader-invalid-domain.spire.expected create mode 100644 tests/diagnostics/hull-shader-no-domain.slang.disabled create mode 100644 tests/diagnostics/hull-shader-no-domain.slang.expected delete mode 100644 tests/diagnostics/hull-shader-no-domain.spire.disabled delete mode 100644 tests/diagnostics/hull-shader-no-domain.spire.expected create mode 100644 tests/diagnostics/illegal-character.slang create mode 100644 tests/diagnostics/illegal-character.slang.expected delete mode 100644 tests/diagnostics/illegal-character.spire delete mode 100644 tests/diagnostics/illegal-character.spire.expected create mode 100644 tests/diagnostics/missing-file.slang.disabled create mode 100644 tests/diagnostics/missing-file.slang.expected delete mode 100644 tests/diagnostics/missing-file.spire.disabled delete mode 100644 tests/diagnostics/missing-file.spire.expected create mode 100644 tests/diagnostics/missing-include-file.slang create mode 100644 tests/diagnostics/missing-include-file.slang.expected delete mode 100644 tests/diagnostics/missing-include-file.spire delete mode 100644 tests/diagnostics/missing-include-file.spire.expected create mode 100644 tests/diagnostics/parameter-already-defined.slang create mode 100644 tests/diagnostics/parameter-already-defined.slang.expected delete mode 100644 tests/diagnostics/parameter-already-defined.spire delete mode 100644 tests/diagnostics/parameter-already-defined.spire.expected create mode 100644 tests/diagnostics/undefined-identifier.slang create mode 100644 tests/diagnostics/undefined-identifier.slang.expected delete mode 100644 tests/diagnostics/undefined-identifier.spire delete mode 100644 tests/diagnostics/undefined-identifier.spire.expected create mode 100644 tests/diagnostics/variable-void-type.slang create mode 100644 tests/diagnostics/variable-void-type.slang.expected delete mode 100644 tests/diagnostics/variable-void-type.spire delete mode 100644 tests/diagnostics/variable-void-type.spire.expected create mode 100644 tests/diagnostics/while-predicate-type.slang create mode 100644 tests/diagnostics/while-predicate-type.slang.expected delete mode 100644 tests/diagnostics/while-predicate-type.spire delete mode 100644 tests/diagnostics/while-predicate-type.spire.expected create mode 100644 tests/front-end/lexer-comments.slang delete mode 100644 tests/front-end/lexer-comments.spire create mode 100644 tests/front-end/parser-decls.slang delete mode 100644 tests/front-end/parser-decls.spire create mode 100644 tests/front-end/parser-empty.slang delete mode 100644 tests/front-end/parser-empty.spire create mode 100644 tests/front-end/parser-error-unclosed-curly.slang create mode 100644 tests/front-end/parser-error-unclosed-curly.slang.expected delete mode 100644 tests/front-end/parser-error-unclosed-curly.spire delete mode 100644 tests/front-end/parser-error-unclosed-curly.spire.expected create mode 100644 tests/front-end/parser-using-file-a.slang.h delete mode 100644 tests/front-end/parser-using-file-a.spireh create mode 100644 tests/front-end/pipeline-simple.slang.h delete mode 100644 tests/front-end/pipeline-simple.spireh create mode 100644 tests/front-end/struct.slang delete mode 100644 tests/front-end/struct.spire create mode 100644 tests/front-end/typedef.slang delete mode 100644 tests/front-end/typedef.spire create mode 100644 tests/preprocessor/define-function-like.slang create mode 100644 tests/preprocessor/define-function-like.slang.expected delete mode 100644 tests/preprocessor/define-function-like.spire delete mode 100644 tests/preprocessor/define-function-like.spire.expected create mode 100644 tests/preprocessor/define-simple.slang delete mode 100644 tests/preprocessor/define-simple.spire create mode 100644 tests/preprocessor/if.slang delete mode 100644 tests/preprocessor/if.spire create mode 100644 tests/preprocessor/ifdef.slang delete mode 100644 tests/preprocessor/ifdef.spire create mode 100644 tests/preprocessor/include-a.slang.h delete mode 100644 tests/preprocessor/include-a.spireh create mode 100644 tests/preprocessor/include.slang delete mode 100644 tests/preprocessor/include.spire diff --git a/tests/diagnostics/break-outside-loop.slang b/tests/diagnostics/break-outside-loop.slang new file mode 100644 index 000000000..f86b0bad6 --- /dev/null +++ b/tests/diagnostics/break-outside-loop.slang @@ -0,0 +1,4 @@ +//TEST:SIMPLE: +// `break` where it isn't allowed + +void foo() { break; } diff --git a/tests/diagnostics/break-outside-loop.slang.expected b/tests/diagnostics/break-outside-loop.slang.expected new file mode 100644 index 000000000..80d79537b --- /dev/null +++ b/tests/diagnostics/break-outside-loop.slang.expected @@ -0,0 +1,6 @@ +result code = -1 +standard error = { +tests/diagnostics/break-outside-loop.slang(4): error 30003: 'break' must appear inside loop constructs. +} +standard output = { +} diff --git a/tests/diagnostics/break-outside-loop.spire b/tests/diagnostics/break-outside-loop.spire deleted file mode 100644 index f86b0bad6..000000000 --- a/tests/diagnostics/break-outside-loop.spire +++ /dev/null @@ -1,4 +0,0 @@ -//TEST:SIMPLE: -// `break` where it isn't allowed - -void foo() { break; } diff --git a/tests/diagnostics/break-outside-loop.spire.expected b/tests/diagnostics/break-outside-loop.spire.expected deleted file mode 100644 index 2d56efaa9..000000000 --- a/tests/diagnostics/break-outside-loop.spire.expected +++ /dev/null @@ -1,6 +0,0 @@ -result code = -1 -standard error = { -Tests/Diagnostics/break-outside-loop.spire(4): error 30003: 'break' must appear inside loop constructs. -} -standard output = { -} diff --git a/tests/diagnostics/call-argument-type.slang b/tests/diagnostics/call-argument-type.slang new file mode 100644 index 000000000..d9663147f --- /dev/null +++ b/tests/diagnostics/call-argument-type.slang @@ -0,0 +1,11 @@ +//TEST:SIMPLE: +// call function with wrong argument type + +struct A {}; +struct B {}; + +void f(A a) {} +void g(B b) +{ + f(b); +} diff --git a/tests/diagnostics/call-argument-type.slang.expected b/tests/diagnostics/call-argument-type.slang.expected new file mode 100644 index 000000000..0854dbbe3 --- /dev/null +++ b/tests/diagnostics/call-argument-type.slang.expected @@ -0,0 +1,6 @@ +result code = -1 +standard error = { +tests/diagnostics/call-argument-type.slang(10): error 30019: expected an expression of type 'A', got 'B' +} +standard output = { +} diff --git a/tests/diagnostics/call-argument-type.spire b/tests/diagnostics/call-argument-type.spire deleted file mode 100644 index d9663147f..000000000 --- a/tests/diagnostics/call-argument-type.spire +++ /dev/null @@ -1,11 +0,0 @@ -//TEST:SIMPLE: -// call function with wrong argument type - -struct A {}; -struct B {}; - -void f(A a) {} -void g(B b) -{ - f(b); -} diff --git a/tests/diagnostics/call-argument-type.spire.expected b/tests/diagnostics/call-argument-type.spire.expected deleted file mode 100644 index 09a01a359..000000000 --- a/tests/diagnostics/call-argument-type.spire.expected +++ /dev/null @@ -1,6 +0,0 @@ -result code = -1 -standard error = { -Tests/Diagnostics/call-argument-type.spire(10): error 30019: expected an expression of type 'A', got 'B' -} -standard output = { -} diff --git a/tests/diagnostics/continue-outside-loop.slang b/tests/diagnostics/continue-outside-loop.slang new file mode 100644 index 000000000..cad9dce6e --- /dev/null +++ b/tests/diagnostics/continue-outside-loop.slang @@ -0,0 +1,4 @@ +//TEST:SIMPLE: +// `continue` where it isn't allowed + +void foo() { continue; } diff --git a/tests/diagnostics/continue-outside-loop.slang.expected b/tests/diagnostics/continue-outside-loop.slang.expected new file mode 100644 index 000000000..2298a0ec5 --- /dev/null +++ b/tests/diagnostics/continue-outside-loop.slang.expected @@ -0,0 +1,6 @@ +result code = -1 +standard error = { +tests/diagnostics/continue-outside-loop.slang(4): error 30004: 'continue' must appear inside loop constructs. +} +standard output = { +} diff --git a/tests/diagnostics/continue-outside-loop.spire b/tests/diagnostics/continue-outside-loop.spire deleted file mode 100644 index cad9dce6e..000000000 --- a/tests/diagnostics/continue-outside-loop.spire +++ /dev/null @@ -1,4 +0,0 @@ -//TEST:SIMPLE: -// `continue` where it isn't allowed - -void foo() { continue; } diff --git a/tests/diagnostics/continue-outside-loop.spire.expected b/tests/diagnostics/continue-outside-loop.spire.expected deleted file mode 100644 index d12cceb78..000000000 --- a/tests/diagnostics/continue-outside-loop.spire.expected +++ /dev/null @@ -1,6 +0,0 @@ -result code = -1 -standard error = { -Tests/Diagnostics/continue-outside-loop.spire(4): error 30004: 'continue' must appear inside loop constructs. -} -standard output = { -} diff --git a/tests/diagnostics/expected-token-eof.slang b/tests/diagnostics/expected-token-eof.slang new file mode 100644 index 000000000..99ab161ec --- /dev/null +++ b/tests/diagnostics/expected-token-eof.slang @@ -0,0 +1,6 @@ +//TEST:SIMPLE: +// expected one token, but got EOF + +int foo() +{ + int a = 3 \ No newline at end of file diff --git a/tests/diagnostics/expected-token-eof.slang.expected b/tests/diagnostics/expected-token-eof.slang.expected new file mode 100644 index 000000000..a1446cb14 --- /dev/null +++ b/tests/diagnostics/expected-token-eof.slang.expected @@ -0,0 +1,6 @@ +result code = -1 +standard error = { +tests/diagnostics/expected-token-eof.slang(6): error 20001: unexpected end of file, expected ';' +} +standard output = { +} diff --git a/tests/diagnostics/expected-token-eof.spire b/tests/diagnostics/expected-token-eof.spire deleted file mode 100644 index 99ab161ec..000000000 --- a/tests/diagnostics/expected-token-eof.spire +++ /dev/null @@ -1,6 +0,0 @@ -//TEST:SIMPLE: -// expected one token, but got EOF - -int foo() -{ - int a = 3 \ No newline at end of file diff --git a/tests/diagnostics/expected-token-eof.spire.expected b/tests/diagnostics/expected-token-eof.spire.expected deleted file mode 100644 index 121ac3374..000000000 --- a/tests/diagnostics/expected-token-eof.spire.expected +++ /dev/null @@ -1,6 +0,0 @@ -result code = -1 -standard error = { -Tests/Diagnostics/expected-token-eof.spire(6): error 20001: unexpected end of file, expected ';' -} -standard output = { -} diff --git a/tests/diagnostics/expected-token.slang b/tests/diagnostics/expected-token.slang new file mode 100644 index 000000000..db85e7b92 --- /dev/null +++ b/tests/diagnostics/expected-token.slang @@ -0,0 +1,7 @@ +//TEST:SIMPLE: +// expected one token, but got another + +int foo() +{ + int a = 3 ] +} \ No newline at end of file diff --git a/tests/diagnostics/expected-token.slang.expected b/tests/diagnostics/expected-token.slang.expected new file mode 100644 index 000000000..9c5c886ba --- /dev/null +++ b/tests/diagnostics/expected-token.slang.expected @@ -0,0 +1,6 @@ +result code = -1 +standard error = { +tests/diagnostics/expected-token.slang(6): error 20001: unexpected ']', expected ';' +} +standard output = { +} diff --git a/tests/diagnostics/expected-token.spire b/tests/diagnostics/expected-token.spire deleted file mode 100644 index db85e7b92..000000000 --- a/tests/diagnostics/expected-token.spire +++ /dev/null @@ -1,7 +0,0 @@ -//TEST:SIMPLE: -// expected one token, but got another - -int foo() -{ - int a = 3 ] -} \ No newline at end of file diff --git a/tests/diagnostics/expected-token.spire.expected b/tests/diagnostics/expected-token.spire.expected deleted file mode 100644 index 508a06726..000000000 --- a/tests/diagnostics/expected-token.spire.expected +++ /dev/null @@ -1,6 +0,0 @@ -result code = -1 -standard error = { -Tests/Diagnostics/expected-token.spire(6): error 20001: unexpected ']', expected ';' -} -standard output = { -} diff --git a/tests/diagnostics/function-redefinition.slang.disabled b/tests/diagnostics/function-redefinition.slang.disabled new file mode 100644 index 000000000..d47cb1bbc --- /dev/null +++ b/tests/diagnostics/function-redefinition.slang.disabled @@ -0,0 +1,5 @@ +//TEST:SIMPLE: +// redefining a function + +int foo(int a) { return 0; } +int foo(int b) { return 1; } diff --git a/tests/diagnostics/function-redefinition.slang.expected b/tests/diagnostics/function-redefinition.slang.expected new file mode 100644 index 000000000..ff96cf5ea --- /dev/null +++ b/tests/diagnostics/function-redefinition.slang.expected @@ -0,0 +1,6 @@ +result code = -1 +standard error = { +tests/diagnostics/function-redefinition.slang(5): error 30001: 'foo(int)': function redefinition. +} +standard output = { +} diff --git a/tests/diagnostics/function-redefinition.spire.disabled b/tests/diagnostics/function-redefinition.spire.disabled deleted file mode 100644 index d47cb1bbc..000000000 --- a/tests/diagnostics/function-redefinition.spire.disabled +++ /dev/null @@ -1,5 +0,0 @@ -//TEST:SIMPLE: -// redefining a function - -int foo(int a) { return 0; } -int foo(int b) { return 1; } diff --git a/tests/diagnostics/function-redefinition.spire.expected b/tests/diagnostics/function-redefinition.spire.expected deleted file mode 100644 index 94b0d3626..000000000 --- a/tests/diagnostics/function-redefinition.spire.expected +++ /dev/null @@ -1,6 +0,0 @@ -result code = -1 -standard error = { -Tests/Diagnostics/function-redefinition.spire(5): error 30001: 'foo(int)': function redefinition. -} -standard output = { -} diff --git a/tests/diagnostics/hull-shader-invalid-domain.slang.disabled b/tests/diagnostics/hull-shader-invalid-domain.slang.disabled new file mode 100644 index 000000000..a1341631a --- /dev/null +++ b/tests/diagnostics/hull-shader-invalid-domain.slang.disabled @@ -0,0 +1,53 @@ +//TEST:SIMPLE: +// `HullShader` without `Domain` attribute + +pipeline P +{ + world CoarseVertex; + world ControlPoint; + world CornerPoint; + world TessPatch; + world FineVertex; + + require @FineVertex vec4 RS_Position; + require @ControlPoint vec2 tessLevelInner; + require @ControlPoint vec4 tessLevelOuter; + + // implicit import operator CoarseVertex->CornerPoint + extern @CornerPoint CoarseVertex[] CoarseVertex_ControlPoint; + [PerCornerIterator] + extern @CornerPoint int HS_CornerID; + + extern @ControlPoint CoarseVertex[] CoarseVertex_ControlPoint; + extern @TessPatch CoarseVertex[] CoarseVertex_ControlPoint; + [InvocationId] + extern @ControlPoint int invocationId; + extern @FineVertex ControlPoint[] ControlPoint_tes; + extern @FineVertex Patch perPatch_tes; + + extern @FineVertex Patch perCorner_tes; + [TessCoord] + extern @FineVertex vec3 tessCoord; + + stage hs : HullShader + { + PatchWorld: TessPatch; + ControlPointWorld: ControlPoint; + CornerPointWorld: CornerPoint; + InputControlPointCount: 3; + ControlPointCount: 1; + Domain: pentagons; + TessLevelOuter: tessLevelOuter; + TessLevelInner: tessLevelInner; + Partitioning: integer; + OutputTopology: triangle_ccw; + } +} + +shader S + targets P +{ + @FineVertex float4 RS_Position = float4(0.0); + @ControlPoint float2 tessLevelInner = float2(2.0); + @ControlPoint float4 tessLevelOuter = float4(2.0); +} \ No newline at end of file diff --git a/tests/diagnostics/hull-shader-invalid-domain.slang.expected b/tests/diagnostics/hull-shader-invalid-domain.slang.expected new file mode 100644 index 000000000..6b8d7761c --- /dev/null +++ b/tests/diagnostics/hull-shader-invalid-domain.slang.expected @@ -0,0 +1,6 @@ +result code = -1 +standard error = { +tests/diagnostics/hull-shader-invalid-domain.slang(39): error 50053: 'Domain' should be either 'triangles' or 'quads'. +} +standard output = { +} diff --git a/tests/diagnostics/hull-shader-invalid-domain.spire.disabled b/tests/diagnostics/hull-shader-invalid-domain.spire.disabled deleted file mode 100644 index a1341631a..000000000 --- a/tests/diagnostics/hull-shader-invalid-domain.spire.disabled +++ /dev/null @@ -1,53 +0,0 @@ -//TEST:SIMPLE: -// `HullShader` without `Domain` attribute - -pipeline P -{ - world CoarseVertex; - world ControlPoint; - world CornerPoint; - world TessPatch; - world FineVertex; - - require @FineVertex vec4 RS_Position; - require @ControlPoint vec2 tessLevelInner; - require @ControlPoint vec4 tessLevelOuter; - - // implicit import operator CoarseVertex->CornerPoint - extern @CornerPoint CoarseVertex[] CoarseVertex_ControlPoint; - [PerCornerIterator] - extern @CornerPoint int HS_CornerID; - - extern @ControlPoint CoarseVertex[] CoarseVertex_ControlPoint; - extern @TessPatch CoarseVertex[] CoarseVertex_ControlPoint; - [InvocationId] - extern @ControlPoint int invocationId; - extern @FineVertex ControlPoint[] ControlPoint_tes; - extern @FineVertex Patch perPatch_tes; - - extern @FineVertex Patch perCorner_tes; - [TessCoord] - extern @FineVertex vec3 tessCoord; - - stage hs : HullShader - { - PatchWorld: TessPatch; - ControlPointWorld: ControlPoint; - CornerPointWorld: CornerPoint; - InputControlPointCount: 3; - ControlPointCount: 1; - Domain: pentagons; - TessLevelOuter: tessLevelOuter; - TessLevelInner: tessLevelInner; - Partitioning: integer; - OutputTopology: triangle_ccw; - } -} - -shader S - targets P -{ - @FineVertex float4 RS_Position = float4(0.0); - @ControlPoint float2 tessLevelInner = float2(2.0); - @ControlPoint float4 tessLevelOuter = float4(2.0); -} \ No newline at end of file diff --git a/tests/diagnostics/hull-shader-invalid-domain.spire.expected b/tests/diagnostics/hull-shader-invalid-domain.spire.expected deleted file mode 100644 index 89b4634aa..000000000 --- a/tests/diagnostics/hull-shader-invalid-domain.spire.expected +++ /dev/null @@ -1,6 +0,0 @@ -result code = -1 -standard error = { -Tests/Diagnostics/hull-shader-invalid-domain.spire(39): error 50053: 'Domain' should be either 'triangles' or 'quads'. -} -standard output = { -} diff --git a/tests/diagnostics/hull-shader-no-domain.slang.disabled b/tests/diagnostics/hull-shader-no-domain.slang.disabled new file mode 100644 index 000000000..87bf2a81c --- /dev/null +++ b/tests/diagnostics/hull-shader-no-domain.slang.disabled @@ -0,0 +1,53 @@ +//TEST:SIMPLE: +// `HullShader` without `Domain` attribute + +pipeline P +{ + world CoarseVertex; + world ControlPoint; + world CornerPoint; + world TessPatch; + world FineVertex; + + require @FineVertex vec4 RS_Position; + require @ControlPoint vec2 tessLevelInner; + require @ControlPoint vec4 tessLevelOuter; + + // implicit import operator CoarseVertex->CornerPoint + extern @CornerPoint CoarseVertex[] CoarseVertex_ControlPoint; + [PerCornerIterator] + extern @CornerPoint int HS_CornerID; + + extern @ControlPoint CoarseVertex[] CoarseVertex_ControlPoint; + extern @TessPatch CoarseVertex[] CoarseVertex_ControlPoint; + [InvocationId] + extern @ControlPoint int invocationId; + extern @FineVertex ControlPoint[] ControlPoint_tes; + extern @FineVertex Patch perPatch_tes; + + extern @FineVertex Patch perCorner_tes; + [TessCoord] + extern @FineVertex vec3 tessCoord; + + stage hs : HullShader + { + PatchWorld: TessPatch; + ControlPointWorld: ControlPoint; + CornerPointWorld: CornerPoint; + InputControlPointCount: 3; + ControlPointCount: 1; +// Domain: triangles; + TessLevelOuter: tessLevelOuter; + TessLevelInner: tessLevelInner; + Partitioning: integer; + OutputTopology: triangle_ccw; + } +} + +shader S + targets P +{ + @FineVertex float4 RS_Position = float4(0.0); + @ControlPoint float2 tessLevelInner = float2(2.0); + @ControlPoint float4 tessLevelOuter = float4(2.0); +} \ No newline at end of file diff --git a/tests/diagnostics/hull-shader-no-domain.slang.expected b/tests/diagnostics/hull-shader-no-domain.slang.expected new file mode 100644 index 000000000..98543caaf --- /dev/null +++ b/tests/diagnostics/hull-shader-no-domain.slang.expected @@ -0,0 +1,6 @@ +result code = -1 +standard error = { +tests/diagnostics/hull-shader-no-domain.slang(32): error 50052: 'HullShader' requires attribute 'Domain'. +} +standard output = { +} diff --git a/tests/diagnostics/hull-shader-no-domain.spire.disabled b/tests/diagnostics/hull-shader-no-domain.spire.disabled deleted file mode 100644 index 87bf2a81c..000000000 --- a/tests/diagnostics/hull-shader-no-domain.spire.disabled +++ /dev/null @@ -1,53 +0,0 @@ -//TEST:SIMPLE: -// `HullShader` without `Domain` attribute - -pipeline P -{ - world CoarseVertex; - world ControlPoint; - world CornerPoint; - world TessPatch; - world FineVertex; - - require @FineVertex vec4 RS_Position; - require @ControlPoint vec2 tessLevelInner; - require @ControlPoint vec4 tessLevelOuter; - - // implicit import operator CoarseVertex->CornerPoint - extern @CornerPoint CoarseVertex[] CoarseVertex_ControlPoint; - [PerCornerIterator] - extern @CornerPoint int HS_CornerID; - - extern @ControlPoint CoarseVertex[] CoarseVertex_ControlPoint; - extern @TessPatch CoarseVertex[] CoarseVertex_ControlPoint; - [InvocationId] - extern @ControlPoint int invocationId; - extern @FineVertex ControlPoint[] ControlPoint_tes; - extern @FineVertex Patch perPatch_tes; - - extern @FineVertex Patch perCorner_tes; - [TessCoord] - extern @FineVertex vec3 tessCoord; - - stage hs : HullShader - { - PatchWorld: TessPatch; - ControlPointWorld: ControlPoint; - CornerPointWorld: CornerPoint; - InputControlPointCount: 3; - ControlPointCount: 1; -// Domain: triangles; - TessLevelOuter: tessLevelOuter; - TessLevelInner: tessLevelInner; - Partitioning: integer; - OutputTopology: triangle_ccw; - } -} - -shader S - targets P -{ - @FineVertex float4 RS_Position = float4(0.0); - @ControlPoint float2 tessLevelInner = float2(2.0); - @ControlPoint float4 tessLevelOuter = float4(2.0); -} \ No newline at end of file diff --git a/tests/diagnostics/hull-shader-no-domain.spire.expected b/tests/diagnostics/hull-shader-no-domain.spire.expected deleted file mode 100644 index 08a08ad79..000000000 --- a/tests/diagnostics/hull-shader-no-domain.spire.expected +++ /dev/null @@ -1,6 +0,0 @@ -result code = -1 -standard error = { -Tests/Diagnostics/hull-shader-no-domain.spire(32): error 50052: 'HullShader' requires attribute 'Domain'. -} -standard output = { -} diff --git a/tests/diagnostics/illegal-character.slang b/tests/diagnostics/illegal-character.slang new file mode 100644 index 000000000..5915e861f --- /dev/null +++ b/tests/diagnostics/illegal-character.slang @@ -0,0 +1,5 @@ +//TEST:SIMPLE: +// illegal character + +` + diff --git a/tests/diagnostics/illegal-character.slang.expected b/tests/diagnostics/illegal-character.slang.expected new file mode 100644 index 000000000..4c5ac7086 --- /dev/null +++ b/tests/diagnostics/illegal-character.slang.expected @@ -0,0 +1,6 @@ +result code = -1 +standard error = { +tests/diagnostics/illegal-character.slang(4): error 10000: illegal character '`' +} +standard output = { +} diff --git a/tests/diagnostics/illegal-character.spire b/tests/diagnostics/illegal-character.spire deleted file mode 100644 index 5915e861f..000000000 --- a/tests/diagnostics/illegal-character.spire +++ /dev/null @@ -1,5 +0,0 @@ -//TEST:SIMPLE: -// illegal character - -` - diff --git a/tests/diagnostics/illegal-character.spire.expected b/tests/diagnostics/illegal-character.spire.expected deleted file mode 100644 index 301b99063..000000000 --- a/tests/diagnostics/illegal-character.spire.expected +++ /dev/null @@ -1,6 +0,0 @@ -result code = -1 -standard error = { -Tests/Diagnostics/illegal-character.spire(4): error 10000: illegal character '`' -} -standard output = { -} diff --git a/tests/diagnostics/missing-file.slang.disabled b/tests/diagnostics/missing-file.slang.disabled new file mode 100644 index 000000000..a1128d97b --- /dev/null +++ b/tests/diagnostics/missing-file.slang.disabled @@ -0,0 +1,3 @@ +// trying to import a non-existant file + +using "does-not-exist.slang" diff --git a/tests/diagnostics/missing-file.slang.expected b/tests/diagnostics/missing-file.slang.expected new file mode 100644 index 000000000..13a066d4c --- /dev/null +++ b/tests/diagnostics/missing-file.slang.expected @@ -0,0 +1,7 @@ +result code = -1 +standard error = { +tests/diagnostics/missing-file.slang(1): error 20001: unexpected end of file, expected ';' +tests/diagnostics/missing-file.slang(4): error 2: cannot find file 'does-not-exist.slang'. +} +standard output = { +} diff --git a/tests/diagnostics/missing-file.spire.disabled b/tests/diagnostics/missing-file.spire.disabled deleted file mode 100644 index f340dd95e..000000000 --- a/tests/diagnostics/missing-file.spire.disabled +++ /dev/null @@ -1,3 +0,0 @@ -// trying to import a non-existant file - -using "does-not-exist.spire" diff --git a/tests/diagnostics/missing-file.spire.expected b/tests/diagnostics/missing-file.spire.expected deleted file mode 100644 index d4722c0e2..000000000 --- a/tests/diagnostics/missing-file.spire.expected +++ /dev/null @@ -1,7 +0,0 @@ -result code = -1 -standard error = { -Tests/Diagnostics/missing-file.spire(1): error 20001: unexpected end of file, expected ';' -Tests/Diagnostics/missing-file.spire(4): error 2: cannot find file 'does-not-exist.spire'. -} -standard output = { -} diff --git a/tests/diagnostics/missing-include-file.slang b/tests/diagnostics/missing-include-file.slang new file mode 100644 index 000000000..9e0f99b9c --- /dev/null +++ b/tests/diagnostics/missing-include-file.slang @@ -0,0 +1,4 @@ +//TEST:SIMPLE: +// trying to include a non-existant file + +#include "does-not-exist.h" diff --git a/tests/diagnostics/missing-include-file.slang.expected b/tests/diagnostics/missing-include-file.slang.expected new file mode 100644 index 000000000..7f13d3616 --- /dev/null +++ b/tests/diagnostics/missing-include-file.slang.expected @@ -0,0 +1,6 @@ +result code = -1 +standard error = { +tests/diagnostics/missing-include-file.slang(4): error 15300: failed to find include file 'does-not-exist.h' +} +standard output = { +} diff --git a/tests/diagnostics/missing-include-file.spire b/tests/diagnostics/missing-include-file.spire deleted file mode 100644 index 9e0f99b9c..000000000 --- a/tests/diagnostics/missing-include-file.spire +++ /dev/null @@ -1,4 +0,0 @@ -//TEST:SIMPLE: -// trying to include a non-existant file - -#include "does-not-exist.h" diff --git a/tests/diagnostics/missing-include-file.spire.expected b/tests/diagnostics/missing-include-file.spire.expected deleted file mode 100644 index 24649c484..000000000 --- a/tests/diagnostics/missing-include-file.spire.expected +++ /dev/null @@ -1,6 +0,0 @@ -result code = -1 -standard error = { -Tests/Diagnostics/missing-include-file.spire(4): error 15300: failed to find include file 'does-not-exist.h' -} -standard output = { -} diff --git a/tests/diagnostics/parameter-already-defined.slang b/tests/diagnostics/parameter-already-defined.slang new file mode 100644 index 000000000..860b17e65 --- /dev/null +++ b/tests/diagnostics/parameter-already-defined.slang @@ -0,0 +1,4 @@ +//TEST:SIMPLE: +// re-use parameter name + +int foo( int a, float a ) { return 0; } diff --git a/tests/diagnostics/parameter-already-defined.slang.expected b/tests/diagnostics/parameter-already-defined.slang.expected new file mode 100644 index 000000000..ae7546a10 --- /dev/null +++ b/tests/diagnostics/parameter-already-defined.slang.expected @@ -0,0 +1,6 @@ +result code = -1 +standard error = { +tests/diagnostics/parameter-already-defined.slang(4): error 30002: parameter 'a' already defined. +} +standard output = { +} diff --git a/tests/diagnostics/parameter-already-defined.spire b/tests/diagnostics/parameter-already-defined.spire deleted file mode 100644 index 860b17e65..000000000 --- a/tests/diagnostics/parameter-already-defined.spire +++ /dev/null @@ -1,4 +0,0 @@ -//TEST:SIMPLE: -// re-use parameter name - -int foo( int a, float a ) { return 0; } diff --git a/tests/diagnostics/parameter-already-defined.spire.expected b/tests/diagnostics/parameter-already-defined.spire.expected deleted file mode 100644 index 0021afa42..000000000 --- a/tests/diagnostics/parameter-already-defined.spire.expected +++ /dev/null @@ -1,6 +0,0 @@ -result code = -1 -standard error = { -Tests/Diagnostics/parameter-already-defined.spire(4): error 30002: parameter 'a' already defined. -} -standard output = { -} diff --git a/tests/diagnostics/undefined-identifier.slang b/tests/diagnostics/undefined-identifier.slang new file mode 100644 index 000000000..6c5a59f75 --- /dev/null +++ b/tests/diagnostics/undefined-identifier.slang @@ -0,0 +1,7 @@ +//TEST:SIMPLE: +// use of undefined identifier + +void foo() +{ + int a = b; +} diff --git a/tests/diagnostics/undefined-identifier.slang.expected b/tests/diagnostics/undefined-identifier.slang.expected new file mode 100644 index 000000000..48361e78c --- /dev/null +++ b/tests/diagnostics/undefined-identifier.slang.expected @@ -0,0 +1,6 @@ +result code = -1 +standard error = { +tests/diagnostics/undefined-identifier.slang(6): error 30015: undefined identifier 'b'. +} +standard output = { +} diff --git a/tests/diagnostics/undefined-identifier.spire b/tests/diagnostics/undefined-identifier.spire deleted file mode 100644 index 6c5a59f75..000000000 --- a/tests/diagnostics/undefined-identifier.spire +++ /dev/null @@ -1,7 +0,0 @@ -//TEST:SIMPLE: -// use of undefined identifier - -void foo() -{ - int a = b; -} diff --git a/tests/diagnostics/undefined-identifier.spire.expected b/tests/diagnostics/undefined-identifier.spire.expected deleted file mode 100644 index 2eed77baf..000000000 --- a/tests/diagnostics/undefined-identifier.spire.expected +++ /dev/null @@ -1,6 +0,0 @@ -result code = -1 -standard error = { -Tests/Diagnostics/undefined-identifier.spire(6): error 30015: undefined identifier 'b'. -} -standard output = { -} diff --git a/tests/diagnostics/variable-void-type.slang b/tests/diagnostics/variable-void-type.slang new file mode 100644 index 000000000..926e6401d --- /dev/null +++ b/tests/diagnostics/variable-void-type.slang @@ -0,0 +1,7 @@ +//TEST:SIMPLE: +// variable with `void` type + +void foo() +{ + void a; +} diff --git a/tests/diagnostics/variable-void-type.slang.expected b/tests/diagnostics/variable-void-type.slang.expected new file mode 100644 index 000000000..a243dd50a --- /dev/null +++ b/tests/diagnostics/variable-void-type.slang.expected @@ -0,0 +1,6 @@ +result code = -1 +standard error = { +tests/diagnostics/variable-void-type.slang(6): error 30009: invalid type 'void'. +} +standard output = { +} diff --git a/tests/diagnostics/variable-void-type.spire b/tests/diagnostics/variable-void-type.spire deleted file mode 100644 index 926e6401d..000000000 --- a/tests/diagnostics/variable-void-type.spire +++ /dev/null @@ -1,7 +0,0 @@ -//TEST:SIMPLE: -// variable with `void` type - -void foo() -{ - void a; -} diff --git a/tests/diagnostics/variable-void-type.spire.expected b/tests/diagnostics/variable-void-type.spire.expected deleted file mode 100644 index 1f0e6765c..000000000 --- a/tests/diagnostics/variable-void-type.spire.expected +++ /dev/null @@ -1,6 +0,0 @@ -result code = -1 -standard error = { -Tests/Diagnostics/variable-void-type.spire(6): error 30009: invalid type 'void'. -} -standard output = { -} diff --git a/tests/diagnostics/while-predicate-type.slang b/tests/diagnostics/while-predicate-type.slang new file mode 100644 index 000000000..14ce45533 --- /dev/null +++ b/tests/diagnostics/while-predicate-type.slang @@ -0,0 +1,10 @@ +//TEST:SIMPLE: +// bad type for `while` predicate + +struct S {}; + +void foo() +{ + S s; + while(s) {break;} +} diff --git a/tests/diagnostics/while-predicate-type.slang.expected b/tests/diagnostics/while-predicate-type.slang.expected new file mode 100644 index 000000000..d921c588e --- /dev/null +++ b/tests/diagnostics/while-predicate-type.slang.expected @@ -0,0 +1,6 @@ +result code = -1 +standard error = { +tests/diagnostics/while-predicate-type.slang(9): error 30010: 'while': expression must evaluate to int. +} +standard output = { +} diff --git a/tests/diagnostics/while-predicate-type.spire b/tests/diagnostics/while-predicate-type.spire deleted file mode 100644 index 14ce45533..000000000 --- a/tests/diagnostics/while-predicate-type.spire +++ /dev/null @@ -1,10 +0,0 @@ -//TEST:SIMPLE: -// bad type for `while` predicate - -struct S {}; - -void foo() -{ - S s; - while(s) {break;} -} diff --git a/tests/diagnostics/while-predicate-type.spire.expected b/tests/diagnostics/while-predicate-type.spire.expected deleted file mode 100644 index 9f94e679e..000000000 --- a/tests/diagnostics/while-predicate-type.spire.expected +++ /dev/null @@ -1,6 +0,0 @@ -result code = -1 -standard error = { -Tests/Diagnostics/while-predicate-type.spire(9): error 30010: 'while': expression must evaluate to int. -} -standard output = { -} diff --git a/tests/front-end/lexer-comments.slang b/tests/front-end/lexer-comments.slang new file mode 100644 index 000000000..d8c06ca76 --- /dev/null +++ b/tests/front-end/lexer-comments.slang @@ -0,0 +1,13 @@ +//TEST:SIMPLE: +// confirming that the lexer handles comments correctly + +// line comment + +/* block comment +*/ + +/* block comments don't nest + /* +*/ + +float f(float f) { return f; } \ No newline at end of file diff --git a/tests/front-end/lexer-comments.spire b/tests/front-end/lexer-comments.spire deleted file mode 100644 index d8c06ca76..000000000 --- a/tests/front-end/lexer-comments.spire +++ /dev/null @@ -1,13 +0,0 @@ -//TEST:SIMPLE: -// confirming that the lexer handles comments correctly - -// line comment - -/* block comment -*/ - -/* block comments don't nest - /* -*/ - -float f(float f) { return f; } \ No newline at end of file diff --git a/tests/front-end/parser-decls.slang b/tests/front-end/parser-decls.slang new file mode 100644 index 000000000..bc5a2b13b --- /dev/null +++ b/tests/front-end/parser-decls.slang @@ -0,0 +1,60 @@ +//TEST:SIMPLE: +// test that we can parse all the expected kinds of declarations + +// global-scope `using` is another test + +/* Note(tfoley): disabled during syntax transition +// pipeline +pipeline P +{ + +} +*/ + +// empty declaration +; + +// struct type +struct Pair +{ + int head; + float tail; + +// Note(tfoley): semicolon is expected/required +// here for compatibility with HLSL (C-style +// declarators). +// +// TODO: this could be removed if we treat +// HLSL as a "compatibility mode" +}; + +// function at global scope +float tail(Pair p) { return p.tail; } + +/* Note(tfoley): disabled during syntax transition + +// module +module M +{ + // component declarations + + // using declarations + +} + +// a module can "inherit" from a pipeline +module M2 + targets P +{ +} + +// shader +shader S +{ + // component declarations + + // using declarations + +} + +*/ \ No newline at end of file diff --git a/tests/front-end/parser-decls.spire b/tests/front-end/parser-decls.spire deleted file mode 100644 index bc5a2b13b..000000000 --- a/tests/front-end/parser-decls.spire +++ /dev/null @@ -1,60 +0,0 @@ -//TEST:SIMPLE: -// test that we can parse all the expected kinds of declarations - -// global-scope `using` is another test - -/* Note(tfoley): disabled during syntax transition -// pipeline -pipeline P -{ - -} -*/ - -// empty declaration -; - -// struct type -struct Pair -{ - int head; - float tail; - -// Note(tfoley): semicolon is expected/required -// here for compatibility with HLSL (C-style -// declarators). -// -// TODO: this could be removed if we treat -// HLSL as a "compatibility mode" -}; - -// function at global scope -float tail(Pair p) { return p.tail; } - -/* Note(tfoley): disabled during syntax transition - -// module -module M -{ - // component declarations - - // using declarations - -} - -// a module can "inherit" from a pipeline -module M2 - targets P -{ -} - -// shader -shader S -{ - // component declarations - - // using declarations - -} - -*/ \ No newline at end of file diff --git a/tests/front-end/parser-empty.slang b/tests/front-end/parser-empty.slang new file mode 100644 index 000000000..bfd66f05b --- /dev/null +++ b/tests/front-end/parser-empty.slang @@ -0,0 +1 @@ +//TEST:SIMPLE: diff --git a/tests/front-end/parser-empty.spire b/tests/front-end/parser-empty.spire deleted file mode 100644 index bfd66f05b..000000000 --- a/tests/front-end/parser-empty.spire +++ /dev/null @@ -1 +0,0 @@ -//TEST:SIMPLE: diff --git a/tests/front-end/parser-error-unclosed-curly.slang b/tests/front-end/parser-error-unclosed-curly.slang new file mode 100644 index 000000000..6cfcca456 --- /dev/null +++ b/tests/front-end/parser-error-unclosed-curly.slang @@ -0,0 +1,3 @@ +//TEST:SIMPLE: +void foo() { +// Note: no closing curly brace diff --git a/tests/front-end/parser-error-unclosed-curly.slang.expected b/tests/front-end/parser-error-unclosed-curly.slang.expected new file mode 100644 index 000000000..379557108 --- /dev/null +++ b/tests/front-end/parser-error-unclosed-curly.slang.expected @@ -0,0 +1,6 @@ +result code = -1 +standard error = { +tests/front-end/parser-error-unclosed-curly.slang(4): error 20001: unexpected end of file, expected '}' +} +standard output = { +} diff --git a/tests/front-end/parser-error-unclosed-curly.spire b/tests/front-end/parser-error-unclosed-curly.spire deleted file mode 100644 index 6cfcca456..000000000 --- a/tests/front-end/parser-error-unclosed-curly.spire +++ /dev/null @@ -1,3 +0,0 @@ -//TEST:SIMPLE: -void foo() { -// Note: no closing curly brace diff --git a/tests/front-end/parser-error-unclosed-curly.spire.expected b/tests/front-end/parser-error-unclosed-curly.spire.expected deleted file mode 100644 index 437b6eab0..000000000 --- a/tests/front-end/parser-error-unclosed-curly.spire.expected +++ /dev/null @@ -1,6 +0,0 @@ -result code = -1 -standard error = { -Tests/FrontEnd/parser-error-unclosed-curly.spire(4): error 20001: unexpected end of file, expected '}' -} -standard output = { -} diff --git a/tests/front-end/parser-using-file-a.slang.h b/tests/front-end/parser-using-file-a.slang.h new file mode 100644 index 000000000..62e6acd06 --- /dev/null +++ b/tests/front-end/parser-using-file-a.slang.h @@ -0,0 +1,3 @@ +// this file exists to be included by "parser-using-file.spire" + +float a(float x) { return x * x; } diff --git a/tests/front-end/parser-using-file-a.spireh b/tests/front-end/parser-using-file-a.spireh deleted file mode 100644 index 62e6acd06..000000000 --- a/tests/front-end/parser-using-file-a.spireh +++ /dev/null @@ -1,3 +0,0 @@ -// this file exists to be included by "parser-using-file.spire" - -float a(float x) { return x * x; } diff --git a/tests/front-end/parser-using-file.spire.disabled b/tests/front-end/parser-using-file.spire.disabled index f93fb576c..b2e1648f7 100644 --- a/tests/front-end/parser-using-file.spire.disabled +++ b/tests/front-end/parser-using-file.spire.disabled @@ -1,6 +1,6 @@ //TEST:SIMPLE: // test that we can include a file via `using` -using "parser-using-file-a.spireh"; +using "parser-using-file-a.slang.h"; float base( float x ) { return a(x); } \ No newline at end of file diff --git a/tests/front-end/pipeline-simple.slang.h b/tests/front-end/pipeline-simple.slang.h new file mode 100644 index 000000000..6a6dc1b1c --- /dev/null +++ b/tests/front-end/pipeline-simple.slang.h @@ -0,0 +1,41 @@ +// pipeline-simple.slang.h + + +// TODO(tfoley): strip this down to a minimal pipeline + +pipeline StandardPipeline +{ + [Pinned] + input world MeshVertex; + + world CoarseVertex;// : "glsl(vertex:projCoord)" using projCoord export standardExport; + world Fragment;// : "glsl" export fragmentExport; + + require @CoarseVertex vec4 projCoord; + + [VertexInput] + extern @CoarseVertex MeshVertex vertAttribIn; + import(MeshVertex->CoarseVertex) vertexImport() + { + return project(vertAttribIn); + } + + extern @Fragment CoarseVertex CoarseVertexIn; + import(CoarseVertex->Fragment) standardImport() +// TODO(tfoley): this trait doesn't seem to be implemented on `vec3` +// require trait IsTriviallyPassable(CoarseVertex) + { + return project(CoarseVertexIn); + } + + stage vs : VertexShader + { + World: CoarseVertex; + Position: projCoord; + } + + stage fs : FragmentShader + { + World: Fragment; + } +} \ No newline at end of file diff --git a/tests/front-end/pipeline-simple.spireh b/tests/front-end/pipeline-simple.spireh deleted file mode 100644 index 55afd693c..000000000 --- a/tests/front-end/pipeline-simple.spireh +++ /dev/null @@ -1,41 +0,0 @@ -// pipeline-simple.spireh - - -// TODO(tfoley): strip this down to a minimal pipeline - -pipeline StandardPipeline -{ - [Pinned] - input world MeshVertex; - - world CoarseVertex;// : "glsl(vertex:projCoord)" using projCoord export standardExport; - world Fragment;// : "glsl" export fragmentExport; - - require @CoarseVertex vec4 projCoord; - - [VertexInput] - extern @CoarseVertex MeshVertex vertAttribIn; - import(MeshVertex->CoarseVertex) vertexImport() - { - return project(vertAttribIn); - } - - extern @Fragment CoarseVertex CoarseVertexIn; - import(CoarseVertex->Fragment) standardImport() -// TODO(tfoley): this trait doesn't seem to be implemented on `vec3` -// require trait IsTriviallyPassable(CoarseVertex) - { - return project(CoarseVertexIn); - } - - stage vs : VertexShader - { - World: CoarseVertex; - Position: projCoord; - } - - stage fs : FragmentShader - { - World: Fragment; - } -} \ No newline at end of file diff --git a/tests/front-end/struct.slang b/tests/front-end/struct.slang new file mode 100644 index 000000000..16b1bebc7 --- /dev/null +++ b/tests/front-end/struct.slang @@ -0,0 +1,49 @@ +//TEST:SIMPLE: +// test that `struct` decls work + +// Note(tfoley): disabled during syntax transition +// #include "pipeline-simple.slang.h" + +// struct declaration +struct Foo +{ + float3 a; + float3 b; +}; + +// function on a struct +Foo makeFoo(float x, float y) +{ + // local of struct type + Foo foo; + foo.a = float3(x); + foo.b = float3(y); + return foo; +} + +/* Note(tfoley): disabled during syntax transition + +template shader Test() +// targets StandardPipeline +{ + // Uniform of struct type + param Foo foo1; + + @MeshVertex float3 position; + @MeshVertex float3 color; + + param mat4 modelViewProjection; + + public vec4 projCoord = modelViewProjection * vec4(position, 1.0); + + // Component of struct type + // Note(tfoley): use of `public` here required to work around parser limitations + public Foo foo2 = makeFoo(color.x, color.y); + + // + float3 result = foo1.a + foo2.b; + + out @Fragment vec4 colorTarget = vec4(result,1); +} + +*/ \ No newline at end of file diff --git a/tests/front-end/struct.spire b/tests/front-end/struct.spire deleted file mode 100644 index 8347f8d58..000000000 --- a/tests/front-end/struct.spire +++ /dev/null @@ -1,49 +0,0 @@ -//TEST:SIMPLE: -// test that `struct` decls work - -// Note(tfoley): disabled during syntax transition -// #include "pipeline-simple.spireh" - -// struct declaration -struct Foo -{ - float3 a; - float3 b; -}; - -// function on a struct -Foo makeFoo(float x, float y) -{ - // local of struct type - Foo foo; - foo.a = float3(x); - foo.b = float3(y); - return foo; -} - -/* Note(tfoley): disabled during syntax transition - -template shader Test() -// targets StandardPipeline -{ - // Uniform of struct type - param Foo foo1; - - @MeshVertex float3 position; - @MeshVertex float3 color; - - param mat4 modelViewProjection; - - public vec4 projCoord = modelViewProjection * vec4(position, 1.0); - - // Component of struct type - // Note(tfoley): use of `public` here required to work around parser limitations - public Foo foo2 = makeFoo(color.x, color.y); - - // - float3 result = foo1.a + foo2.b; - - out @Fragment vec4 colorTarget = vec4(result,1); -} - -*/ \ No newline at end of file diff --git a/tests/front-end/typedef.slang b/tests/front-end/typedef.slang new file mode 100644 index 000000000..7e96bead0 --- /dev/null +++ b/tests/front-end/typedef.slang @@ -0,0 +1,15 @@ +//TEST:SIMPLE: +// test that we can `typedef` a type + +typedef float F32; + +F32 foo() +{ + float x = 123.0; + return x; +} + +float bar() +{ + return foo(); +} diff --git a/tests/front-end/typedef.spire b/tests/front-end/typedef.spire deleted file mode 100644 index 7e96bead0..000000000 --- a/tests/front-end/typedef.spire +++ /dev/null @@ -1,15 +0,0 @@ -//TEST:SIMPLE: -// test that we can `typedef` a type - -typedef float F32; - -F32 foo() -{ - float x = 123.0; - return x; -} - -float bar() -{ - return foo(); -} diff --git a/tests/preprocessor/define-function-like.slang b/tests/preprocessor/define-function-like.slang new file mode 100644 index 000000000..f1dd9caa4 --- /dev/null +++ b/tests/preprocessor/define-function-like.slang @@ -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.slang.expected b/tests/preprocessor/define-function-like.slang.expected new file mode 100644 index 000000000..aed62dc31 --- /dev/null +++ b/tests/preprocessor/define-function-like.slang.expected @@ -0,0 +1,7 @@ +result code = -1 +standard error = { +tests/preprocessor/define-function-like.slang(16): error 30015: undefined identifier 'x'. +tests/preprocessor/define-function-like.slang(16): error 30015: undefined identifier 'x'. +} +standard output = { +} diff --git a/tests/preprocessor/define-function-like.spire b/tests/preprocessor/define-function-like.spire deleted file mode 100644 index f1dd9caa4..000000000 --- a/tests/preprocessor/define-function-like.spire +++ /dev/null @@ -1,19 +0,0 @@ -//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 deleted file mode 100644 index e7b2a582a..000000000 --- a/tests/preprocessor/define-function-like.spire.expected +++ /dev/null @@ -1,7 +0,0 @@ -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.slang b/tests/preprocessor/define-simple.slang new file mode 100644 index 000000000..26436b258 --- /dev/null +++ b/tests/preprocessor/define-simple.slang @@ -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/define-simple.spire b/tests/preprocessor/define-simple.spire deleted file mode 100644 index 26436b258..000000000 --- a/tests/preprocessor/define-simple.spire +++ /dev/null @@ -1,14 +0,0 @@ -//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.slang b/tests/preprocessor/if.slang new file mode 100644 index 000000000..fe5948c33 --- /dev/null +++ b/tests/preprocessor/if.slang @@ -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/if.spire b/tests/preprocessor/if.spire deleted file mode 100644 index fe5948c33..000000000 --- a/tests/preprocessor/if.spire +++ /dev/null @@ -1,15 +0,0 @@ -//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.slang b/tests/preprocessor/ifdef.slang new file mode 100644 index 000000000..a3ca82838 --- /dev/null +++ b/tests/preprocessor/ifdef.slang @@ -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/ifdef.spire b/tests/preprocessor/ifdef.spire deleted file mode 100644 index a3ca82838..000000000 --- a/tests/preprocessor/ifdef.spire +++ /dev/null @@ -1,16 +0,0 @@ -//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.slang.h b/tests/preprocessor/include-a.slang.h new file mode 100644 index 000000000..8fecc6a98 --- /dev/null +++ b/tests/preprocessor/include-a.slang.h @@ -0,0 +1,3 @@ +// #include support + +int bar() { return foo(); } \ No newline at end of file diff --git a/tests/preprocessor/include-a.spireh b/tests/preprocessor/include-a.spireh deleted file mode 100644 index 8fecc6a98..000000000 --- a/tests/preprocessor/include-a.spireh +++ /dev/null @@ -1,3 +0,0 @@ -// #include support - -int bar() { return foo(); } \ No newline at end of file diff --git a/tests/preprocessor/include.slang b/tests/preprocessor/include.slang new file mode 100644 index 000000000..e21d23877 --- /dev/null +++ b/tests/preprocessor/include.slang @@ -0,0 +1,8 @@ +//TEST:SIMPLE: +// #include support + +int foo() { return 0; } + +#include "include-a.slang.h" + +int baz() { return bar(); } \ No newline at end of file diff --git a/tests/preprocessor/include.spire b/tests/preprocessor/include.spire deleted file mode 100644 index 8feca21cc..000000000 --- a/tests/preprocessor/include.spire +++ /dev/null @@ -1,8 +0,0 @@ -//TEST:SIMPLE: -// #include support - -int foo() { return 0; } - -#include "include-a.spireh" - -int baz() { return bar(); } \ No newline at end of file -- cgit v1.2.3