aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/std/zig/parse.zig7
-rw-r--r--lib/std/zig/parser_test.zig10
2 files changed, 16 insertions, 1 deletions
diff --git a/lib/std/zig/parse.zig b/lib/std/zig/parse.zig
index 7cc9931d4e..604de516c4 100644
--- a/lib/std/zig/parse.zig
+++ b/lib/std/zig/parse.zig
@@ -285,7 +285,12 @@ fn parseTopLevelDecl(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node
if (extern_export_inline_token) |token| {
if (lib_name) |string_literal_node|
- putBackToken(it, string_literal_node.cast(Node.StringLiteral).?.token);
+ if (string_literal_node.cast(Node.StringLiteral)) |single| {
+ putBackToken(it, single.token);
+ } else if (string_literal_node.cast(Node.MultilineStringLiteral)) |multi| {
+ while (multi.lines.pop()) |line|
+ putBackToken(it, line);
+ } else unreachable;
putBackToken(it, token);
return null;
}
diff --git a/lib/std/zig/parser_test.zig b/lib/std/zig/parser_test.zig
index c57540ade9..1ebef6a114 100644
--- a/lib/std/zig/parser_test.zig
+++ b/lib/std/zig/parser_test.zig
@@ -2721,6 +2721,16 @@ test "zig fmt: extern without container keyword returns error" {
);
}
+test "zig fmt: extern multiline lib name" {
+ try testError(
+ \\extern \\super
+ \\ \\long
+ \\ \\library
+ \\ \\name
+ \\
+ );
+}
+
const std = @import("std");
const mem = std.mem;
const warn = std.debug.warn;