Additional information passed along during statement binding.
Statement:: StatementContext:: tryGetBlock(Compilation& compilation,
const SyntaxNode& syntax)
Attempts to match up the head of the block list with the given statement syntax node. If they match, the block symbol is popped and returned wrapped inside a BlockStatement. Otherwise nullptr is returned.
Statement:: StatementContext:: enterLoop()
Records that we've entered a loop, and returns a guard that will revert back to the previous inLoop state on destruction.
Statement:: StatementContext:: inLoop
Tracks whether we're currently within a loop (which can control, for example, whether a break or continue statement is allowed).