| author | |
| committer | |
| log | b7a82288adae12ed52abafbc4e5a9ab391a1f09b |
| tree | b630fad1656d800ce89b52675df61bbf37f50f1e |
| parent | 9a7cf73b3b4fd27f5f251143dd0b50ea90ed338f |
| signature |
See #2014
`use` syntax is still accepted for now. `zig fmt` automatically
updates code. After a release cycle the old syntax will be removed.9 files changed, 28 insertions(+), 14 deletions(-)
doc/docgen.zig+1-1| ... | @@ -788,7 +788,7 @@ fn tokenizeAndPrintRaw(docgen_tokenizer: *Tokenizer, out: var, source_token: Tok | ... | @@ -788,7 +788,7 @@ fn tokenizeAndPrintRaw(docgen_tokenizer: *Tokenizer, out: var, source_token: Tok |
| 788 | std.zig.Token.Id.Keyword_try, | 788 | std.zig.Token.Id.Keyword_try, |
| 789 | std.zig.Token.Id.Keyword_union, | 789 | std.zig.Token.Id.Keyword_union, |
| 790 | std.zig.Token.Id.Keyword_unreachable, | 790 | std.zig.Token.Id.Keyword_unreachable, |
| 791 | std.zig.Token.Id.Keyword_use, | 791 | std.zig.Token.Id.Keyword_usingnamespace, |
| 792 | std.zig.Token.Id.Keyword_var, | 792 | std.zig.Token.Id.Keyword_var, |
| 793 | std.zig.Token.Id.Keyword_volatile, | 793 | std.zig.Token.Id.Keyword_volatile, |
| 794 | std.zig.Token.Id.Keyword_allowzero, | 794 | std.zig.Token.Id.Keyword_allowzero, |
doc/langref.html.in+2-2| ... | @@ -9918,7 +9918,7 @@ KEYWORD_try <- 'try' end_of_word | ... | @@ -9918,7 +9918,7 @@ KEYWORD_try <- 'try' end_of_word |
| 9918 | KEYWORD_undefined <- 'undefined' end_of_word | 9918 | KEYWORD_undefined <- 'undefined' end_of_word |
| 9919 | KEYWORD_union <- 'union' end_of_word | 9919 | KEYWORD_union <- 'union' end_of_word |
| 9920 | KEYWORD_unreachable <- 'unreachable' end_of_word | 9920 | KEYWORD_unreachable <- 'unreachable' end_of_word |
| 9921 | KEYWORD_use <- 'use' end_of_word | 9921 | KEYWORD_usingnamespace <- 'usingnamespace' end_of_word |
| 9922 | KEYWORD_var <- 'var' end_of_word | 9922 | KEYWORD_var <- 'var' end_of_word |
| 9923 | KEYWORD_volatile <- 'volatile' end_of_word | 9923 | KEYWORD_volatile <- 'volatile' end_of_word |
| 9924 | KEYWORD_while <- 'while' end_of_word | 9924 | KEYWORD_while <- 'while' end_of_word |
| ... | @@ -9935,7 +9935,7 @@ keyword <- KEYWORD_align / KEYWORD_and / KEYWORD_allowzero / KEYWORD_anyerror | ... | @@ -9935,7 +9935,7 @@ keyword <- KEYWORD_align / KEYWORD_and / KEYWORD_allowzero / KEYWORD_anyerror |
| 9935 | / KEYWORD_stdcallcc / KEYWORD_struct / KEYWORD_suspend | 9935 | / KEYWORD_stdcallcc / KEYWORD_struct / KEYWORD_suspend |
| 9936 | / KEYWORD_switch / KEYWORD_test / KEYWORD_threadlocal / KEYWORD_true / KEYWORD_try | 9936 | / KEYWORD_switch / KEYWORD_test / KEYWORD_threadlocal / KEYWORD_true / KEYWORD_try |
| 9937 | / KEYWORD_undefined / KEYWORD_union / KEYWORD_unreachable | 9937 | / KEYWORD_undefined / KEYWORD_union / KEYWORD_unreachable |
| 9938 | / KEYWORD_use / KEYWORD_var / KEYWORD_volatile / KEYWORD_while</code></pre> | 9938 | / KEYWORD_usingnamespace / KEYWORD_var / KEYWORD_volatile / KEYWORD_while</code></pre> |
| 9939 | {#header_close#} | 9939 | {#header_close#} |
| 9940 | {#header_open|Zen#} | 9940 | {#header_open|Zen#} |
| 9941 | <ul> | 9941 | <ul> |
src/parser.cpp+1-1| ... | @@ -668,7 +668,7 @@ static AstNode *ast_parse_top_level_decl(ParseContext *pc, VisibMod visib_mod) { | ... | @@ -668,7 +668,7 @@ static AstNode *ast_parse_top_level_decl(ParseContext *pc, VisibMod visib_mod) { |
| 668 | return res; | 668 | return res; |
| 669 | } | 669 | } |
| 670 | 670 | ||
| 671 | Token *use = eat_token_if(pc, TokenIdKeywordUse); | 671 | Token *use = eat_token_if(pc, TokenIdKeywordUsingNamespace); |
| 672 | if (use != nullptr) { | 672 | if (use != nullptr) { |
| 673 | AstNode *expr = ast_expect(pc, ast_parse_expr); | 673 | AstNode *expr = ast_expect(pc, ast_parse_expr); |
| 674 | expect_token(pc, TokenIdSemicolon); | 674 | expect_token(pc, TokenIdSemicolon); |
src/tokenizer.cpp+3-2| ... | @@ -153,7 +153,8 @@ static const struct ZigKeyword zig_keywords[] = { | ... | @@ -153,7 +153,8 @@ static const struct ZigKeyword zig_keywords[] = { |
| 153 | {"undefined", TokenIdKeywordUndefined}, | 153 | {"undefined", TokenIdKeywordUndefined}, |
| 154 | {"union", TokenIdKeywordUnion}, | 154 | {"union", TokenIdKeywordUnion}, |
| 155 | {"unreachable", TokenIdKeywordUnreachable}, | 155 | {"unreachable", TokenIdKeywordUnreachable}, |
| 156 | {"use", TokenIdKeywordUse}, | 156 | {"use", TokenIdKeywordUsingNamespace}, |
| 157 | {"usingnamespace", TokenIdKeywordUsingNamespace}, | ||
| 157 | {"var", TokenIdKeywordVar}, | 158 | {"var", TokenIdKeywordVar}, |
| 158 | {"volatile", TokenIdKeywordVolatile}, | 159 | {"volatile", TokenIdKeywordVolatile}, |
| 159 | {"while", TokenIdKeywordWhile}, | 160 | {"while", TokenIdKeywordWhile}, |
| ... | @@ -1546,7 +1547,7 @@ const char * token_name(TokenId id) { | ... | @@ -1546,7 +1547,7 @@ const char * token_name(TokenId id) { |
| 1546 | case TokenIdKeywordUndefined: return "undefined"; | 1547 | case TokenIdKeywordUndefined: return "undefined"; |
| 1547 | case TokenIdKeywordUnion: return "union"; | 1548 | case TokenIdKeywordUnion: return "union"; |
| 1548 | case TokenIdKeywordUnreachable: return "unreachable"; | 1549 | case TokenIdKeywordUnreachable: return "unreachable"; |
| 1549 | case TokenIdKeywordUse: return "use"; | 1550 | case TokenIdKeywordUsingNamespace: return "usingnamespace"; |
| 1550 | case TokenIdKeywordVar: return "var"; | 1551 | case TokenIdKeywordVar: return "var"; |
| 1551 | case TokenIdKeywordVolatile: return "volatile"; | 1552 | case TokenIdKeywordVolatile: return "volatile"; |
| 1552 | case TokenIdKeywordWhile: return "while"; | 1553 | case TokenIdKeywordWhile: return "while"; |
src/tokenizer.hpp+1-1| ... | @@ -96,7 +96,7 @@ enum TokenId { | ... | @@ -96,7 +96,7 @@ enum TokenId { |
| 96 | TokenIdKeywordUndefined, | 96 | TokenIdKeywordUndefined, |
| 97 | TokenIdKeywordUnion, | 97 | TokenIdKeywordUnion, |
| 98 | TokenIdKeywordUnreachable, | 98 | TokenIdKeywordUnreachable, |
| 99 | TokenIdKeywordUse, | 99 | TokenIdKeywordUsingNamespace, |
| 100 | TokenIdKeywordVar, | 100 | TokenIdKeywordVar, |
| 101 | TokenIdKeywordVolatile, | 101 | TokenIdKeywordVolatile, |
| 102 | TokenIdKeywordWhile, | 102 | TokenIdKeywordWhile, |
std/zig/parse.zig+2-2| ... | @@ -203,7 +203,7 @@ fn parseTopLevelComptime(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?* | ... | @@ -203,7 +203,7 @@ fn parseTopLevelComptime(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?* |
| 203 | /// TopLevelDecl | 203 | /// TopLevelDecl |
| 204 | /// <- (KEYWORD_export / KEYWORD_extern STRINGLITERAL? / KEYWORD_inline)? FnProto (SEMICOLON / Block) | 204 | /// <- (KEYWORD_export / KEYWORD_extern STRINGLITERAL? / KEYWORD_inline)? FnProto (SEMICOLON / Block) |
| 205 | /// / (KEYWORD_export / KEYWORD_extern STRINGLITERAL?)? KEYWORD_threadlocal? VarDecl | 205 | /// / (KEYWORD_export / KEYWORD_extern STRINGLITERAL?)? KEYWORD_threadlocal? VarDecl |
| 206 | /// / KEYWORD_use Expr SEMICOLON | 206 | /// / KEYWORD_usingnamespace Expr SEMICOLON |
| 207 | fn parseTopLevelDecl(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node { | 207 | fn parseTopLevelDecl(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node { |
| 208 | var lib_name: ?*Node = null; | 208 | var lib_name: ?*Node = null; |
| 209 | const extern_export_inline_token = blk: { | 209 | const extern_export_inline_token = blk: { |
| ... | @@ -2809,7 +2809,7 @@ fn parseTry(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node { | ... | @@ -2809,7 +2809,7 @@ fn parseTry(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node { |
| 2809 | } | 2809 | } |
| 2810 | 2810 | ||
| 2811 | fn parseUse(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node { | 2811 | fn parseUse(arena: *Allocator, it: *TokenIterator, tree: *Tree) !?*Node { |
| 2812 | const token = eatToken(it, .Keyword_use) orelse return null; | 2812 | const token = eatToken(it, .Keyword_usingnamespace) orelse return null; |
| 2813 | const node = try arena.create(Node.Use); | 2813 | const node = try arena.create(Node.Use); |
| 2814 | node.* = Node.Use{ | 2814 | node.* = Node.Use{ |
| 2815 | .base = Node{ .id = .Use }, | 2815 | .base = Node{ .id = .Use }, |
std/zig/parser_test.zig+12-2| ... | @@ -1,3 +1,13 @@ | ... | @@ -1,3 +1,13 @@ |
| 1 | // TODO remove `use` keyword eventually | ||
| 2 | test "zig fmt: change use to usingnamespace" { | ||
| 3 | try testTransform( | ||
| 4 | \\use @import("std"); | ||
| 5 | , | ||
| 6 | \\usingnamespace @import("std"); | ||
| 7 | \\ | ||
| 8 | ); | ||
| 9 | } | ||
| 10 | |||
| 1 | test "zig fmt: allowzero pointer" { | 11 | test "zig fmt: allowzero pointer" { |
| 2 | try testCanonical( | 12 | try testCanonical( |
| 3 | \\const T = [*]allowzero const u8; | 13 | \\const T = [*]allowzero const u8; |
| ... | @@ -2090,8 +2100,8 @@ test "zig fmt: Block after if" { | ... | @@ -2090,8 +2100,8 @@ test "zig fmt: Block after if" { |
| 2090 | 2100 | ||
| 2091 | test "zig fmt: use" { | 2101 | test "zig fmt: use" { |
| 2092 | try testCanonical( | 2102 | try testCanonical( |
| 2093 | \\use @import("std"); | 2103 | \\usingnamespace @import("std"); |
| 2094 | \\pub use @import("std"); | 2104 | \\pub usingnamespace @import("std"); |
| 2095 | \\ | 2105 | \\ |
| 2096 | ); | 2106 | ); |
| 2097 | } | 2107 | } |
std/zig/render.zig+3-1| ... | @@ -168,7 +168,9 @@ fn renderTopLevelDecl(allocator: *mem.Allocator, stream: var, tree: *ast.Tree, i | ... | @@ -168,7 +168,9 @@ fn renderTopLevelDecl(allocator: *mem.Allocator, stream: var, tree: *ast.Tree, i |
| 168 | if (use_decl.visib_token) |visib_token| { | 168 | if (use_decl.visib_token) |visib_token| { |
| 169 | try renderToken(tree, stream, visib_token, indent, start_col, Space.Space); // pub | 169 | try renderToken(tree, stream, visib_token, indent, start_col, Space.Space); // pub |
| 170 | } | 170 | } |
| 171 | try renderToken(tree, stream, use_decl.use_token, indent, start_col, Space.Space); // use | 171 | // TODO after depracating use, go back to this: |
| 172 | //try renderToken(tree, stream, use_decl.use_token, indent, start_col, Space.Space); // usingnamespace | ||
| 173 | try stream.write("usingnamespace "); | ||
| 172 | try renderExpression(allocator, stream, tree, indent, start_col, use_decl.expr, Space.None); | 174 | try renderExpression(allocator, stream, tree, indent, start_col, use_decl.expr, Space.None); |
| 173 | try renderToken(tree, stream, use_decl.semicolon_token, indent, start_col, Space.Newline); // ; | 175 | try renderToken(tree, stream, use_decl.semicolon_token, indent, start_col, Space.Newline); // ; |
| 174 | }, | 176 | }, |
std/zig/tokenizer.zig+3-2| ... | @@ -59,7 +59,8 @@ pub const Token = struct { | ... | @@ -59,7 +59,8 @@ pub const Token = struct { |
| 59 | Keyword{ .bytes = "undefined", .id = Id.Keyword_undefined }, | 59 | Keyword{ .bytes = "undefined", .id = Id.Keyword_undefined }, |
| 60 | Keyword{ .bytes = "union", .id = Id.Keyword_union }, | 60 | Keyword{ .bytes = "union", .id = Id.Keyword_union }, |
| 61 | Keyword{ .bytes = "unreachable", .id = Id.Keyword_unreachable }, | 61 | Keyword{ .bytes = "unreachable", .id = Id.Keyword_unreachable }, |
| 62 | Keyword{ .bytes = "use", .id = Id.Keyword_use }, | 62 | Keyword{ .bytes = "use", .id = Id.Keyword_usingnamespace }, |
| 63 | Keyword{ .bytes = "usingnamespace", .id = Id.Keyword_usingnamespace }, | ||
| 63 | Keyword{ .bytes = "var", .id = Id.Keyword_var }, | 64 | Keyword{ .bytes = "var", .id = Id.Keyword_var }, |
| 64 | Keyword{ .bytes = "volatile", .id = Id.Keyword_volatile }, | 65 | Keyword{ .bytes = "volatile", .id = Id.Keyword_volatile }, |
| 65 | Keyword{ .bytes = "while", .id = Id.Keyword_while }, | 66 | Keyword{ .bytes = "while", .id = Id.Keyword_while }, |
| ... | @@ -190,7 +191,7 @@ pub const Token = struct { | ... | @@ -190,7 +191,7 @@ pub const Token = struct { |
| 190 | Keyword_undefined, | 191 | Keyword_undefined, |
| 191 | Keyword_union, | 192 | Keyword_union, |
| 192 | Keyword_unreachable, | 193 | Keyword_unreachable, |
| 193 | Keyword_use, | 194 | Keyword_usingnamespace, |
| 194 | Keyword_var, | 195 | Keyword_var, |
| 195 | Keyword_volatile, | 196 | Keyword_volatile, |
| 196 | Keyword_while, | 197 | Keyword_while, |