Inner ghost functions used to be extracted as Obj.magic (fun _ -> ()) (that's the definition, not the call site). Changing the let to have a pure effect allows extraction to remove the definition and the associated magic (which in turn breaks pulse2rust).
More generally, I'm not sure if we need to put a DIV-effect on let-bindings with a C_Tot effect at all.
This is a repeat of #182. Guido added a test case there, but that test didn't catch this. The slices code used to break pulse2rust and serves as another test.
Inner ghost functions used to be extracted as
Obj.magic (fun _ -> ())
(that's the definition, not the call site). Changing the let to have a pure effect allows extraction to remove the definition and the associated magic (which in turn breaks pulse2rust).More generally, I'm not sure if we need to put a DIV-effect on let-bindings with a C_Tot effect at all.