aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2023-04-30 23:16:23 -0700
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2023-04-30 23:16:23 -0700
commitc0a1c76edb2a40e70bf6e2689cfee85f18570aea (patch)
tree9dffca9bc9cc36e348188d74ada62f8fe343715e
parentf26fef1010784080da7ad97b89f1f23b7998d825 (diff)
downloadbun-c0a1c76edb2a40e70bf6e2689cfee85f18570aea.tar.gz
bun-c0a1c76edb2a40e70bf6e2689cfee85f18570aea.tar.zst
bun-c0a1c76edb2a40e70bf6e2689cfee85f18570aea.zip
Fix garbled line text in some errors
-rw-r--r--src/bundler/bundle_v2.zig2
-rw-r--r--src/logger.zig27
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),
});
}