| <!DOCTYPE html> |
| <html> |
| <meta charset=utf-8> |
| <meta name="timeout" content="long"> |
| <title>Test loops.</title> |
| <script src="js/test-harness.js"></script> |
| <script src="../js/webgpu-functions.js"></script> |
| <script src="../../resources/testharness.js"></script> |
| <script src="../../resources/testharnessreport.js"></script> |
| <script> |
| const whlslTests = {}; |
| |
| whlslTests.getterType = async () => { |
| await checkFail(` |
| int operator.x(thread int[] foo) |
| { |
| return foo[0]; |
| } |
| `); |
| await checkFail(` |
| int operator.x(int[3] foo) |
| { |
| return foo[0]; |
| } |
| `); |
| await checkFail(` |
| int operator[](thread int[] foo, int index) |
| { |
| return foo[index]; |
| } |
| `); |
| await checkFail(` |
| int operator.x(int[3] foo) |
| { |
| return foo[0]; |
| } |
| `); |
| await checkFail(` |
| struct Foo { |
| int x; |
| } |
| int operator[](Foo foo, uint4 index) |
| { |
| return foo[index.x]; |
| } |
| `); |
| }; |
| |
| whlslTests.setterType = async () => { |
| await checkFail(` |
| thread int[] operator.x=(thread int[] foo, uint x) |
| { |
| return foo; |
| } |
| `); |
| await checkFail(` |
| int[3] operator.x=(int[3] foo, uint x) |
| { |
| return foo; |
| } |
| `); |
| await checkFail(` |
| thread int[] operator[]=(thread int[] foo, uint x, uint y) |
| { |
| return foo; |
| } |
| `); |
| await checkFail(` |
| int[3] operator.x=(int[3] foo, uint x) |
| { |
| return foo; |
| } |
| `); |
| await checkFail(` |
| struct Foo { |
| int x; |
| } |
| Foo operator[]=(Foo foo, float4 y, uint z) |
| { |
| return foo.x; |
| } |
| `); |
| await checkFail(` |
| struct Foo { |
| int x; |
| } |
| int operator.y(Foo foo) |
| { |
| return foo.x; |
| } |
| Foo operator.y=(Foo foo, int4 x) |
| { |
| Foo result; |
| foo.x = x.x; |
| return result; |
| } |
| `); |
| }; |
| |
| runTests(whlslTests); |
| </script> |
| </html> |
| |