diff --git a/crates/oxc_codegen/examples/codegen.rs b/crates/oxc_codegen/examples/codegen.rs index 1a94b2b749ed..ed17f7e5da03 100644 --- a/crates/oxc_codegen/examples/codegen.rs +++ b/crates/oxc_codegen/examples/codegen.rs @@ -30,12 +30,12 @@ fn main() -> std::io::Result<()> { let options = CodegenOptions::default(); let printed = - Codegen::::new(&source_text, options.clone()).build(&ret.program).source_text; + Codegen::::new("", &source_text, options.clone()).build(&ret.program).source_text; println!("Printed:"); println!("{printed}"); let ret = Parser::new(&allocator, &printed, source_type).parse(); - let minified = Codegen::::new(&source_text, options).build(&ret.program).source_text; + let minified = Codegen::::new("", &source_text, options).build(&ret.program).source_text; println!("Minified:"); println!("{minified}"); diff --git a/crates/oxc_codegen/examples/sourcemap.rs b/crates/oxc_codegen/examples/sourcemap.rs index 1b5b09efb1d2..fb4549ab5268 100644 --- a/crates/oxc_codegen/examples/sourcemap.rs +++ b/crates/oxc_codegen/examples/sourcemap.rs @@ -26,13 +26,11 @@ fn main() -> std::io::Result<()> { return Ok(()); } - let codegen_options = CodegenOptions { - enable_source_map: Some(path.to_string_lossy().to_string()), - enable_typescript: true, - }; + let codegen_options = CodegenOptions { enable_source_map: true, enable_typescript: true }; let CodegenReturn { source_text, source_map } = - Codegen::::new(&source_text, codegen_options).build(&ret.program); + Codegen::::new(path.to_string_lossy().as_ref(), &source_text, codegen_options) + .build(&ret.program); if let Some(source_map) = source_map { let mut buff = vec![]; diff --git a/crates/oxc_codegen/src/lib.rs b/crates/oxc_codegen/src/lib.rs index 5a9322bcc4ec..d88473f1cc04 100644 --- a/crates/oxc_codegen/src/lib.rs +++ b/crates/oxc_codegen/src/lib.rs @@ -38,7 +38,7 @@ pub use crate::{ #[derive(Debug, Default, Clone)] pub struct CodegenOptions { /// Pass in the filename to enable source map support. - pub enable_source_map: Option, + pub enable_source_map: bool, /// Enable TypeScript code generation. pub enable_typescript: bool, @@ -85,14 +85,14 @@ pub enum Separator { } impl Codegen { - pub fn new(source_text: &str, options: CodegenOptions) -> Self { + pub fn new(source_name: &str, source_text: &str, options: CodegenOptions) -> Self { // Initialize the output code buffer to reduce memory reallocation. // Minification will reduce by at least half of the original size. let source_len = source_text.len(); let capacity = if MINIFY { source_len / 2 } else { source_len }; let mut sourcemap_builder = SourcemapBuilder::default(); - if let Some(source_name) = &options.enable_source_map { + if options.enable_source_map { sourcemap_builder.with_name_and_source(source_name, source_text); } Self { diff --git a/crates/oxc_codegen/tests/mod.rs b/crates/oxc_codegen/tests/mod.rs index 89e96a688054..51e5b24ca050 100644 --- a/crates/oxc_codegen/tests/mod.rs +++ b/crates/oxc_codegen/tests/mod.rs @@ -8,8 +8,9 @@ fn test(source_text: &str, expected: &str) { let source_type = SourceType::default().with_module(true); let program = Parser::new(&allocator, source_text, source_type).parse().program; let program = allocator.alloc(program); - let result = - Codegen::::new(source_text, CodegenOptions::default()).build(program).source_text; + let result = Codegen::::new("", source_text, CodegenOptions::default()) + .build(program) + .source_text; assert_eq!(expected, result, "for source {source_text}, expect {expected}, got {result}"); } @@ -22,7 +23,7 @@ fn test_ts(source_text: &str, expected: &str, is_typescript_definition: bool) { let program = Parser::new(&allocator, source_text, source_type).parse().program; let program = allocator.alloc(program); let codegen_options = CodegenOptions { enable_typescript: true, ..CodegenOptions::default() }; - let result = Codegen::::new(source_text, codegen_options).build(program).source_text; + let result = Codegen::::new("", source_text, codegen_options).build(program).source_text; assert_eq!(expected, result, "for source {source_text}, expect {expected}, got {result}"); } diff --git a/crates/oxc_linter/src/context.rs b/crates/oxc_linter/src/context.rs index 2996a889fe11..3b815cf0e6d3 100644 --- a/crates/oxc_linter/src/context.rs +++ b/crates/oxc_linter/src/context.rs @@ -151,7 +151,7 @@ impl<'a> LintContext<'a> { #[allow(clippy::unused_self)] pub fn codegen(&self) -> Codegen { - Codegen::::new("", CodegenOptions::default()) + Codegen::::new("", "", CodegenOptions::default()) } /* JSDoc */ diff --git a/crates/oxc_minifier/examples/minifier.rs b/crates/oxc_minifier/examples/minifier.rs index 963cad576cc2..d806d2580752 100644 --- a/crates/oxc_minifier/examples/minifier.rs +++ b/crates/oxc_minifier/examples/minifier.rs @@ -43,9 +43,9 @@ fn minify(source_text: &str, source_type: SourceType, mangle: bool, whitespace: let options = MinifierOptions { mangle, ..MinifierOptions::default() }; Minifier::new(options).build(&allocator, program); if whitespace { - Codegen::::new(source_text, CodegenOptions::default()).build(program) + Codegen::::new("", source_text, CodegenOptions::default()).build(program) } else { - Codegen::::new(source_text, CodegenOptions::default()).build(program) + Codegen::::new("", source_text, CodegenOptions::default()).build(program) } .source_text } diff --git a/crates/oxc_minifier/tests/mod.rs b/crates/oxc_minifier/tests/mod.rs index 4c5387d188b3..f44023666e41 100644 --- a/crates/oxc_minifier/tests/mod.rs +++ b/crates/oxc_minifier/tests/mod.rs @@ -19,7 +19,7 @@ pub(crate) fn minify( let program = Parser::new(&allocator, source_text, source_type).parse().program; let program = allocator.alloc(program); Minifier::new(options).build(&allocator, program); - Codegen::::new(source_text, CodegenOptions::default()).build(program).source_text + Codegen::::new("", source_text, CodegenOptions::default()).build(program).source_text } pub(crate) fn test(source_text: &str, expected: &str) { diff --git a/crates/oxc_transformer/examples/transformer.rs b/crates/oxc_transformer/examples/transformer.rs index bf28ffe75599..d3531898e646 100644 --- a/crates/oxc_transformer/examples/transformer.rs +++ b/crates/oxc_transformer/examples/transformer.rs @@ -55,8 +55,9 @@ fn main() { }; Transformer::new(&allocator, source_type, semantic, transform_options).build(program).unwrap(); - let printed = - Codegen::::new(&source_text, CodegenOptions::default()).build(program).source_text; + let printed = Codegen::::new("", &source_text, CodegenOptions::default()) + .build(program) + .source_text; println!("Transformed:\n"); println!("{printed}"); } diff --git a/crates/oxc_transformer/src/tester.rs b/crates/oxc_transformer/src/tester.rs index c8ef084907e5..7abfb12ca88e 100644 --- a/crates/oxc_transformer/src/tester.rs +++ b/crates/oxc_transformer/src/tester.rs @@ -43,11 +43,15 @@ impl Tester { Transformer::new(&self.allocator, self.source_type, semantic, self.options.clone()) .build(program)?; - Ok(Codegen::::new(source_text, CodegenOptions::default()).build(program).source_text) + Ok(Codegen::::new("", source_text, CodegenOptions::default()) + .build(program) + .source_text) } fn codegen(&self, source_text: &str) -> String { let program = Parser::new(&self.allocator, source_text, self.source_type).parse().program; - Codegen::::new(source_text, CodegenOptions::default()).build(&program).source_text + Codegen::::new("", source_text, CodegenOptions::default()) + .build(&program) + .source_text } } diff --git a/crates/oxc_wasm/src/lib.rs b/crates/oxc_wasm/src/lib.rs index 8932942a8867..445612f97c04 100644 --- a/crates/oxc_wasm/src/lib.rs +++ b/crates/oxc_wasm/src/lib.rs @@ -272,9 +272,9 @@ impl Oxc { ..CodegenOptions::default() }; self.codegen_text = if minifier_options.whitespace() { - Codegen::::new(source_text, codegen_options).build(program).source_text + Codegen::::new("", source_text, codegen_options).build(program).source_text } else { - Codegen::::new(source_text, codegen_options).build(program).source_text + Codegen::::new("", source_text, codegen_options).build(program).source_text }; Ok(()) diff --git a/tasks/benchmark/benches/codegen_sourcemap.rs b/tasks/benchmark/benches/codegen_sourcemap.rs index d243e8c7965c..c49dd04ffd1e 100644 --- a/tasks/benchmark/benches/codegen_sourcemap.rs +++ b/tasks/benchmark/benches/codegen_sourcemap.rs @@ -14,12 +14,10 @@ fn bench_codegen_sourcemap(criterion: &mut Criterion) { group.bench_with_input(id, &file.source_text, |b, source_text| { let allocator = Allocator::default(); let program = Parser::new(&allocator, source_text, source_type).parse().program; - let codegen_options = CodegenOptions { - enable_source_map: Some(file.file_name.clone()), - ..CodegenOptions::default() - }; + let codegen_options = + CodegenOptions { enable_source_map: true, ..CodegenOptions::default() }; b.iter_with_large_drop(|| { - Codegen::::new(source_text, codegen_options.clone()) + Codegen::::new(file.file_name.as_str(), source_text, codegen_options.clone()) .build(&program) .source_map }); diff --git a/tasks/coverage/src/codegen.rs b/tasks/coverage/src/codegen.rs index bf7a04647765..a3e517dbdeb9 100644 --- a/tasks/coverage/src/codegen.rs +++ b/tasks/coverage/src/codegen.rs @@ -72,12 +72,12 @@ fn get_normal_result( let options = CodegenOptions::default(); let allocator = Allocator::default(); let parse_result1 = Parser::new(&allocator, source_text, source_type).parse(); - let source_text1 = Codegen::::new(source_text, options.clone()) + let source_text1 = Codegen::::new("", source_text, options.clone()) .build(&parse_result1.program) .source_text; let parse_result2 = Parser::new(&allocator, &source_text1, source_type).parse(); let source_text2 = - Codegen::::new(&source_text1, options).build(&parse_result2.program).source_text; + Codegen::::new("", &source_text1, options).build(&parse_result2.program).source_text; let result = source_text1 == source_text2; if !result { @@ -114,12 +114,12 @@ fn get_minify_result( let options = CodegenOptions::default(); let allocator = Allocator::default(); let parse_result1 = Parser::new(&allocator, source_text, source_type).parse(); - let source_text1 = Codegen::::new(source_text, options.clone()) + let source_text1 = Codegen::::new("", source_text, options.clone()) .build(&parse_result1.program) .source_text; let parse_result2 = Parser::new(&allocator, source_text1.as_str(), source_type).parse(); let source_text2 = - Codegen::::new(&source_text1, options).build(&parse_result2.program).source_text; + Codegen::::new("", &source_text1, options).build(&parse_result2.program).source_text; let result = source_text1 == source_text2; if !result { @@ -153,15 +153,15 @@ fn get_typescript_result( source_text: &str, source_type: SourceType, ) -> bool { - let options = CodegenOptions { enable_source_map: None, enable_typescript: true }; + let options = CodegenOptions { enable_source_map: false, enable_typescript: true }; let allocator = Allocator::default(); let parse_result1 = Parser::new(&allocator, source_text, source_type).parse(); - let source_text1 = Codegen::::new(source_text, options.clone()) + let source_text1 = Codegen::::new("", source_text, options.clone()) .build(&parse_result1.program) .source_text; let parse_result2 = Parser::new(&allocator, &source_text1, source_type).parse(); let source_text2 = - Codegen::::new(&source_text1, options).build(&parse_result2.program).source_text; + Codegen::::new("", &source_text1, options).build(&parse_result2.program).source_text; let result = source_text1 == source_text2; if !result { diff --git a/tasks/coverage/src/minifier.rs b/tasks/coverage/src/minifier.rs index 6f64b0770366..3495220ad186 100644 --- a/tasks/coverage/src/minifier.rs +++ b/tasks/coverage/src/minifier.rs @@ -100,5 +100,5 @@ fn minify(source_text: &str, source_type: SourceType, options: MinifierOptions) let program = Parser::new(&allocator, source_text, source_type).parse().program; let program = allocator.alloc(program); Minifier::new(options).build(&allocator, program); - Codegen::::new(source_text, CodegenOptions::default()).build(program).source_text + Codegen::::new("", source_text, CodegenOptions::default()).build(program).source_text } diff --git a/tasks/coverage/src/runtime/mod.rs b/tasks/coverage/src/runtime/mod.rs index 5eb62454f173..4c901dac53dc 100644 --- a/tasks/coverage/src/runtime/mod.rs +++ b/tasks/coverage/src/runtime/mod.rs @@ -138,7 +138,7 @@ impl Case for CodegenRuntimeTest262Case { let source_type = SourceType::default().with_module(is_module); let allocator = Allocator::default(); let program = Parser::new(&allocator, source_text, source_type).parse().program; - let mut text = Codegen::::new(source_text, CodegenOptions::default()) + let mut text = Codegen::::new("", source_text, CodegenOptions::default()) .build(&program) .source_text; if is_only_strict { diff --git a/tasks/coverage/src/sourcemap.rs b/tasks/coverage/src/sourcemap.rs index ff2f10c162c9..f019dda1a08a 100644 --- a/tasks/coverage/src/sourcemap.rs +++ b/tasks/coverage/src/sourcemap.rs @@ -126,11 +126,14 @@ impl Case for SourcemapCase { } } - let codegen_options = CodegenOptions { - enable_source_map: Some(self.path.to_string_lossy().to_string()), - ..CodegenOptions::default() - }; - let codegen_ret = Codegen::::new(source_text, codegen_options).build(&ret.program); + let codegen_options = + CodegenOptions { enable_source_map: true, ..CodegenOptions::default() }; + let codegen_ret = Codegen::::new( + self.path.to_string_lossy().as_ref(), + source_text, + codegen_options, + ) + .build(&ret.program); TestResult::Snapshot( SourcemapVisualizer::new(&codegen_ret.source_text, &codegen_ret.source_map.unwrap()) diff --git a/tasks/minsize/src/lib.rs b/tasks/minsize/src/lib.rs index 0418607e01bd..2ac5151b5fe3 100644 --- a/tasks/minsize/src/lib.rs +++ b/tasks/minsize/src/lib.rs @@ -73,7 +73,7 @@ fn minify(source_text: &str, source_type: SourceType, options: MinifierOptions) let program = Parser::new(&allocator, source_text, source_type).parse().program; let program = allocator.alloc(program); Minifier::new(options).build(&allocator, program); - Codegen::::new(source_text, CodegenOptions::default()).build(program).source_text + Codegen::::new("", source_text, CodegenOptions::default()).build(program).source_text } fn gzip_size(s: &str) -> usize { diff --git a/tasks/transform_conformance/src/test_case.rs b/tasks/transform_conformance/src/test_case.rs index a7528b0ea0ae..081073e7d49e 100644 --- a/tasks/transform_conformance/src/test_case.rs +++ b/tasks/transform_conformance/src/test_case.rs @@ -179,7 +179,7 @@ pub trait TestCase { .build(transformed_program); result.map(|()| { - Codegen::::new(&source_text, CodegenOptions::default()) + Codegen::::new("", &source_text, CodegenOptions::default()) .build(transformed_program) .source_text }) @@ -253,8 +253,9 @@ impl TestCase for ConformanceTestCase { let mut actual_errors = String::new(); let result = transformer.build(program); if result.is_ok() { - transformed_code = - Codegen::::new(&input, codegen_options.clone()).build(program).source_text; + transformed_code = Codegen::::new("", &input, codegen_options.clone()) + .build(program) + .source_text; } else { actual_errors = result.err().unwrap().iter().map(ToString::to_string).collect(); } @@ -269,12 +270,16 @@ impl TestCase for ConformanceTestCase { } // The transformation should be equal to input.js If output.js does not exist. let program = Parser::new(&allocator, &input, source_type).parse().program; - Codegen::::new(&input, codegen_options.clone()).build(&program).source_text + Codegen::::new("", &input, codegen_options.clone()) + .build(&program) + .source_text }, |output| { // Get expected code by parsing the source text, so we can get the same code generated result. let program = Parser::new(&allocator, &output, source_type).parse().program; - Codegen::::new(&output, codegen_options.clone()).build(&program).source_text + Codegen::::new("", &output, codegen_options.clone()) + .build(&program) + .source_text }, ); @@ -334,7 +339,7 @@ impl ExecTestCase { let source_type = SourceType::from_path(&target_path).unwrap(); let transformed_program = Parser::new(&allocator, &source_text, source_type).parse().program; - let result = Codegen::::new(&source_text, CodegenOptions::default()) + let result = Codegen::::new("", &source_text, CodegenOptions::default()) .build(&transformed_program) .source_text; diff --git a/tasks/transform_conformance/src/ts_fixtures.rs b/tasks/transform_conformance/src/ts_fixtures.rs index 7493cb3bc8d9..3e2d03b1565d 100644 --- a/tasks/transform_conformance/src/ts_fixtures.rs +++ b/tasks/transform_conformance/src/ts_fixtures.rs @@ -127,7 +127,7 @@ impl TypeScriptFixtures { result .map(|()| { - Codegen::::new(&source_text, CodegenOptions::default()) + Codegen::::new("", &source_text, CodegenOptions::default()) .build(transformed_program) .source_text })