// `push ` where Context's first field is an `#inline` protocol // (`allocator: Allocator`) and the value being pushed is an `Arena` upcast to // that protocol. Exercises save/restore of the boxed context across the push. #import "modules/std.sx"; #import "modules/std/mem.sx"; main :: () -> void { arena := Arena.init(context.allocator, 4096); new_ctx := Context.{ allocator = xx arena, data = context.data }; push new_ctx { ptr := context.allocator.alloc_bytes(128); out("inside push\n"); } out("after push\n"); }