/* Make sure that union copying works properly */ include_c "math.h"; struct zow { double x; }; union foo { int i; zow z; }; fun bar(foo! f) { switch (f) { case i: i = 2; case z: z = @zow{ x = 2.0 }; } } fun main() -> int@ { let f = @foo{ i = 1 }; let g = @foo{ z = @zow{ x = 1.0 } }; bar(f); bar(g); switch (f) { case i: switch (g) { case i: return -1; case z: return (i + d2i(floor(z.x))) - 4; } case z: return -1; } }