Skip to main content

Module view_mut

Module view_mut 

Source
Expand description

The mutable-host counterpart of QCodeView: one trait carrying the body-local mutation verbs, implemented by both mutation hosts.

Context resolves any function body in the module (the sequential/module path); BodyMut resolves exactly one checked-out body (the function-pass path, which panics on a foreign FunctionId). Every provided verb is a one-liner into the canonical inherent implementation on FunctionBody, so the verb logic exists in exactly one place and the hosts cannot drift.

The trait’s contract is strictly body-local mutation. Anything that writes shared module state — name registration in the global table, varnode or function minting — is deliberately absent and stays inherent on Context, so “a checked-out pass cannot touch shared state” is documented by the type system. The births (push_block, push_insn, push_mnemonic*, …) and remove_cfg_edge also stay inherent per host: their spellings diverge (the module path names the function, the checked-out path doesn’t), and they are thin arena pushes with no drift-prone logic.

Traits§

QCodeMut
Body-local mutation capability shared by the module host (Context) and the checked-out pass host (BodyMut).