let foo_cons = @int(0); let foo_dest = @int(0); class foo { foo() { foo_cons = foo_cons + 1; } foo(foo f) { foo_cons = foo_cons + 1; } ~foo() { foo_dest = foo_dest + 1; } }; fun operator=(foo! x, foo y)-> foo! { return x; } model DefaultConstructible { }; model Regular { }; struct bar where { DefaultConstructible, Regular } { T f; int y; }; fun yow() -> int@ { let b = @bar { f = @foo(), y = 3 }; return b.y; } fun main() -> int@ { let y = yow(); return y - 3 + foo_cons - foo_dest; }