aboutsummaryrefslogtreecommitdiff
path: root/src/parser.cpp
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2019-02-10 00:14:30 -0500
committerAndrew Kelley <andrew@ziglang.org>2019-02-10 00:14:30 -0500
commitb8cbe3872e702ab8ec388e75cb711330a45825b0 (patch)
tree3f0162c85bee328083466f1c2d164eb4035450bb /src/parser.cpp
parentcaf672c49586f1af5e3d41ae200aded991b8b0f7 (diff)
downloadzig-b8cbe3872e702ab8ec388e75cb711330a45825b0.tar.gz
zig-b8cbe3872e702ab8ec388e75cb711330a45825b0.zip
added C pointer type and implicit int-to-ptr for this type
See #1059
Diffstat (limited to 'src/parser.cpp')
-rw-r--r--src/parser.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/parser.cpp b/src/parser.cpp
index 1c1af87c51..160a7268b0 100644
--- a/src/parser.cpp
+++ b/src/parser.cpp
@@ -2779,6 +2779,7 @@ static AstNode *ast_parse_array_type_start(ParseContext *pc) {
// <- ASTERISK
// / ASTERISK2
// / LBRACKET ASTERISK RBRACKET
+// / LBRACKET ASTERISK C RBRACKET
static AstNode *ast_parse_ptr_type_start(ParseContext *pc) {
Token *asterisk = eat_token_if(pc, TokenIdStar);
if (asterisk != nullptr) {
@@ -2804,6 +2805,13 @@ static AstNode *ast_parse_ptr_type_start(ParseContext *pc) {
return res;
}
+ Token *cptr = eat_token_if(pc, TokenIdBracketStarCBracket);
+ if (cptr != nullptr) {
+ AstNode *res = ast_create_node(pc, NodeTypePointerType, cptr);
+ res->data.pointer_type.star_token = cptr;
+ return res;
+ }
+
return nullptr;
}