HIR visitor that short-circuits on the first ETH-sending expression and queues
internally-resolved callees for transitive exploration by the outer worklist loop.
What execution of a statement (or list) may do. A block βalways revertsβ iff its
outcome set is exactly REVERT β no FALLTHROUGH and no NON_REVERT_EXIT.
Returns true if args can target params by arity and (when inferable) by type at each
position. Arguments whose type cannot be inferred do not reject a candidate.
Runtime entry points reachable on the deployed contract: the most-derived
implementation of each (name, parameter signature) plus the most-derived
receive / fallback. bases must be the C3 linearization (leaf first).
Later entries with the same key are overridden and dropped. Constructors and
modifiers are excluded.
Returns true if expr unambiguously moves ETH out of the contract: a non-zero {value: x}
call option, .transfer/.send with a non-zero amount, low-level .delegatecall/.callcode
(drainable via selfdestruct), or the selfdestruct builtin. Only literal 0 is treated as
a zero amount; any other expression is assumed non-zero.
Best-effort static type of an expression. Returns None when the type cannot be inferred
from the expressionβs shape alone; callers treat that as βdo not narrow on this positionβ.
Returns true when expr syntactically denotes this contractβs own address:
this, address(this), payable(this), a contract/interface cast IFoo(<self>),
or any nested combination thereof.
Returns true if expr is statically typed as address/address payable. Contract-typed
receivers are intentionally rejected: .transfer / .send on them dispatch to a user-defined
member, not the EVM opcode.
Single-return type of name defined on cid or any of its bases, restricted to
overloads compatible with args. Walks the linearization most-derived first.
Walks stmts left-to-right. Each statementβs outcome set replaces the prior
FALLTHROUGH bit (since we only reach the next stmt by falling through). We stop as
soon as a stmt cannot fall through, because nothing after it is reachable.