diff options
Diffstat (limited to 'tests/programs/o3fat.zc')
| -rw-r--r-- | tests/programs/o3fat.zc | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/tests/programs/o3fat.zc b/tests/programs/o3fat.zc index 937b0f3..487f279 100644 --- a/tests/programs/o3fat.zc +++ b/tests/programs/o3fat.zc @@ -1,20 +1,23 @@ +namespace; +include rt, run; + // o3 objects reaching normal code get their types: through a return (all the way down the list), an assignment, a store into a field struct node { int v; node* next; }; -struct box { [3]node* slots; int n; }; +struct box { node*[3] slots; int n; }; unchecked o3 node* build(int n) { node* head = 0; - for (int i = 0; i < n; i++) { node* k = new(node); k.v = i; k.next = head; head = k; } + for (int i = 0; i < n; i++) { node* k = rt.new(node); k.v = i; k.next = head; head = k; } return head; } unchecked fn main() { node* l = build(5); - tprint(typeof_obj(l)); put_c(' '); tprint(typeof_obj(l.next.next.next)); put_c(' '); - put_n(l.next.v); put_c(' '); + run.tprint(rt.typeof_obj(l)); rt.put_c(' '); run.tprint(rt.typeof_obj(l.next.next.next)); rt.put_c(' '); + rt.put_n(l.next.v); rt.put_c(' '); box* b = 0; - o3 { b = new(box); b.slots[1] = new(node); b.n = 2; } - tprint(typeof_obj(b)); put_c(' '); tprint(typeof_obj(b.slots[1])); put_c(' '); + o3 { b = rt.new(box); b.slots[1] = rt.new(node); b.n = 2; } + run.tprint(rt.typeof_obj(b)); rt.put_c(' '); run.tprint(rt.typeof_obj(b.slots[1])); rt.put_c(' '); int* raw = 0; - o3 { raw = new(int, 6); } - tprint(typeof_obj(raw)); put_c(10); + o3 { raw = rt.new(int, 6); } + run.tprint(rt.typeof_obj(raw)); rt.put_c(10); return 0; } |
