diff options
Diffstat (limited to 'boot/visit')
| -rw-r--r-- | boot/visit/ir.c | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/boot/visit/ir.c b/boot/visit/ir.c index 5317276..6748384 100644 --- a/boot/visit/ir.c +++ b/boot/visit/ir.c @@ -321,8 +321,8 @@ void walk_expression_call(struct Visit* visit, struct Expression* expr) { VISIT(visit_expression, expr->value.call.subject); - FOR_EACH_ARRAY (struct Expression*, argument, &expr->value.call.arguments) - VISIT(visit_expression, *argument); + FOR_EACH_ARRAY (struct Call_Argument, argument, &expr->value.call.arguments) + VISIT(visit_expression, argument->value); } void @@ -859,9 +859,10 @@ printer_visit_expression_call(struct Visit* visit, struct Expression* expr) PRINTER_PREAMBLE PRINT("(call "); VISIT(visit_expression, expr->value.call.subject); - FOR_EACH_ARRAY (struct Expression*, argument, &expr->value.call.arguments) { - PRINT(" "); - VISIT(visit_expression, *argument); + FOR_EACH_ARRAY (struct Call_Argument, argument, &expr->value.call.arguments) { + PRINT(" (slot %lu ", argument->slot); + VISIT(visit_expression, argument->value); + PRINT(")"); } PRINT(")"); } @@ -996,6 +997,18 @@ printer_visit_lower_error(struct Visit* visit, struct Lower_Error* error) case LOWER_ERROR_UNKNOWN_COMPOUND_ASSIGN: PRINT("(unknown-compound-assign)"); return; + case LOWER_ERROR_UNKNOWN_NAMED_ARGUMENT: + PRINT("(unknown-named-argument %s)", string_c_str(error->name)); + return; + case LOWER_ERROR_DUPLICATE_ARGUMENT: + PRINT("(duplicate-argument %s)", string_c_str(error->name)); + return; + case LOWER_ERROR_TOO_MANY_ARGUMENTS: + PRINT("(too-many-arguments)"); + return; + case LOWER_ERROR_NAMED_ARGUMENT_ON_UNKNOWN_CALLEE: + PRINT("(named-argument-on-unknown-callee)"); + return; case LOWER_ERROR_UNIMPLEMENTED: PRINT("(unimplemented \"%s\")", string_c_str(error->detail)); return; |
