Reports an error if the type of e is not bool.
Reports an error if e has no boolean result.
Returns a call expression if 'e' overrides an operatorwith the name 'id'.
Returns a call expression if 'e' overrides an operator with the name 'id' or 'id_r'.
Runs the semantic pass on the module.
Visit the operands of a binary operator.
The current surrounding, breakable statement.
Determines whether to issue an error when a symbol couldn't be found.
Used to evaluate expressions.
The second pass resolves variable types, base classes, evaluates static ifs/asserts etc.