//ww:run-exit 52 package main; type capture = struct { content: str, start: size, end: size }; type t = struct { pc: size, cap: capture }; fn setcap(ts: *[]t, i: size) void = { (*ts)[i].cap = capture { content = "hit", start = 2, end = 4 }; }; fn clearcap(ts: *[]t, i: size) void = { (*ts)[i].cap = capture { content = "z", ... }; }; export fn main() i32 = { let z: capture = capture { content = "", start = 0, end = 0 }; let ts: []t = []; append(ts, t { pc = 7, cap = z }); append(ts, t { pc = 8, cap = z }); setcap(&ts, 1); if (ts[1].cap.content.len != 3) { return 1; }; if (ts[1].cap.start != 2) { return 2; }; if (ts[1].cap.end != 4) { return 3; }; if (ts[1].pc != 8) { return 4; }; if (ts[0].cap.content.len != 0) { return 5; }; if (ts[0].pc != 7) { return 6; }; clearcap(&ts, 1); if (ts[1].cap.content.len != 1) { return 7; }; if (ts[1].cap.start != 0) { return 8; }; if (ts[1].cap.end != 0) { return 9; }; return 52; };