Skip to main content

Module condition

Module condition 

Source
Expand description

Conditions on a breakpoint: break TestContract.sol:30 if counter > 4.

A condition is a comparison, or several joined by && and ||, over values the debugger can actually read at a step: the local variables in scope (inferred from the legacy stack layout, see StepMap::locals_at), state variables through the storage layout (including balances[0xabc] and config.limit), the arguments of the frame being entered, enum literals such as Color.Red, and a few facts about the step itself (pc, gas, depth, op, step). There is no arithmetic and no calls: a debugger that evaluated Solidity would have to execute it, and this crate never executes anything.

A condition that cannot be evaluated — a slot the transaction never touched, a name nothing defines, a comparison between a number and a string — does not stop, and says why through Evaluation::Unavailable. That is deliberate: stopping on an unreadable condition would be a false positive, and silently treating it as false would hide the reason it never fires.

Structs§

Condition
A parsed breakpoint condition.
ConditionContext
Everything a condition can read at one step.

Enums§

Evaluation
What a condition evaluated to at one step.
Value
A value a condition can compare.