authorgravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2020-01-14 16:39:54+02:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-01-14 13:10:52-05:00
logaf2ede4d96d5dd01a9db2f6fbfbe430214beaf63
tree5db5a5989dc010b4e0c00d02c26d4f22dd31be8b
parent50754ba336e99ac3db972a8b4e7bc583d77f2892

fix crash on multiline library name


2 files changed, 16 insertions(+), 1 deletions(-)

lib/std/zig/parse.zig+6-1
......@@ -285,7 +285,12 @@ fn parseTopLevelDecl(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node
285285
286286 if (extern_export_inline_token) |token| {
287287 if (lib_name) |string_literal_node|
288 putBackToken(it, string_literal_node.cast(Node.StringLiteral).?.token);
288 if (string_literal_node.cast(Node.StringLiteral)) |single| {
289 putBackToken(it, single.token);
290 } else if (string_literal_node.cast(Node.MultilineStringLiteral)) |multi| {
291 while (multi.lines.pop()) |line|
292 putBackToken(it, line);
293 } else unreachable;
289294 putBackToken(it, token);
290295 return null;
291296 }
lib/std/zig/parser_test.zig+10
......@@ -2721,6 +2721,16 @@ test "zig fmt: extern without container keyword returns error" {
27212721 );
27222722}
27232723
2724test "zig fmt: extern multiline lib name" {
2725 try testError(
2726 \\extern \\super
2727 \\ \\long
2728 \\ \\library
2729 \\ \\name
2730 \\
2731 );
2732}
2733
27242734const std = @import("std");
27252735const mem = std.mem;
27262736const warn = std.debug.warn;