aboutsummaryrefslogtreecommitdiff
path: root/src/ast_render.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ast_render.cpp')
-rw-r--r--src/ast_render.cpp22
1 files changed, 21 insertions, 1 deletions
diff --git a/src/ast_render.cpp b/src/ast_render.cpp
index f88feee856..7b5fc03ea8 100644
--- a/src/ast_render.cpp
+++ b/src/ast_render.cpp
@@ -250,6 +250,8 @@ static const char *node_type_str(NodeType node_type) {
return "AwaitExpr";
case NodeTypeSuspend:
return "Suspend";
+ case NodeTypePromiseType:
+ return "PromiseType";
}
zig_unreachable();
}
@@ -658,6 +660,15 @@ static void render_node_extra(AstRender *ar, AstNode *node, bool grouped) {
if (node->data.fn_call_expr.is_builtin) {
fprintf(ar->f, "@");
}
+ if (node->data.fn_call_expr.is_async) {
+ fprintf(ar->f, "async");
+ if (node->data.fn_call_expr.async_allocator != nullptr) {
+ fprintf(ar->f, "<");
+ render_node_extra(ar, node->data.fn_call_expr.async_allocator, true);
+ fprintf(ar->f, ">");
+ }
+ fprintf(ar->f, " ");
+ }
AstNode *fn_ref_node = node->data.fn_call_expr.fn_ref_expr;
bool grouped = (fn_ref_node->type != NodeTypePrefixOpExpr && fn_ref_node->type != NodeTypeAddrOfExpr);
render_node_extra(ar, fn_ref_node, grouped);
@@ -772,6 +783,15 @@ static void render_node_extra(AstRender *ar, AstNode *node, bool grouped) {
render_node_ungrouped(ar, node->data.array_type.child_type);
break;
}
+ case NodeTypePromiseType:
+ {
+ fprintf(ar->f, "promise");
+ if (node->data.promise_type.payload_type != nullptr) {
+ fprintf(ar->f, "->");
+ render_node_grouped(ar, node->data.promise_type.payload_type);
+ }
+ break;
+ }
case NodeTypeErrorType:
fprintf(ar->f, "error");
break;
@@ -1023,7 +1043,7 @@ static void render_node_extra(AstRender *ar, AstNode *node, bool grouped) {
case NodeTypeUnwrapErrorExpr:
{
render_node_ungrouped(ar, node->data.unwrap_err_expr.op1);
- fprintf(ar->f, " %%%% ");
+ fprintf(ar->f, " catch ");
if (node->data.unwrap_err_expr.symbol) {
Buf *var_name = node->data.unwrap_err_expr.symbol->data.symbol_expr.symbol;
fprintf(ar->f, "|%s| ", buf_ptr(var_name));