authorgravatar for jhc@dismail.deJimmi Holst Christensen <jhc@dismail.de> 2018-04-10 09:37:29+02:00
committergravatar for jhc@dismail.deJimmi Holst Christensen <jhc@dismail.de> 2018-04-10 09:37:29+02:00
log5cd69ee6a4b7d02dbc48d93e8f8f95bd608d9d7c
tree2c68523086e7c966b0f2492e6e6679549d0475c9
parent2c7996f4006b94f81fc3b1c1e3f73a4a7a291782

std.zig.parser changed assign expr to only be allowed in some contexts

* Only allowed in while continue expr and statement expr

1 files changed, 6 insertions(+), 8 deletions(-)

std/zig/parser.zig+6-8
...@@ -721,7 +721,7 @@ pub const Parser = struct {...@@ -721,7 +721,7 @@ pub const Parser = struct {
721 },721 },
722 else => {722 else => {
723 self.putBackToken(token);723 self.putBackToken(token);
724 stack.append(State { .AssignmentExpressionBegin = dest_ptr }) catch unreachable;724 stack.append(State { .UnwrapExpressionBegin = dest_ptr }) catch unreachable;
725 continue;725 continue;
726 }726 }
727 }727 }
...@@ -750,7 +750,7 @@ pub const Parser = struct {...@@ -750,7 +750,7 @@ pub const Parser = struct {
750750
751 State.AssignmentExpressionBegin => |dest_ptr| {751 State.AssignmentExpressionBegin => |dest_ptr| {
752 stack.append(State { .AssignmentExpressionEnd = dest_ptr }) catch unreachable;752 stack.append(State { .AssignmentExpressionEnd = dest_ptr }) catch unreachable;
753 try stack.append(State { .UnwrapExpressionBegin = dest_ptr });753 try stack.append(State { .Expression = dest_ptr });
754 continue;754 continue;
755 },755 },
756756
...@@ -762,7 +762,7 @@ pub const Parser = struct {...@@ -762,7 +762,7 @@ pub const Parser = struct {
762 dest_ptr.store(&node.base);762 dest_ptr.store(&node.base);
763763
764 stack.append(State { .AssignmentExpressionEnd = dest_ptr }) catch unreachable;764 stack.append(State { .AssignmentExpressionEnd = dest_ptr }) catch unreachable;
765 try stack.append(State { .UnwrapExpressionBegin = DestPtr { .Field = &node.rhs } });765 try stack.append(State { .Expression = DestPtr { .Field = &node.rhs } });
766 continue;766 continue;
767 } else {767 } else {
768 self.putBackToken(token);768 self.putBackToken(token);
...@@ -1895,7 +1895,7 @@ pub const Parser = struct {...@@ -1895,7 +1895,7 @@ pub const Parser = struct {
18951895
1896 _ = (try self.eatToken(&stack, Token.Id.LParen)) ?? continue;1896 _ = (try self.eatToken(&stack, Token.Id.LParen)) ?? continue;
1897 stack.append(State { .ExpectToken = Token.Id.RParen }) catch unreachable;1897 stack.append(State { .ExpectToken = Token.Id.RParen }) catch unreachable;
1898 try stack.append(State { .Expression = DestPtr { .NullableField = dest } });1898 try stack.append(State { .AssignmentExpressionBegin = DestPtr { .NullableField = dest } });
1899 },1899 },
19001900
1901 State.ErrorPayload => |dest| {1901 State.ErrorPayload => |dest| {
...@@ -2333,7 +2333,7 @@ pub const Parser = struct {...@@ -2333,7 +2333,7 @@ pub const Parser = struct {
2333 try block.statements.append(&node.base);2333 try block.statements.append(&node.base);
23342334
2335 stack.append(State { .Semicolon = &node.base }) catch unreachable;2335 stack.append(State { .Semicolon = &node.base }) catch unreachable;
2336 try stack.append(State { .Expression = DestPtr{.Field = &node.expr } });2336 try stack.append(State { .AssignmentExpressionBegin = DestPtr{.Field = &node.expr } });
2337 continue;2337 continue;
2338 },2338 },
2339 Token.Id.LBrace => {2339 Token.Id.LBrace => {
...@@ -2347,7 +2347,7 @@ pub const Parser = struct {...@@ -2347,7 +2347,7 @@ pub const Parser = struct {
2347 self.putBackToken(next);2347 self.putBackToken(next);
2348 const statememt = try block.statements.addOne();2348 const statememt = try block.statements.addOne();
2349 stack.append(State { .Semicolon = statememt }) catch unreachable;2349 stack.append(State { .Semicolon = statememt }) catch unreachable;
2350 try stack.append(State { .Expression = DestPtr{.Field = statememt } });2350 try stack.append(State { .AssignmentExpressionBegin = DestPtr{.Field = statememt } });
2351 continue;2351 continue;
2352 }2352 }
2353 }2353 }
...@@ -4260,8 +4260,6 @@ test "zig fmt: precedence" {...@@ -4260,8 +4260,6 @@ test "zig fmt: precedence" {
4260 \\ a or b and c;4260 \\ a or b and c;
4261 \\ (a or b) and c;4261 \\ (a or b) and c;
4262 \\ (a or b) and c;4262 \\ (a or b) and c;
4263 \\ a = b or c;
4264 \\ (a = b) or c;
4265 \\}4263 \\}
4266 \\4264 \\
4267 );4265 );