| ... | ... | @@ -3019,7 +3019,50 @@ pub fn cmdFmt(gpa: *Allocator, args: []const []const u8) !void { |
| 3019 | 3019 | for (tree.errors) |parse_error| { |
| 3020 | 3020 | try printErrMsgToStdErr(gpa, parse_error, tree, "<stdin>", color); |
| 3021 | 3021 | } |
| 3022 | | if (tree.errors.len != 0) { |
| 3022 | var has_ast_error = false; |
| 3023 | if (check_ast_flag) { |
| 3024 | const Module = @import("Module.zig"); |
| 3025 | const AstGen = @import("AstGen.zig"); |
| 3026 | |
| 3027 | var file: Module.Scope.File = .{ |
| 3028 | .status = .never_loaded, |
| 3029 | .source_loaded = true, |
| 3030 | .zir_loaded = false, |
| 3031 | .sub_file_path = "<stdin>", |
| 3032 | .source = source_code, |
| 3033 | .stat_size = undefined, |
| 3034 | .stat_inode = undefined, |
| 3035 | .stat_mtime = undefined, |
| 3036 | .tree = tree, |
| 3037 | .tree_loaded = true, |
| 3038 | .zir = undefined, |
| 3039 | .pkg = undefined, |
| 3040 | .root_decl = null, |
| 3041 | }; |
| 3042 | |
| 3043 | file.zir = try AstGen.generate(gpa, file.tree); |
| 3044 | file.zir_loaded = true; |
| 3045 | defer file.zir.deinit(gpa); |
| 3046 | |
| 3047 | if (file.zir.hasCompileErrors()) { |
| 3048 | var arena_instance = std.heap.ArenaAllocator.init(gpa); |
| 3049 | defer arena_instance.deinit(); |
| 3050 | var errors = std.ArrayList(Compilation.AllErrors.Message).init(gpa); |
| 3051 | defer errors.deinit(); |
| 3052 | |
| 3053 | try Compilation.AllErrors.addZir(&arena_instance.allocator, &errors, &file); |
| 3054 | const ttyconf: std.debug.TTY.Config = switch (color) { |
| 3055 | .auto => std.debug.detectTTYConfig(), |
| 3056 | .on => .escape_codes, |
| 3057 | .off => .no_color, |
| 3058 | }; |
| 3059 | for (errors.items) |full_err_msg| { |
| 3060 | full_err_msg.renderToStdErr(ttyconf); |
| 3061 | } |
| 3062 | has_ast_error = true; |
| 3063 | } |
| 3064 | } |
| 3065 | if (tree.errors.len != 0 or has_ast_error) { |
| 3023 | 3066 | process.exit(1); |
| 3024 | 3067 | } |
| 3025 | 3068 | const formatted = try tree.render(gpa); |