| struct S { | |
| a : i32, | |
| b : vec4<f32>, | |
| c : mat2x2<f32>, | |
| } | |
| @group(0) @binding(0) | |
| var<storage, read_write> v : S; | |
| var<private> i : u32; | |
| fn idx1() -> i32 { | |
| i += 1u; | |
| return 1; | |
| } | |
| fn idx2() -> i32 { | |
| i += 2u; | |
| return 1; | |
| } | |
| fn idx3() -> i32 { | |
| i += 3u; | |
| return 1; | |
| } | |
| fn foo() { | |
| var a = array<f32, 4>(); | |
| // Make sure that the functions are only evaluated once each. | |
| for (a[idx1()] *= 2.0; a[idx2()] < 10.0; a[idx3()] += 1.0) { | |
| } | |
| } |