From ebf04c56e12c8dd7cf503f042e698984704b14b2 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Tue, 9 Feb 2021 20:17:47 -0700 Subject: [PATCH] zig fmt: usingnamespace --- lib/std/zig/parser_test.zig | 18 +++++++++--------- lib/std/zig/render.zig | 23 +++++++++++------------ 2 files changed, 20 insertions(+), 21 deletions(-) diff --git a/lib/std/zig/parser_test.zig b/lib/std/zig/parser_test.zig index 31d0a821d8..0adcf68568 100644 --- a/lib/std/zig/parser_test.zig +++ b/lib/std/zig/parser_test.zig @@ -3082,15 +3082,15 @@ test "zig fmt: for" { // \\ // ); //} -// -//test "zig fmt: use" { -// try testCanonical( -// \\usingnamespace @import("std"); -// \\pub usingnamespace @import("std"); -// \\ -// ); -//} -// + +test "zig fmt: usingnamespace" { + try testCanonical( + \\usingnamespace @import("std"); + \\pub usingnamespace @import("std"); + \\ + ); +} + //test "zig fmt: string identifier" { // try testCanonical( // \\const @"a b" = @"c d".@"e f"; diff --git a/lib/std/zig/render.zig b/lib/std/zig/render.zig index 17e0b0b297..32ae6f4876 100644 --- a/lib/std/zig/render.zig +++ b/lib/std/zig/render.zig @@ -131,20 +131,19 @@ fn renderMember(ais: *Ais, tree: ast.Tree, decl: ast.Node.Index, space: Space) E .FnProto, => { try renderExpression(ais, tree, decl, .None); - try renderToken(ais, tree, tree.lastToken(decl) + 1, space); // semicolon + return renderToken(ais, tree, tree.lastToken(decl) + 1, space); // semicolon }, - .UsingNamespace => unreachable, // TODO - // .Use => { - // const use_decl = @fieldParentPtr(ast.Node.Use, "base", decl); - - // if (use_decl.visib_token) |visib_token| { - // try renderToken(ais, tree, visib_token, .Space); // pub - // } - // try renderToken(ais, tree, use_decl.use_token, .Space); // usingnamespace - // try renderExpression(ais, tree, use_decl.expr, .None); - // try renderToken(ais, tree, use_decl.semicolon_token, space); // ; - // }, + .UsingNamespace => { + const main_token = main_tokens[decl]; + const expr = datas[decl].lhs; + if (main_token > 0 and token_tags[main_token - 1] == .Keyword_pub) { + try renderToken(ais, tree, main_token - 1, .Space); // pub + } + try renderToken(ais, tree, main_token, .Space); // usingnamespace + try renderExpression(ais, tree, expr, .None); + return renderToken(ais, tree, tree.lastToken(expr) + 1, space); // ; + }, .GlobalVarDecl => return renderVarDecl(ais, tree, tree.globalVarDecl(decl)), .LocalVarDecl => return renderVarDecl(ais, tree, tree.localVarDecl(decl)),