diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2019-02-15 02:20:42 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-02-15 02:20:42 -0500 |
| commit | 567c9b688effdb64e3995df09af4b45105515c2c (patch) | |
| tree | 11bc01aa7484d427455a12502710b0ee286fb6aa /src/ast_render.cpp | |
| parent | ee5e196f8832359cfe05808677f143d4f460f6bc (diff) | |
| parent | 99b19adeb31469cbc4a906f036bb4d70d8730916 (diff) | |
| download | zig-567c9b688effdb64e3995df09af4b45105515c2c.tar.gz zig-567c9b688effdb64e3995df09af4b45105515c2c.zip | |
Merge pull request #1965 from ziglang/c-pointer-type
implement C pointers
Diffstat (limited to 'src/ast_render.cpp')
| -rw-r--r-- | src/ast_render.cpp | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/src/ast_render.cpp b/src/ast_render.cpp index 34a7faa2a5..7b57841205 100644 --- a/src/ast_render.cpp +++ b/src/ast_render.cpp @@ -136,13 +136,19 @@ static const char *thread_local_string(Token *tok) { return (tok == nullptr) ? "" : "threadlocal "; } -const char *container_string(ContainerKind kind) { - switch (kind) { - case ContainerKindEnum: return "enum"; - case ContainerKindStruct: return "struct"; - case ContainerKindUnion: return "union"; +static const char *token_to_ptr_len_str(Token *tok) { + assert(tok != nullptr); + switch (tok->id) { + case TokenIdStar: + case TokenIdStarStar: + return "*"; + case TokenIdBracketStarBracket: + return "[*]"; + case TokenIdBracketStarCBracket: + return "[*c]"; + default: + zig_unreachable(); } - zig_unreachable(); } static const char *node_type_str(NodeType node_type) { @@ -644,13 +650,8 @@ static void render_node_extra(AstRender *ar, AstNode *node, bool grouped) { case NodeTypePointerType: { if (!grouped) fprintf(ar->f, "("); - const char *star = "[*]"; - if (node->data.pointer_type.star_token != nullptr && - (node->data.pointer_type.star_token->id == TokenIdStar || node->data.pointer_type.star_token->id == TokenIdStarStar)) - { - star = "*"; - } - fprintf(ar->f, "%s", star); + const char *ptr_len_str = token_to_ptr_len_str(node->data.pointer_type.star_token); + fprintf(ar->f, "%s", ptr_len_str); if (node->data.pointer_type.align_expr != nullptr) { fprintf(ar->f, "align("); render_node_grouped(ar, node->data.pointer_type.align_expr); |
