implement else on loops and break can give an expression

closes #357
This commit is contained in:
Andrew Kelley
2017-05-04 12:43:11 -04:00
parent 0454e610bf
commit b6a679c0ed
6 changed files with 218 additions and 43 deletions

View File

@@ -485,6 +485,15 @@ static void render_node_extra(AstRender *ar, AstNode *node, bool grouped) {
}
break;
}
case NodeTypeBreak:
{
fprintf(ar->f, "break");
if (node->data.break_expr.expr) {
fprintf(ar->f, " ");
render_node_grouped(ar, node->data.break_expr.expr);
}
break;
}
case NodeTypeDefer:
{
const char *defer_str = defer_string(node->data.defer.kind);
@@ -880,11 +889,10 @@ static void render_node_extra(AstRender *ar, AstNode *node, bool grouped) {
fprintf(ar->f, "| ");
}
render_node_grouped(ar, node->data.for_expr.body);
break;
}
case NodeTypeBreak:
{
fprintf(ar->f, "break");
if (node->data.for_expr.else_node) {
fprintf(ar->f, " else");
render_node_grouped(ar, node->data.for_expr.else_node);
}
break;
}
case NodeTypeContinue: