feat: code generation for conditional and switch statements
This commit is contained in:
parent
889f678dd8
commit
d6ff3a40bd
7 changed files with 476 additions and 59 deletions
|
|
@ -172,6 +172,9 @@ fn renderError(r: *Render, writer: *std.Io.Writer, err: Ast.Error) !void {
|
|||
.invalid_lvalue => try renderErrorf(r, writer, err, "invalid lvalue for assignment"),
|
||||
.too_many_arguments => try renderErrorf(r, writer, err, "too many arguments to '{s}'"),
|
||||
.too_many_parameters => try renderErrorf(r, writer, err, "too many parameters defined for '{s}'"),
|
||||
.unexpected_else_stmt => try renderErrorf(r, writer, err, "unexpected else stmt"),
|
||||
.invalid_else_stmt => try renderErrorf(r, writer, err, "invalid else stmt"),
|
||||
.invalid_switch_case => try renderErrorf(r, writer, err, "invalid switch case expression"),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -491,9 +494,9 @@ fn renderAstWalk(
|
|||
if (expr) |n| try children.append(r.gpa, n);
|
||||
|
||||
const list = node.data.switch_stmt.cases;
|
||||
if (list) |items| for (items) |n| {
|
||||
try children.append(r.gpa, n);
|
||||
};
|
||||
for (list) |case_stmt| {
|
||||
try children.append(r.gpa, case_stmt);
|
||||
}
|
||||
},
|
||||
.inline_logic_expr => {
|
||||
const lhs = node.data.bin.lhs;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue