There are just a few forms that can only appear as statements in blocks that aren’t declarations:
A when expression has a single test condition with a corresponding block.
when x == 42: print("answer") end
If the test condition is true, the block is evaluated. If the test condition is false, nothing is done, and nothing is returned.
Assignment statements have a name on the left, and an expression on the right of :=:
‹assign-stmt› NAME := ‹binop-expr›
If NAME is not declared in the same or an outer scope of the assignment expression with a var declaration, the program fails with a static error.
At runtime, an assignment expression changes the value of the assignable variable NAME to the result of the right-hand side expression.