authorgravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2019-06-24 10:29:58+03:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-06-26 11:04:34-04:00
logfa42c99d82448c74a657d16e0f2e5f9877e364c0
tree96e0f6499f39e1aeec8ebdcb4279e075f5996791
parente79e8993e695f6c384f742d09060823f421758ca

fixed IfTypeExpr parsing


2 files changed, 14 insertions(+), 2 deletions(-)

std/zig/parse.zig+2-2
...@@ -2833,8 +2833,8 @@ fn parseIf(arena: *Allocator, it: *TokenIterator, tree: *Tree, bodyParseFn: Node...@@ -2833,8 +2833,8 @@ fn parseIf(arena: *Allocator, it: *TokenIterator, tree: *Tree, bodyParseFn: Node
28332833
2834 const else_token = eatToken(it, .Keyword_else) orelse return node;2834 const else_token = eatToken(it, .Keyword_else) orelse return node;
2835 const payload = try parsePayload(arena, it, tree);2835 const payload = try parsePayload(arena, it, tree);
2836 const else_expr = try expectNode(arena, it, tree, parseExpr, AstError{2836 const else_expr = try expectNode(arena, it, tree, bodyParseFn, AstError{
2837 .ExpectedExpr = AstError.ExpectedExpr{ .token = it.index },2837 .InvalidToken = AstError.InvalidToken{ .token = it.index },
2838 });2838 });
2839 const else_node = try arena.create(Node.Else);2839 const else_node = try arena.create(Node.Else);
2840 else_node.* = Node.Else{2840 else_node.* = Node.Else{
std/zig/parser_test.zig+12
...@@ -2234,6 +2234,18 @@ test "zig fmt: multiline string in array" {...@@ -2234,6 +2234,18 @@ test "zig fmt: multiline string in array" {
2234 );2234 );
2235}2235}
22362236
2237test "zig fmt: if type expr" {
2238 try testCanonical(
2239 \\const mycond = true;
2240 \\pub fn foo() if (mycond) i32 else void {
2241 \\ if (mycond) {
2242 \\ return 42;
2243 \\ }
2244 \\}
2245 \\
2246 );
2247}
2248
2237const std = @import("std");2249const std = @import("std");
2238const mem = std.mem;2250const mem = std.mem;
2239const warn = std.debug.warn;2251const warn = std.debug.warn;