blob: 0272d1c4051516637a51120c97f068cf0d5df7af [file] [log] [blame]
<!DOCTYPE html>
<html>
<meta charset=utf-8>
<meta name="timeout" content="long">
<title>correct pointer usage.</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.noPointersInStructOrArray = async () => {
await checkFail(`
struct S { int x; thread int* ptr; }
void foo() { }
`);
await checkFail(`
typedef T = thread int*;
struct S { int x; T ptr; }
void foo() { }
`);
await checkFail(`
struct S { thread int*[42] arr; }
void foo() { }
`);
await checkFail(`
void foo() {
thread int*[42] arr;
}
`);
await checkFail(`
typedef T = thread int*;
void foo() {
T[42] arr;
}
`);
await checkFail(`
typedef T = thread int*[42];
void foo() { }
`);
await checkFail(`
void foo() {
int x;
thread int* ptr = &x;
(&ptr);
}
`);
await checkFail(`
typedef T = thread int*[];
void foo() { }
`);
await checkFail(`
typedef I = int;
typedef T = thread I*[];
void foo() { }
`);
await checkFail(`
typedef I = thread int*;
typedef T = thread I[];
void foo() { }
`);
await checkFail(`
typedef I = thread int[];
typedef T = thread I[];
void foo() { }
`);
await checkFail(`
typedef I = thread int*;
typedef T = thread I*;
void foo() { }
`);
await checkFail(`
void foo() {
int x;
thread int[] arr = @x;
(@arr);
}
`);
await checkFail(`
void foo() {
int x;
thread int[] arr = @x;
(&arr);
}
`);
await checkFail(`
typedef I = thread int[];
typedef T = thread I*;
void foo() { }
`);
};
runTests(whlslTests);
</script>
</html>