case nodes.StatementType.WhileLoop:
for (;;) {
condition = evaluateStatement(statement.condition, scope).val;
if (typeof condition != 'boolean') throw new TypeError();
if (!condition) break;
const result = interpretAST(statement.body, scope);
if (result !== undefined) return { val: result, propogateReturn: true };
}