diff options
author | 2023-04-30 23:16:23 -0700 | |
---|---|---|
committer | 2023-04-30 23:16:23 -0700 | |
commit | c0a1c76edb2a40e70bf6e2689cfee85f18570aea (patch) | |
tree | 9dffca9bc9cc36e348188d74ada62f8fe343715e | |
parent | f26fef1010784080da7ad97b89f1f23b7998d825 (diff) | |
download | bun-c0a1c76edb2a40e70bf6e2689cfee85f18570aea.tar.gz bun-c0a1c76edb2a40e70bf6e2689cfee85f18570aea.tar.zst bun-c0a1c76edb2a40e70bf6e2689cfee85f18570aea.zip |
Fix garbled line text in some errors
-rw-r--r-- | src/bundler/bundle_v2.zig | 2 | ||||
-rw-r--r-- | src/logger.zig | 27 |
2 files changed, 23 insertions, 6 deletions
diff --git a/src/bundler/bundle_v2.zig b/src/bundler/bundle_v2.zig index 10057ee1e..c1dafc0ff 100644 --- a/src/bundler/bundle_v2.zig +++ b/src/bundler/bundle_v2.zig @@ -687,6 +687,8 @@ pub const BundleV2 = struct { thread_pool, ); + generator.linker.log.clone_line_text = true; + return generator; } diff --git a/src/logger.zig b/src/logger.zig index a9555c952..1272742c1 100644 --- a/src/logger.zig +++ b/src/logger.zig @@ -211,6 +211,19 @@ pub const Data = struct { allocator.free(d.text); } + pub fn cloneLineText(this: Data, should: bool, allocator: std.mem.Allocator) !Data { + if (!should or this.location == null or this.location.?.line_text == null) + return this; + + var new_line_text = try allocator.dupe(u8, this.location.?.line_text.?); + var new_location = this.location.?; + new_location.line_text = new_line_text; + return Data{ + .text = this.text, + .location = new_location, + }; + } + pub fn clone(this: Data, allocator: std.mem.Allocator) !Data { return Data{ .text = if (this.text.len > 0) try allocator.dupe(u8, this.text) else "", @@ -600,6 +613,8 @@ pub const Log = struct { msgs: ArrayList(Msg), level: Level = if (Environment.isDebug) Level.info else Level.warn, + clone_line_text: bool = false, + pub inline fn hasErrors(this: *const Log) bool { return this.errors > 0; } @@ -955,7 +970,7 @@ pub const Log = struct { log.errors += 1; try log.addMsg(.{ .kind = .err, - .data = rangeData(source, r, allocPrint(allocator, text, args) catch unreachable), + .data = try rangeData(source, r, allocPrint(allocator, text, args) catch unreachable).cloneLineText(log.clone_line_text, log.msgs.allocator), }); } @@ -964,7 +979,7 @@ pub const Log = struct { log.errors += 1; try log.addMsg(.{ .kind = .err, - .data = rangeData(source, r, allocPrint(allocator, text, args) catch unreachable), + .data = try rangeData(source, r, allocPrint(allocator, text, args) catch unreachable).cloneLineText(log.clone_line_text, log.msgs.allocator), .notes = notes, }); } @@ -974,7 +989,7 @@ pub const Log = struct { log.errors += 1; try log.addMsg(.{ .kind = .err, - .data = rangeData(source, Range{ .loc = l }, allocPrint(allocator, text, args) catch unreachable), + .data = try rangeData(source, Range{ .loc = l }, allocPrint(allocator, text, args) catch unreachable).cloneLineText(log.clone_line_text, log.msgs.allocator), }); } @@ -984,7 +999,7 @@ pub const Log = struct { log.warnings += 1; try log.addMsg(.{ .kind = .warn, - .data = rangeData(source, r, text), + .data = try rangeData(source, r, text).cloneLineText(log.clone_line_text, log.msgs.allocator), }); } @@ -994,7 +1009,7 @@ pub const Log = struct { log.warnings += 1; try log.addMsg(.{ .kind = .warn, - .data = rangeData(source, Range{ .loc = l }, allocPrint(allocator, text, args) catch unreachable), + .data = try rangeData(source, Range{ .loc = l }, allocPrint(allocator, text, args) catch unreachable).cloneLineText(log.clone_line_text, log.msgs.allocator), }); } @@ -1004,7 +1019,7 @@ pub const Log = struct { log.warnings += 1; try log.addMsg(.{ .kind = .warn, - .data = rangeData(source, r, allocPrint(allocator, text, args) catch unreachable), + .data = try rangeData(source, r, allocPrint(allocator, text, args) catch unreachable).cloneLineText(log.clone_line_text, log.msgs.allocator), }); } |