Skip to content

Commit

Permalink
zig fmt: fix implementation of firstToken() for fn call
Browse files Browse the repository at this point in the history
  • Loading branch information
andrewrk committed May 29, 2018
1 parent cd325e4 commit cdf30c3
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 5 deletions.
4 changes: 4 additions & 0 deletions std/zig/ast.zig
Expand Up @@ -1673,6 +1673,10 @@ pub const Node = struct {
}

pub fn firstToken(self: &SuffixOp) TokenIndex {
switch (self.op) {
@TagType(Op).Call => |*call_info| if (call_info.async_attr) |async_attr| return async_attr.firstToken(),
else => {},
}
return self.lhs.firstToken();
}

Expand Down
11 changes: 11 additions & 0 deletions std/zig/parser_test.zig
@@ -1,3 +1,14 @@
test "zig fmt: async call in if condition" {
try testCanonical(
\\comptime {
\\ if (async<a> b()) {
\\ a();
\\ }
\\}
\\
);
}

test "zig fmt: 2nd arg multiline string" {
try testCanonical(
\\comptime {
Expand Down
10 changes: 5 additions & 5 deletions std/zig/render.zig
Expand Up @@ -213,13 +213,13 @@ fn renderExpression(allocator: &mem.Allocator, stream: var, tree: &ast.Tree, ind
const async_attr = @fieldParentPtr(ast.Node.AsyncAttribute, "base", base);

if (async_attr.allocator_type) |allocator_type| {
try renderToken(tree, stream, async_attr.async_token, indent, start_col, Space.None);
try renderToken(tree, stream, async_attr.async_token, indent, start_col, Space.None); // async

try renderToken(tree, stream, tree.nextToken(async_attr.async_token), indent, start_col, Space.None);
try renderExpression(allocator, stream, tree, indent, start_col, allocator_type, Space.None);
return renderToken(tree, stream, tree.nextToken(allocator_type.lastToken()), indent, start_col, space);
try renderToken(tree, stream, tree.nextToken(async_attr.async_token), indent, start_col, Space.None); // <
try renderExpression(allocator, stream, tree, indent, start_col, allocator_type, Space.None); // allocator
return renderToken(tree, stream, tree.nextToken(allocator_type.lastToken()), indent, start_col, space); // >
} else {
return renderToken(tree, stream, async_attr.async_token, indent, start_col, space);
return renderToken(tree, stream, async_attr.async_token, indent, start_col, space); // async
}
},

Expand Down

0 comments on commit cdf30c3

Please sign in to comment.