commit 5f3ec023cd697007ff868938e3b5fe387add6af5 (tree)
parent 281c17f6ae3c294d0b7139fe640dd0cb30123ea1
Author: Jimmi Holst Christensen <jhc@liab.dk>
Date: Wed, 11 Apr 2018 12:53:01 +0200
std.zig.parser: Fixed parsing of field access rhs
related: #909
Diffstat:
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/std/zig/parser.zig b/std/zig/parser.zig
@@ -1515,17 +1515,23 @@ pub const Parser = struct {
continue;
},
Token.Id.Period => {
+ const identifier = try self.createLiteral(arena, ast.NodeIdentifier, Token(undefined));
const node = try self.createToDestNode(arena, dest_ptr, ast.NodeInfixOp,
ast.NodeInfixOp {
.base = undefined,
.lhs = dest_ptr.get(),
.op_token = token,
.op = ast.NodeInfixOp.InfixOp.Period,
- .rhs = undefined,
+ .rhs = &identifier.base,
}
);
stack.append(State { .SuffixOpExpressionEnd = dest_ptr }) catch unreachable;
- try stack.append(State { .SuffixOpExpressionBegin = DestPtr { .Field = &node.rhs }});
+ try stack.append(State {
+ .ExpectTokenSave = ExpectTokenSave {
+ .id = Token.Id.Identifier,
+ .ptr = &identifier.token
+ }
+ });
continue;
},
else => {
@@ -5011,6 +5017,7 @@ test "zig fmt: inline asm" {
test "zig fmt: coroutines" {
try testCanonical(
\\async fn simpleAsyncFn() void {
+ \\ const a = async a.b();
\\ x += 1;
\\ suspend;
\\ x += 1;