Commit bfbe26734d

Andrew Kelley <superjoe30@gmail.com>
2018-05-20 20:50:27
zig fmt: add pointer deref syntax
1 parent 83a7809
Changed files (2)
std/zig/parse.zig
@@ -2195,6 +2195,17 @@ pub fn parse(allocator: &mem.Allocator, source: []const u8) !ast.Tree {
                         continue;
                     },
                     Token.Id.Period => {
+                        if (eatToken(&tok_it, &tree, Token.Id.Asterisk)) |asterisk_token| {
+                            const node = try arena.construct(ast.Node.SuffixOp{
+                                .base = ast.Node{ .id = ast.Node.Id.SuffixOp },
+                                .lhs = lhs,
+                                .op = ast.Node.SuffixOp.Op.Deref,
+                                .rtoken = asterisk_token,
+                            });
+                            opt_ctx.store(&node.base);
+                            stack.append(State{ .SuffixOpExpressionEnd = opt_ctx.toRequired() }) catch unreachable;
+                            continue;
+                        }
                         const node = try arena.construct(ast.Node.InfixOp{
                             .base = ast.Node{ .id = ast.Node.Id.InfixOp },
                             .lhs = lhs,
std/zig/parser_test.zig
@@ -1,3 +1,10 @@
+test "zig fmt: ptr deref operator" {
+    try testCanonical(
+        \\const a = b.*;
+        \\
+    );
+}
+
 test "zig fmt: comment after if before another if" {
     try testCanonical(
         \\test "aoeu" {