| author | |
| committer | |
| log | 3e45baa60adbb041bf75af4cde380abb3b05abfb |
| tree | 37e8dd5a927db98f16ad8b9eadd1b4c41aa27959 |
| parent | 9953d7edca95ddd6ee0a517f33fa8f390cfe04c8 |
| signature |
This is a much cleaner way to expose the new option to disable recovery
added in 62720ad9f9e65dd8c625. It also makes it possible to add further
options in the future without further breaking changes.16 files changed, 37 insertions(+), 37 deletions(-)
lib/compiler/Maker.zig+1-1| ... | @@ -3536,7 +3536,7 @@ fn loadManifest( | ... | @@ -3536,7 +3536,7 @@ fn loadManifest( |
| 3536 | else => |e| fatal("unable to load {s}: {t}", .{ Package.Manifest.basename, e }), | 3536 | else => |e| fatal("unable to load {s}: {t}", .{ Package.Manifest.basename, e }), |
| 3537 | }; | 3537 | }; |
| 3538 | }; | 3538 | }; |
| 3539 | var ast = try std.zig.Ast.parse(gpa, manifest_bytes, .zon); | 3539 | var ast = try std.zig.Ast.parse(gpa, manifest_bytes, .zon, .{}); |
| 3540 | errdefer ast.deinit(gpa); | 3540 | errdefer ast.deinit(gpa); |
| 3541 | 3541 | ||
| 3542 | if (ast.errors.len > 0) { | 3542 | if (ast.errors.len > 0) { |
lib/compiler/Maker/Package/Manifest.zig+4-4| ... | @@ -597,7 +597,7 @@ pub fn load( | ... | @@ -597,7 +597,7 @@ pub fn load( |
| 597 | 0, | 597 | 0, |
| 598 | ); | 598 | ); |
| 599 | 599 | ||
| 600 | ast.* = try std.zig.Ast.parse(arena, manifest_bytes, .zon); | 600 | ast.* = try std.zig.Ast.parse(arena, manifest_bytes, .zon, .{}); |
| 601 | 601 | ||
| 602 | if (ast.errors.len > 0) { | 602 | if (ast.errors.len > 0) { |
| 603 | const file_path = try manifest_path.joinString(arena, ""); | 603 | const file_path = try manifest_path.joinString(arena, ""); |
| ... | @@ -636,7 +636,7 @@ test "basic" { | ... | @@ -636,7 +636,7 @@ test "basic" { |
| 636 | \\} | 636 | \\} |
| 637 | ; | 637 | ; |
| 638 | 638 | ||
| 639 | var ast = try Ast.parse(gpa, example, .zon); | 639 | var ast = try Ast.parse(gpa, example, .zon, .{}); |
| 640 | defer ast.deinit(gpa); | 640 | defer ast.deinit(gpa); |
| 641 | 641 | ||
| 642 | try testing.expect(ast.errors.len == 0); | 642 | try testing.expect(ast.errors.len == 0); |
| ... | @@ -682,7 +682,7 @@ test "minimum_zig_version" { | ... | @@ -682,7 +682,7 @@ test "minimum_zig_version" { |
| 682 | \\} | 682 | \\} |
| 683 | ; | 683 | ; |
| 684 | 684 | ||
| 685 | var ast = try Ast.parse(gpa, example, .zon); | 685 | var ast = try Ast.parse(gpa, example, .zon, .{}); |
| 686 | defer ast.deinit(gpa); | 686 | defer ast.deinit(gpa); |
| 687 | 687 | ||
| 688 | try testing.expect(ast.errors.len == 0); | 688 | try testing.expect(ast.errors.len == 0); |
| ... | @@ -717,7 +717,7 @@ test "minimum_zig_version - invalid version" { | ... | @@ -717,7 +717,7 @@ test "minimum_zig_version - invalid version" { |
| 717 | \\} | 717 | \\} |
| 718 | ; | 718 | ; |
| 719 | 719 | ||
| 720 | var ast = try Ast.parse(gpa, example, .zon); | 720 | var ast = try Ast.parse(gpa, example, .zon, .{}); |
| 721 | defer ast.deinit(gpa); | 721 | defer ast.deinit(gpa); |
| 722 | 722 | ||
| 723 | try testing.expect(ast.errors.len == 0); | 723 | try testing.expect(ast.errors.len == 0); |
lib/compiler/reduce.zig+2-2| ... | @@ -188,7 +188,7 @@ pub fn main(init: std.process.Init) !void { | ... | @@ -188,7 +188,7 @@ pub fn main(init: std.process.Init) !void { |
| 188 | try astgen_input.writer.writeAll(rendered.written()); | 188 | try astgen_input.writer.writeAll(rendered.written()); |
| 189 | try astgen_input.writer.writeByte(0); | 189 | try astgen_input.writer.writeByte(0); |
| 190 | const source_with_null = astgen_input.written()[0..(astgen_input.written().len - 1) :0]; | 190 | const source_with_null = astgen_input.written()[0..(astgen_input.written().len - 1) :0]; |
| 191 | var astgen_tree = try Ast.parse(gpa, source_with_null, .zig); | 191 | var astgen_tree = try Ast.parse(gpa, source_with_null, .zig, .{}); |
| 192 | defer astgen_tree.deinit(gpa); | 192 | defer astgen_tree.deinit(gpa); |
| 193 | if (astgen_tree.errors.len != 0) { | 193 | if (astgen_tree.errors.len != 0) { |
| 194 | @panic("syntax errors occurred"); | 194 | @panic("syntax errors occurred"); |
| ... | @@ -407,7 +407,7 @@ fn parse(gpa: Allocator, io: Io, file_path: []const u8) !Ast { | ... | @@ -407,7 +407,7 @@ fn parse(gpa: Allocator, io: Io, file_path: []const u8) !Ast { |
| 407 | }; | 407 | }; |
| 408 | errdefer gpa.free(source_code); | 408 | errdefer gpa.free(source_code); |
| 409 | 409 | ||
| 410 | var tree = try Ast.parse(gpa, source_code, .zig); | 410 | var tree = try Ast.parse(gpa, source_code, .zig, .{}); |
| 411 | errdefer tree.deinit(gpa); | 411 | errdefer tree.deinit(gpa); |
| 412 | 412 | ||
| 413 | if (tree.errors.len != 0) { | 413 | if (tree.errors.len != 0) { |
lib/docs/wasm/Walk.zig+3-3| ... | @@ -428,7 +428,7 @@ fn parse(file_name: []const u8, source: []u8) Oom!Ast { | ... | @@ -428,7 +428,7 @@ fn parse(file_name: []const u8, source: []u8) Oom!Ast { |
| 428 | break :s source[0 .. source.len - 1 :0]; | 428 | break :s source[0 .. source.len - 1 :0]; |
| 429 | }; | 429 | }; |
| 430 | 430 | ||
| 431 | var ast = try Ast.parse(gpa, adjusted_source, .zig); | 431 | var ast = try Ast.parse(gpa, adjusted_source, .zig, .{}); |
| 432 | if (ast.errors.len > 0) { | 432 | if (ast.errors.len > 0) { |
| 433 | defer ast.deinit(gpa); | 433 | defer ast.deinit(gpa); |
| 434 | 434 | ||
| ... | @@ -446,7 +446,7 @@ fn parse(file_name: []const u8, source: []u8) Oom!Ast { | ... | @@ -446,7 +446,7 @@ fn parse(file_name: []const u8, source: []u8) Oom!Ast { |
| 446 | file_name, err_loc.line + 1, err_loc.column + 1, rendered_err.written(), | 446 | file_name, err_loc.line + 1, err_loc.column + 1, rendered_err.written(), |
| 447 | }); | 447 | }); |
| 448 | } | 448 | } |
| 449 | return Ast.parse(gpa, "", .zig); | 449 | return Ast.parse(gpa, "", .zig, .{}); |
| 450 | } | 450 | } |
| 451 | return ast; | 451 | return ast; |
| 452 | } | 452 | } |
| ... | @@ -1085,7 +1085,7 @@ pub fn isPrimitiveNonType(name: []const u8) bool { | ... | @@ -1085,7 +1085,7 @@ pub fn isPrimitiveNonType(name: []const u8) bool { |
| 1085 | // | 1085 | // |
| 1086 | // // example test command: | 1086 | // // example test command: |
| 1087 | // // zig test --dep input.zig -Mroot=src/Walk.zig -Minput.zig=/home/andy/dev/zig/lib/std/fs/File/zig | 1087 | // // zig test --dep input.zig -Mroot=src/Walk.zig -Minput.zig=/home/andy/dev/zig/lib/std/fs/File/zig |
| 1088 | // var ast = try Ast.parse(gpa, @embedFile("input.zig"), .zig); | 1088 | // var ast = try Ast.parse(gpa, @embedFile("input.zig"), .zig, .{}); |
| 1089 | // defer ast.deinit(gpa); | 1089 | // defer ast.deinit(gpa); |
| 1090 | // | 1090 | // |
| 1091 | // var w: Walk = .{ | 1091 | // var w: Walk = .{ |
lib/std/zig/Ast.zig+8-8| ... | @@ -138,11 +138,14 @@ pub fn deinit(tree: *Ast, gpa: Allocator) void { | ... | @@ -138,11 +138,14 @@ pub fn deinit(tree: *Ast, gpa: Allocator) void { |
| 138 | tree.* = undefined; | 138 | tree.* = undefined; |
| 139 | } | 139 | } |
| 140 | 140 | ||
| 141 | pub const Mode = enum { zig, zon, zig_no_recover }; | 141 | pub const Mode = enum { zig, zon }; |
| 142 | pub const ParseOptions = struct { | ||
| 143 | recover: bool = true, | ||
| 144 | }; | ||
| 142 | 145 | ||
| 143 | /// Result should be freed with tree.deinit() when there are | 146 | /// Result should be freed with tree.deinit() when there are |
| 144 | /// no more references to any of the tokens or nodes. | 147 | /// no more references to any of the tokens or nodes. |
| 145 | pub fn parse(gpa: Allocator, source: [:0]const u8, mode: Mode) Allocator.Error!Ast { | 148 | pub fn parse(gpa: Allocator, source: [:0]const u8, mode: Mode, options: ParseOptions) Allocator.Error!Ast { |
| 146 | var tokens = Ast.TokenList{}; | 149 | var tokens = Ast.TokenList{}; |
| 147 | defer tokens.deinit(gpa); | 150 | defer tokens.deinit(gpa); |
| 148 | 151 | ||
| ... | @@ -162,7 +165,7 @@ pub fn parse(gpa: Allocator, source: [:0]const u8, mode: Mode) Allocator.Error!A | ... | @@ -162,7 +165,7 @@ pub fn parse(gpa: Allocator, source: [:0]const u8, mode: Mode) Allocator.Error!A |
| 162 | 165 | ||
| 163 | var tokens_slice = tokens.toOwnedSlice(); | 166 | var tokens_slice = tokens.toOwnedSlice(); |
| 164 | errdefer tokens_slice.deinit(gpa); | 167 | errdefer tokens_slice.deinit(gpa); |
| 165 | return parseTokens(gpa, source, tokens_slice, mode); | 168 | return parseTokens(gpa, source, tokens_slice, mode, options); |
| 166 | } | 169 | } |
| 167 | 170 | ||
| 168 | pub fn parseTokens( | 171 | pub fn parseTokens( |
| ... | @@ -170,6 +173,7 @@ pub fn parseTokens( | ... | @@ -170,6 +173,7 @@ pub fn parseTokens( |
| 170 | source: [:0]const u8, | 173 | source: [:0]const u8, |
| 171 | tokens: Ast.TokenList.Slice, | 174 | tokens: Ast.TokenList.Slice, |
| 172 | mode: Mode, | 175 | mode: Mode, |
| 176 | options: ParseOptions, | ||
| 173 | ) Allocator.Error!Ast { | 177 | ) Allocator.Error!Ast { |
| 174 | var parser: Parse = .{ | 178 | var parser: Parse = .{ |
| 175 | .source = source, | 179 | .source = source, |
| ... | @@ -180,7 +184,7 @@ pub fn parseTokens( | ... | @@ -180,7 +184,7 @@ pub fn parseTokens( |
| 180 | .extra_data = .empty, | 184 | .extra_data = .empty, |
| 181 | .scratch = .empty, | 185 | .scratch = .empty, |
| 182 | .tok_i = 0, | 186 | .tok_i = 0, |
| 183 | .recover = true, | 187 | .recover = options.recover, |
| 184 | }; | 188 | }; |
| 185 | defer parser.errors.deinit(gpa); | 189 | defer parser.errors.deinit(gpa); |
| 186 | defer parser.nodes.deinit(gpa); | 190 | defer parser.nodes.deinit(gpa); |
| ... | @@ -194,10 +198,6 @@ pub fn parseTokens( | ... | @@ -194,10 +198,6 @@ pub fn parseTokens( |
| 194 | 198 | ||
| 195 | switch (mode) { | 199 | switch (mode) { |
| 196 | .zig => try parser.parseRoot(), | 200 | .zig => try parser.parseRoot(), |
| 197 | .zig_no_recover => { | ||
| 198 | parser.recover = false; | ||
| 199 | try parser.parseRoot(); | ||
| 200 | }, | ||
| 201 | .zon => try parser.parseZon(), | 201 | .zon => try parser.parseZon(), |
| 202 | } | 202 | } |
| 203 | 203 |
lib/std/zig/parser_fuzz.zig+1-1| ... | @@ -171,7 +171,7 @@ fn checkAgainstOracle(source: [:0]const u8) !void { | ... | @@ -171,7 +171,7 @@ fn checkAgainstOracle(source: [:0]const u8) !void { |
| 171 | // error right away and does no recovery. However, std.zig.Ast.parse() does recovery | 171 | // error right away and does no recovery. However, std.zig.Ast.parse() does recovery |
| 172 | // by default and will hit a stack overflow rather than returning after the parser error. | 172 | // by default and will hit a stack overflow rather than returning after the parser error. |
| 173 | // Stack overflows are not interesting and we do not want the fuzzer to be able to find them. | 173 | // Stack overflows are not interesting and we do not want the fuzzer to be able to find them. |
| 174 | const ast = try std.zig.Ast.parse(fba.allocator(), source, .zig_no_recover); | 174 | const ast = try std.zig.Ast.parse(fba.allocator(), source, .zig, .{ .recover = false }); |
| 175 | 175 | ||
| 176 | errdefer logBadSource(source, ast); | 176 | errdefer logBadSource(source, ast); |
| 177 | try std.testing.expectEqual(expected, ast.errors.len == 0); | 177 | try std.testing.expectEqual(expected, ast.errors.len == 0); |
lib/std/zig/parser_test.zig+4-4| ... | @@ -7231,7 +7231,7 @@ test "ampersand" { | ... | @@ -7231,7 +7231,7 @@ test "ampersand" { |
| 7231 | test "Ast: pointer types with subexprs containing qualifiers" { | 7231 | test "Ast: pointer types with subexprs containing qualifiers" { |
| 7232 | var fixed_allocator = std.heap.FixedBufferAllocator.init(fixed_buffer_mem[0..]); | 7232 | var fixed_allocator = std.heap.FixedBufferAllocator.init(fixed_buffer_mem[0..]); |
| 7233 | const allocator = fixed_allocator.allocator(); | 7233 | const allocator = fixed_allocator.allocator(); |
| 7234 | var tree = try std.zig.Ast.parse(allocator, "**addrspace(*align(1)T)T", .zon); | 7234 | var tree = try std.zig.Ast.parse(allocator, "**addrspace(*align(1)T)T", .zon, .{}); |
| 7235 | defer tree.deinit(allocator); | 7235 | defer tree.deinit(allocator); |
| 7236 | 7236 | ||
| 7237 | const regular_ptr_node = tree.nodeData(.root).node; | 7237 | const regular_ptr_node = tree.nodeData(.root).node; |
| ... | @@ -7253,7 +7253,7 @@ fn testParse(io: Io, source: [:0]const u8, allocator: Allocator, anything_change | ... | @@ -7253,7 +7253,7 @@ fn testParse(io: Io, source: [:0]const u8, allocator: Allocator, anything_change |
| 7253 | defer io.unlockStderr(); | 7253 | defer io.unlockStderr(); |
| 7254 | const writer = &stderr.file_writer.interface; | 7254 | const writer = &stderr.file_writer.interface; |
| 7255 | 7255 | ||
| 7256 | var tree = try std.zig.Ast.parse(allocator, source, .zig); | 7256 | var tree = try std.zig.Ast.parse(allocator, source, .zig, .{}); |
| 7257 | defer tree.deinit(allocator); | 7257 | defer tree.deinit(allocator); |
| 7258 | 7258 | ||
| 7259 | for (tree.errors) |parse_error| { | 7259 | for (tree.errors) |parse_error| { |
| ... | @@ -7313,7 +7313,7 @@ fn testCanonical(source: [:0]const u8) !void { | ... | @@ -7313,7 +7313,7 @@ fn testCanonical(source: [:0]const u8) !void { |
| 7313 | const Error = std.zig.Ast.Error.Tag; | 7313 | const Error = std.zig.Ast.Error.Tag; |
| 7314 | 7314 | ||
| 7315 | fn testError(source: [:0]const u8, expected_errors: []const Error) !void { | 7315 | fn testError(source: [:0]const u8, expected_errors: []const Error) !void { |
| 7316 | var tree = try std.zig.Ast.parse(std.testing.allocator, source, .zig); | 7316 | var tree = try std.zig.Ast.parse(std.testing.allocator, source, .zig, .{}); |
| 7317 | defer tree.deinit(std.testing.allocator); | 7317 | defer tree.deinit(std.testing.allocator); |
| 7318 | 7318 | ||
| 7319 | std.testing.expectEqual(expected_errors.len, tree.errors.len) catch |err| { | 7319 | std.testing.expectEqual(expected_errors.len, tree.errors.len) catch |err| { |
| ... | @@ -7333,5 +7333,5 @@ fn fuzzTestOneParse(_: void, smith: *std.testing.Smith) !void { | ... | @@ -7333,5 +7333,5 @@ fn fuzzTestOneParse(_: void, smith: *std.testing.Smith) !void { |
| 7333 | const mode = smith.value(std.zig.Ast.Mode); | 7333 | const mode = smith.value(std.zig.Ast.Mode); |
| 7334 | var tokens: std.zig.TokenSmith = .gen(smith); | 7334 | var tokens: std.zig.TokenSmith = .gen(smith); |
| 7335 | var fba: std.heap.FixedBufferAllocator = .init(&fixed_buffer_mem); | 7335 | var fba: std.heap.FixedBufferAllocator = .init(&fixed_buffer_mem); |
| 7336 | _ = std.zig.Ast.parseTokens(fba.allocator(), tokens.source(), tokens.list(), mode) catch return; | 7336 | _ = std.zig.Ast.parseTokens(fba.allocator(), tokens.source(), tokens.list(), mode, .{ .recover = false }) catch return; |
| 7337 | } | 7337 | } |
lib/std/zig/perf_test.zig+1-1| ... | @@ -32,6 +32,6 @@ pub fn main() !void { | ... | @@ -32,6 +32,6 @@ pub fn main() !void { |
| 32 | fn testOnce() usize { | 32 | fn testOnce() usize { |
| 33 | var fixed_buf_alloc = std.heap.FixedBufferAllocator.init(&fixed_buffer_mem); | 33 | var fixed_buf_alloc = std.heap.FixedBufferAllocator.init(&fixed_buffer_mem); |
| 34 | const allocator = fixed_buf_alloc.allocator(); | 34 | const allocator = fixed_buf_alloc.allocator(); |
| 35 | _ = std.zig.Ast.parse(allocator, source, .zig) catch @panic("parse failure"); | 35 | _ = std.zig.Ast.parse(allocator, source, .zig, .{}) catch @panic("parse failure"); |
| 36 | return fixed_buf_alloc.end_index; | 36 | return fixed_buf_alloc.end_index; |
| 37 | } | 37 | } |
lib/std/zon/parse.zig+3-3| ... | @@ -294,7 +294,7 @@ pub fn fromSliceAlloc( | ... | @@ -294,7 +294,7 @@ pub fn fromSliceAlloc( |
| 294 | ) error{ OutOfMemory, ParseZon }!T { | 294 | ) error{ OutOfMemory, ParseZon }!T { |
| 295 | if (diag) |s| s.assertEmpty(); | 295 | if (diag) |s| s.assertEmpty(); |
| 296 | 296 | ||
| 297 | var ast = try std.zig.Ast.parse(gpa, source, .zon); | 297 | var ast = try std.zig.Ast.parse(gpa, source, .zon, .{}); |
| 298 | defer if (diag == null) ast.deinit(gpa); | 298 | defer if (diag == null) ast.deinit(gpa); |
| 299 | if (diag) |s| s.ast = ast; | 299 | if (diag) |s| s.ast = ast; |
| 300 | 300 | ||
| ... | @@ -2140,7 +2140,7 @@ test "std.zon string literal" { | ... | @@ -2140,7 +2140,7 @@ test "std.zon string literal" { |
| 2140 | // Passing string literal to a array | 2140 | // Passing string literal to a array |
| 2141 | { | 2141 | { |
| 2142 | { | 2142 | { |
| 2143 | var ast = try std.zig.Ast.parse(gpa, "\"abcd\"", .zon); | 2143 | var ast = try std.zig.Ast.parse(gpa, "\"abcd\"", .zon, .{}); |
| 2144 | defer ast.deinit(gpa); | 2144 | defer ast.deinit(gpa); |
| 2145 | var zoir = try ZonGen.generate(gpa, ast, .{ .parse_str_lits = false }); | 2145 | var zoir = try ZonGen.generate(gpa, ast, .{ .parse_str_lits = false }); |
| 2146 | defer zoir.deinit(gpa); | 2146 | defer zoir.deinit(gpa); |
| ... | @@ -3534,7 +3534,7 @@ test "std.zon no alloc" { | ... | @@ -3534,7 +3534,7 @@ test "std.zon no alloc" { |
| 3534 | 3534 | ||
| 3535 | const Nested = struct { u8, u8, struct { u8, u8 } }; | 3535 | const Nested = struct { u8, u8, struct { u8, u8 } }; |
| 3536 | 3536 | ||
| 3537 | var ast = try std.zig.Ast.parse(gpa, ".{ 1, 2, .{ 3, 4 } }", .zon); | 3537 | var ast = try std.zig.Ast.parse(gpa, ".{ 1, 2, .{ 3, 4 } }", .zon, .{}); |
| 3538 | defer ast.deinit(gpa); | 3538 | defer ast.deinit(gpa); |
| 3539 | 3539 | ||
| 3540 | var zoir = try ZonGen.generate(gpa, ast, .{ .parse_str_lits = false }); | 3540 | var zoir = try ZonGen.generate(gpa, ast, .{ .parse_str_lits = false }); |
src/Builtin.zig+1-1| ... | @@ -296,7 +296,7 @@ pub fn populateFile(opts: @This(), gpa: Allocator, file: *File) Allocator.Error! | ... | @@ -296,7 +296,7 @@ pub fn populateFile(opts: @This(), gpa: Allocator, file: *File) Allocator.Error! |
| 296 | 296 | ||
| 297 | log.debug("parsing and generating 'builtin.zig'", .{}); | 297 | log.debug("parsing and generating 'builtin.zig'", .{}); |
| 298 | 298 | ||
| 299 | file.tree = try std.zig.Ast.parse(gpa, file.source.?, .zig); | 299 | file.tree = try std.zig.Ast.parse(gpa, file.source.?, .zig, .{}); |
| 300 | assert(file.tree.?.errors.len == 0); // builtin.zig must parse | 300 | assert(file.tree.?.errors.len == 0); // builtin.zig must parse |
| 301 | 301 | ||
| 302 | file.zir = try AstGen.generate(gpa, file.tree.?); | 302 | file.zir = try AstGen.generate(gpa, file.tree.?); |
src/Zcu.zig+1-1| ... | @@ -1145,7 +1145,7 @@ pub const File = struct { | ... | @@ -1145,7 +1145,7 @@ pub const File = struct { |
| 1145 | if (file.tree) |*tree| return tree; | 1145 | if (file.tree) |*tree| return tree; |
| 1146 | 1146 | ||
| 1147 | const source = try file.getSource(zcu); | 1147 | const source = try file.getSource(zcu); |
| 1148 | file.tree = try .parse(zcu.gpa, source, file.getMode()); | 1148 | file.tree = try .parse(zcu.gpa, source, file.getMode(), .{}); |
| 1149 | return &file.tree.?; | 1149 | return &file.tree.?; |
| 1150 | } | 1150 | } |
| 1151 | 1151 |
src/Zcu/PerThread.zig+1-1| ... | @@ -642,7 +642,7 @@ pub fn updateFile( | ... | @@ -642,7 +642,7 @@ pub fn updateFile( |
| 642 | 642 | ||
| 643 | var timer = comp.startTimer(); | 643 | var timer = comp.startTimer(); |
| 644 | // Any potential AST errors are converted to ZIR errors when we run AstGen/ZonGen. | 644 | // Any potential AST errors are converted to ZIR errors when we run AstGen/ZonGen. |
| 645 | file.tree = try Ast.parse(gpa, source, file.getMode()); | 645 | file.tree = try Ast.parse(gpa, source, file.getMode(), .{}); |
| 646 | if (timer.finish(io)) |ns_parse| { | 646 | if (timer.finish(io)) |ns_parse| { |
| 647 | comp.mutex.lockUncancelable(io); | 647 | comp.mutex.lockUncancelable(io); |
| 648 | defer comp.mutex.unlock(io); | 648 | defer comp.mutex.unlock(io); |
src/fmt.zig+2-2| ... | @@ -117,7 +117,7 @@ pub fn run(gpa: Allocator, arena: Allocator, io: Io, args: []const []const u8) ! | ... | @@ -117,7 +117,7 @@ pub fn run(gpa: Allocator, arena: Allocator, io: Io, args: []const []const u8) ! |
| 117 | }; | 117 | }; |
| 118 | defer gpa.free(source_code); | 118 | defer gpa.free(source_code); |
| 119 | 119 | ||
| 120 | var tree = std.zig.Ast.parse(gpa, source_code, if (force_zon) .zon else .zig) catch |err| { | 120 | var tree = std.zig.Ast.parse(gpa, source_code, if (force_zon) .zon else .zig, .{}) catch |err| { |
| 121 | fatal("error parsing stdin: {}", .{err}); | 121 | fatal("error parsing stdin: {}", .{err}); |
| 122 | }; | 122 | }; |
| 123 | defer tree.deinit(gpa); | 123 | defer tree.deinit(gpa); |
| ... | @@ -312,7 +312,7 @@ fn fmtPathFile( | ... | @@ -312,7 +312,7 @@ fn fmtPathFile( |
| 312 | break :mode .zig; | 312 | break :mode .zig; |
| 313 | }; | 313 | }; |
| 314 | 314 | ||
| 315 | var tree = try std.zig.Ast.parse(gpa, source_code, mode); | 315 | var tree = try std.zig.Ast.parse(gpa, source_code, mode, .{}); |
| 316 | defer tree.deinit(gpa); | 316 | defer tree.deinit(gpa); |
| 317 | 317 | ||
| 318 | if (tree.errors.len != 0) { | 318 | if (tree.errors.len != 0) { |
src/main.zig+3-3| ... | @@ -5529,7 +5529,7 @@ fn cmdAstCheck(arena: Allocator, io: Io, args: []const []const u8, environ_map: | ... | @@ -5529,7 +5529,7 @@ fn cmdAstCheck(arena: Allocator, io: Io, args: []const []const u8, environ_map: |
| 5529 | break :mode .zig; | 5529 | break :mode .zig; |
| 5530 | }; | 5530 | }; |
| 5531 | 5531 | ||
| 5532 | const tree = try Ast.parse(arena, source, mode); | 5532 | const tree = try Ast.parse(arena, source, mode, .{}); |
| 5533 | 5533 | ||
| 5534 | var stdout_writer = Io.File.stdout().writerStreaming(io, &stdout_buffer); | 5534 | var stdout_writer = Io.File.stdout().writerStreaming(io, &stdout_buffer); |
| 5535 | const stdout_bw = &stdout_writer.interface; | 5535 | const stdout_bw = &stdout_writer.interface; |
| ... | @@ -5699,7 +5699,7 @@ fn cmdChangelist(arena: Allocator, io: Io, args: []const []const u8, environ_map | ... | @@ -5699,7 +5699,7 @@ fn cmdChangelist(arena: Allocator, io: Io, args: []const []const u8, environ_map |
| 5699 | fatal("unable to read new source file {q}: {t}", .{ new_source_path, err }); | 5699 | fatal("unable to read new source file {q}: {t}", .{ new_source_path, err }); |
| 5700 | }; | 5700 | }; |
| 5701 | 5701 | ||
| 5702 | const old_tree = try Ast.parse(arena, old_source, .zig); | 5702 | const old_tree = try Ast.parse(arena, old_source, .zig, .{}); |
| 5703 | const old_zir = try AstGen.generate(arena, old_tree); | 5703 | const old_zir = try AstGen.generate(arena, old_tree); |
| 5704 | 5704 | ||
| 5705 | if (old_zir.loweringFailed()) { | 5705 | if (old_zir.loweringFailed()) { |
| ... | @@ -5711,7 +5711,7 @@ fn cmdChangelist(arena: Allocator, io: Io, args: []const []const u8, environ_map | ... | @@ -5711,7 +5711,7 @@ fn cmdChangelist(arena: Allocator, io: Io, args: []const []const u8, environ_map |
| 5711 | process.exit(1); | 5711 | process.exit(1); |
| 5712 | } | 5712 | } |
| 5713 | 5713 | ||
| 5714 | const new_tree = try Ast.parse(arena, new_source, .zig); | 5714 | const new_tree = try Ast.parse(arena, new_source, .zig, .{}); |
| 5715 | const new_zir = try AstGen.generate(arena, new_tree); | 5715 | const new_zir = try AstGen.generate(arena, new_tree); |
| 5716 | 5716 | ||
| 5717 | if (new_zir.loweringFailed()) { | 5717 | if (new_zir.loweringFailed()) { |
tools/gen_parser_oracle.zig+1-1| ... | @@ -43,7 +43,7 @@ pub fn main(init: std.process.Init) !void { | ... | @@ -43,7 +43,7 @@ pub fn main(init: std.process.Init) !void { |
| 43 | defer gpa.free(generated); | 43 | defer gpa.free(generated); |
| 44 | 44 | ||
| 45 | // Parse the generated Zig code and render it in the canonical format | 45 | // Parse the generated Zig code and render it in the canonical format |
| 46 | var tree = try std.zig.Ast.parse(gpa, generated, .zig); | 46 | var tree = try std.zig.Ast.parse(gpa, generated, .zig, .{}); |
| 47 | defer tree.deinit(gpa); | 47 | defer tree.deinit(gpa); |
| 48 | 48 | ||
| 49 | if (tree.errors.len != 0) { | 49 | if (tree.errors.len != 0) { |
tools/gen_spirv_spec.zig+1-1| ... | @@ -116,7 +116,7 @@ pub fn main(init: std.process.Init) !void { | ... | @@ -116,7 +116,7 @@ pub fn main(init: std.process.Init) !void { |
| 116 | try allocating.writer.writeByte(0); | 116 | try allocating.writer.writeByte(0); |
| 117 | const output = allocating.written()[0 .. allocating.written().len - 1 :0]; | 117 | const output = allocating.written()[0 .. allocating.written().len - 1 :0]; |
| 118 | 118 | ||
| 119 | var tree = try std.zig.Ast.parse(arena, output, .zig); | 119 | var tree = try std.zig.Ast.parse(arena, output, .zig, .{}); |
| 120 | 120 | ||
| 121 | if (tree.errors.len != 0) { | 121 | if (tree.errors.len != 0) { |
| 122 | try std.zig.printAstErrorsToStderr(arena, io, tree, "", .auto); | 122 | try std.zig.printAstErrorsToStderr(arena, io, tree, "", .auto); |