diff --git a/crates/oxc_codegen/src/gen.rs b/crates/oxc_codegen/src/gen.rs index 8407445d47798..84f9236c6ea12 100644 --- a/crates/oxc_codegen/src/gen.rs +++ b/crates/oxc_codegen/src/gen.rs @@ -1473,6 +1473,7 @@ impl Gen for ArrayExpression<'_> { p.print_indent(); } p.print_ascii_byte(b']'); + p.add_source_mapping_end(self.span); } } @@ -1515,6 +1516,7 @@ impl GenExpr for ObjectExpression<'_> { p.print_soft_space(); } p.print_ascii_byte(b'}'); + p.add_source_mapping_end(self.span); }); } } diff --git a/crates/oxc_codegen/src/lib.rs b/crates/oxc_codegen/src/lib.rs index 908eb801b2c2f..375099ec3e4b8 100644 --- a/crates/oxc_codegen/src/lib.rs +++ b/crates/oxc_codegen/src/lib.rs @@ -843,6 +843,14 @@ impl<'a> Codegen<'a> { } } + fn add_source_mapping_end(&mut self, span: Span) { + if let Some(sourcemap_builder) = self.sourcemap_builder.as_mut() { + if !span.is_empty() { + sourcemap_builder.add_source_mapping(self.code.as_bytes(), span.end, None); + } + } + } + fn add_source_mapping_for_name(&mut self, span: Span, name: &str) { if let Some(sourcemap_builder) = self.sourcemap_builder.as_mut() { if !span.is_empty() { diff --git a/crates/oxc_codegen/tests/integration/snapshots/stacktrace_is_correct.snap b/crates/oxc_codegen/tests/integration/snapshots/stacktrace_is_correct.snap index 5dd10f892a12a..7e85ce4ec947d 100644 --- a/crates/oxc_codegen/tests/integration/snapshots/stacktrace_is_correct.snap +++ b/crates/oxc_codegen/tests/integration/snapshots/stacktrace_is_correct.snap @@ -146,7 +146,7 @@ obj.fn([1])(); Error at (/project/input.js:5:19) - at (/project/input.js:9:9) + at (/project/input.js:9:11) ------------------------------------------------------ ## Input @@ -180,7 +180,7 @@ obj.fn({ a })(); Error at (/project/input.js:6:19) - at (/project/input.js:10:9) + at (/project/input.js:10:11) ------------------------------------------------------ ## Input