The frontend tree already has it, too, and there's some hs inside the non-bubbly generated getter in the frontend also:
(Call
(V nym`=`)
(L getx__21)
(Fun
(Decl (L this__22) (V \impliedThis) (V Bar__1) (V \type) (V Bar__1))
(V \returnDecl)
(Decl (L return__23) (V \type) (V Foo__0 | Null) (V \ssa) (V void))
(V \stay)
(S)
(Block
(stmt-block
(Decl (L fail#32) (V \var) (V void) (V \fail) (V void) (V \ssa) (V void))
(Call
(V hs)
(L fail#32)
(Call
(V nym`=`)
(L return__23)
(Call (V getp) (R x__16) (R this__22))))
(if (R fail#32)
(stmt-block
(Call (V bubble)))
(stmt-block)))))
Tmpl translation seems to figure out the fail is always false, but it still carries along some willingness to return failure:
get.x -> getx__21(this = this__22, this__22: Bar__1): Foo__0 | Null {
let return__23: Foo__0 | Null;
@fail var fail#32: Boolean;
fail#32 = false;
return__23 = /* this */ this__22.x__16;
if (fail#32) {
return failure;
}
return return__23;
}
For functional-test-suite/.../mutually-referencing-types.temper.md, this code:
Becomes this tmpl, which shouldn't have
hs
in it:The frontend tree already has it, too, and there's some
hs
inside the non-bubbly generated getter in the frontend also:Tmpl translation seems to figure out the fail is always false, but it still carries along some willingness to return failure:
Really, none of this should be bubbly.