| author | |
| committer | |
| log | af2ede4d96d5dd01a9db2f6fbfbe430214beaf63 |
| tree | 5db5a5989dc010b4e0c00d02c26d4f22dd31be8b |
| parent | 50754ba336e99ac3db972a8b4e7bc583d77f2892 |
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 | ... | @@ -285,7 +285,12 @@ fn parseTopLevelDecl(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node |
| 285 | 285 | ||
| 286 | if (extern_export_inline_token) |token| { | 286 | if (extern_export_inline_token) |token| { |
| 287 | if (lib_name) |string_literal_node| | 287 | 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; | ||
| 289 | putBackToken(it, token); | 294 | putBackToken(it, token); |
| 290 | return null; | 295 | return null; |
| 291 | } | 296 | } |
lib/std/zig/parser_test.zig+10| ... | @@ -2721,6 +2721,16 @@ test "zig fmt: extern without container keyword returns error" { | ... | @@ -2721,6 +2721,16 @@ test "zig fmt: extern without container keyword returns error" { |
| 2721 | ); | 2721 | ); |
| 2722 | } | 2722 | } |
| 2723 | 2723 | ||
| 2724 | test "zig fmt: extern multiline lib name" { | ||
| 2725 | try testError( | ||
| 2726 | \\extern \\super | ||
| 2727 | \\ \\long | ||
| 2728 | \\ \\library | ||
| 2729 | \\ \\name | ||
| 2730 | \\ | ||
| 2731 | ); | ||
| 2732 | } | ||
| 2733 | |||
| 2724 | const std = @import("std"); | 2734 | const std = @import("std"); |
| 2725 | const mem = std.mem; | 2735 | const mem = std.mem; |
| 2726 | const warn = std.debug.warn; | 2736 | const warn = std.debug.warn; |