Skip to content

Commit 008f2de

Browse files
authoredJan 16, 2025··
fix(es/testing): Fix sourcemap generation (#9891)
**Description:** This is a regression from #9150
1 parent 96c6c07 commit 008f2de

File tree

4 files changed

+29
-3
lines changed

4 files changed

+29
-3
lines changed
 

‎.changeset/tricky-llamas-collect.md

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
swc_core: patch
3+
swc_ecma_transforms_testing: patch
4+
---
5+
6+
fix(es/testing): Fix sourcemap generation

‎Cargo.lock

+1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎crates/swc_ecma_transforms_testing/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ sha2 = { workspace = true }
2222
sourcemap = { workspace = true }
2323
tempfile = { workspace = true }
2424

25+
swc_allocator = { version = "2.0.0", path = "../swc_allocator", default-features = false }
2526
swc_common = { version = "5.0.0", path = "../swc_common", features = [
2627
"sourcemap",
2728
] }

‎crates/swc_ecma_transforms_testing/src/lib.rs

+21-3
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ use swc_common::{
2727
FileName, Mark, SourceMap, DUMMY_SP,
2828
};
2929
use swc_ecma_ast::*;
30-
use swc_ecma_codegen::to_code_default;
30+
use swc_ecma_codegen::{to_code_default, Emitter};
3131
use swc_ecma_parser::{lexer::Lexer, Parser, StringInput, Syntax};
3232
use swc_ecma_testing::{exec_node_js, JsExecOptions};
3333
use swc_ecma_transforms_base::{
@@ -900,7 +900,7 @@ fn test_fixture_inner<'a>(
900900
});
901901

902902
let mut src_map = if config.sourcemap {
903-
Some(Vec::new())
903+
Some(swc_allocator::maybe::vec::Vec::new())
904904
} else {
905905
None
906906
};
@@ -942,6 +942,24 @@ fn test_fixture_inner<'a>(
942942
let module = &actual;
943943
let comments: &Rc<SingleThreadedComments> = &tester.comments.clone();
944944

945+
let mut buf = vec![];
946+
{
947+
let mut emitter = Emitter {
948+
cfg: Default::default(),
949+
cm: tester.cm.clone(),
950+
wr: Box::new(swc_ecma_codegen::text_writer::JsWriter::new(
951+
tester.cm.clone(),
952+
"\n",
953+
&mut buf,
954+
src_map.as_mut(),
955+
)),
956+
comments: Some(comments),
957+
};
958+
959+
// println!("Emitting: {:?}", module);
960+
emitter.emit_program(module).unwrap();
961+
}
962+
945963
if let Some(src_map) = &mut src_map {
946964
sourcemap = Some(tester.cm.build_source_map_with_config(
947965
src_map,
@@ -950,7 +968,7 @@ fn test_fixture_inner<'a>(
950968
));
951969
}
952970

953-
to_code_default(tester.cm.clone(), Some(comments), module)
971+
String::from_utf8(buf).expect("codegen generated non-utf8 output")
954972
};
955973

956974
Ok(actual_src)

0 commit comments

Comments
 (0)
Please sign in to comment.