A block is a possibly-empty sequence of statements surrounded by curly braces. Any declaration or definition within the block must not be visible outside of the block.
When a block is executed, each of the containing statements, in linear order, is executed.
Crowbar has many different types of statement.
Some behaviors are difficult to ensure the robustness of at compile time, and these behaviors are defined in this specification as fragile. Fragile behaviors used outside of fragile statements should produce a compiler error.
Fragile behaviors used inside a fragile statement must not produce a compiler error for their fragility. Nesting fragile statements should produce a compiler error.
The contained statement is executed.
If the expression is not a function call, the compiler may emit a warning.
The expression is evaluated and the resulting value is discarded. Function calls must be fully evaluated, but expressions that are not function calls may be optimized out.