diff options
| author | Yong He <yonghe@outlook.com> | 2024-07-25 09:45:56 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-07-25 09:45:56 -0700 |
| commit | a443350a6bb344ccda46c35ebad5a7cf1a7b262d (patch) | |
| tree | a873d13d084e3054e52ca40b586def5f49a01ac3 /tests | |
| parent | 7ea47f9a7cb2a6dd8f9b1da909ed8a2e98216438 (diff) | |
Allow implicitly casting enum types to bool. (#4739)
* Allow implicitly casting enum types to bool.
* Fix.
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/language-feature/enums/implicit-cast-to-bool.slang | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/tests/language-feature/enums/implicit-cast-to-bool.slang b/tests/language-feature/enums/implicit-cast-to-bool.slang new file mode 100644 index 000000000..566a5e305 --- /dev/null +++ b/tests/language-feature/enums/implicit-cast-to-bool.slang @@ -0,0 +1,43 @@ +// Test enums can be implicitly casted to bool. + +//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK): -shaderobj + +[Flags] +enum BitFlags +{ + One, + Two, + Three +} + +int test<let n : bool>() +{ + return n; +} + +//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name=outputBuffer +RWStructuredBuffer<int> outputBuffer; + +[numthreads(4, 1, 1)] +void computeMain(int3 dispatchThreadID : SV_DispatchThreadID) +{ + BitFlags x = BitFlags.One | BitFlags.Two; + if (x & BitFlags.One) + outputBuffer[0] = 1; + else + outputBuffer[0] = 0; + if (x & BitFlags.Three) + outputBuffer[1] = 1; + else + outputBuffer[1] = 0; + if (x & BitFlags.Two) + outputBuffer[2] = 1; + else + outputBuffer[2] = 0; + + outputBuffer[3] = test<BitFlags.One & BitFlags.One>(); + // CHECK: 1 + // CHECK: 0 + // CHECK: 1 + // CHECK: 1 +} |
