From 6b6a81ca4baeb334f8220bde1e4529ef8515221c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EB=8F=99=EC=9C=A4=20=28Donny=29?= Date: Mon, 15 Jul 2024 19:03:16 +0900 Subject: [PATCH 1/4] fix lint --- crates/swc_allocator/Cargo.toml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/crates/swc_allocator/Cargo.toml b/crates/swc_allocator/Cargo.toml index a9c7fe7366ee..2faf42cc7b59 100644 --- a/crates/swc_allocator/Cargo.toml +++ b/crates/swc_allocator/Cargo.toml @@ -40,6 +40,5 @@ swc_malloc = { version = "0.5.10", path = "../swc_malloc" } [[bench]] -features = ["scoped"] -harness = false -name = "bench" +harness = false +name = "bench" From a399c4d9aff55ad3fa12b2a9101c21c7bfe94bb3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EB=8F=99=EC=9C=A4=20=28Donny=29?= Date: Mon, 15 Jul 2024 19:03:23 +0900 Subject: [PATCH 2/4] test --- crates/swc_fast_ts_strip/tests/fixture.rs | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/crates/swc_fast_ts_strip/tests/fixture.rs b/crates/swc_fast_ts_strip/tests/fixture.rs index 379b06120576..55f589b46670 100644 --- a/crates/swc_fast_ts_strip/tests/fixture.rs +++ b/crates/swc_fast_ts_strip/tests/fixture.rs @@ -1,16 +1,17 @@ use std::path::PathBuf; use swc_ecma_parser::TsSyntax; -use swc_fast_ts_strip::{operate, Options}; +use swc_fast_ts_strip::{operate, Mode, Options}; use testing::NormalizedOutput; #[testing::fixture("tests/fixture/**/*.ts")] fn test(input: PathBuf) { let input_code = std::fs::read_to_string(&input).unwrap(); let output_file = input.with_extension("js"); + let transform_output_file = input.with_file_name(".transform.js"); testing::run_test(false, |cm, handler| { - let code = operate(&cm, handler, input_code, opts()) + let code = operate(&cm, handler, input_code.clone(), opts(Mode::StripOnly)) .expect("should not return Err()") .code; @@ -21,6 +22,19 @@ fn test(input: PathBuf) { Ok(()) }) .expect("should not fail"); + + testing::run_test(false, |cm, handler| { + let code = operate(&cm, handler, input_code, opts(Mode::Transform)) + .expect("should not return Err()") + .code; + + NormalizedOutput::new_raw(code) + .compare_to_file(transform_output_file) + .unwrap(); + + Ok(()) + }) + .expect("should not fail"); } #[testing::fixture("tests/errors/**/*.ts")] @@ -29,7 +43,7 @@ fn error(input: PathBuf) { let output_file = input.with_extension("swc-stderr"); testing::run_test(false, |cm, handler| { - operate(&cm, handler, input_code, opts()).expect("should not return Err()"); + operate(&cm, handler, input_code, opts(Mode::StripOnly)).expect("should not return Err()"); Err::<(), _>(()) }) @@ -38,7 +52,7 @@ fn error(input: PathBuf) { .unwrap(); } -fn opts() -> Options { +fn opts(mode: Mode) -> Options { Options { module: None, filename: None, @@ -46,6 +60,7 @@ fn opts() -> Options { decorators: true, ..Default::default() }, + mode, ..Default::default() } } From 6e9c40f8762b53b85d57a3b211ce54ef81b7e96e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EB=8F=99=EC=9C=A4=20=28Donny=29?= Date: Mon, 15 Jul 2024 19:04:41 +0900 Subject: [PATCH 3/4] fix --- crates/swc_fast_ts_strip/src/lib.rs | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/crates/swc_fast_ts_strip/src/lib.rs b/crates/swc_fast_ts_strip/src/lib.rs index 7be17f8788fc..f2ea8400834b 100644 --- a/crates/swc_fast_ts_strip/src/lib.rs +++ b/crates/swc_fast_ts_strip/src/lib.rs @@ -22,7 +22,12 @@ use swc_ecma_parser::{ token::{IdentLike, KnownIdent, Token, TokenAndSpan, Word}, Capturing, Parser, StringInput, Syntax, TsSyntax, }; -use swc_ecma_transforms_base::{fixer::fixer, helpers::inject_helpers, hygiene::hygiene, resolver}; +use swc_ecma_transforms_base::{ + fixer::fixer, + helpers::{inject_helpers, Helpers, HELPERS}, + hygiene::hygiene, + resolver, +}; use swc_ecma_transforms_typescript::typescript; use swc_ecma_visit::{Visit, VisitMutWith, VisitWith}; @@ -218,19 +223,21 @@ pub fn operate( let unresolved_mark = Mark::new(); let top_level_mark = Mark::new(); - program.visit_mut_with(&mut resolver(unresolved_mark, top_level_mark, true)); + HELPERS.set(&Helpers::new(false), || { + program.visit_mut_with(&mut resolver(unresolved_mark, top_level_mark, true)); - program.visit_mut_with(&mut typescript::typescript( - options.transform.unwrap_or_default(), - unresolved_mark, - top_level_mark, - )); + program.visit_mut_with(&mut typescript::typescript( + options.transform.unwrap_or_default(), + unresolved_mark, + top_level_mark, + )); - program.visit_mut_with(&mut inject_helpers(unresolved_mark)); + program.visit_mut_with(&mut inject_helpers(unresolved_mark)); - program.visit_mut_with(&mut hygiene()); + program.visit_mut_with(&mut hygiene()); - program.visit_mut_with(&mut fixer(Some(&comments))); + program.visit_mut_with(&mut fixer(Some(&comments))); + }); let mut src = vec![]; let mut src_map_buf = if options.source_map { From 898a8f2dfdb5bb5c14806b46612d1db45d0a7e80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EB=8F=99=EC=9C=A4=20=28Donny=29?= Date: Mon, 15 Jul 2024 19:05:06 +0900 Subject: [PATCH 4/4] Update test refs --- crates/swc_fast_ts_strip/tests/fixture.rs | 2 +- .../tests/fixture/mixed/output.transform.js | 6 ++ .../nonnull-assertion/output.transform.js | 2 + .../tests/fixture/output.transform.js | 57 +++++++++++++++++++ .../fixture/satisfies/output.transform.js | 2 + .../fixture/type-alias/output.transform.js | 2 + .../type-ann/var-decl/output.transform.js | 2 + .../type-assertions/output.transform.js | 2 + 8 files changed, 74 insertions(+), 1 deletion(-) create mode 100644 crates/swc_fast_ts_strip/tests/fixture/mixed/output.transform.js create mode 100644 crates/swc_fast_ts_strip/tests/fixture/nonnull-assertion/output.transform.js create mode 100644 crates/swc_fast_ts_strip/tests/fixture/output.transform.js create mode 100644 crates/swc_fast_ts_strip/tests/fixture/satisfies/output.transform.js create mode 100644 crates/swc_fast_ts_strip/tests/fixture/type-alias/output.transform.js create mode 100644 crates/swc_fast_ts_strip/tests/fixture/type-ann/var-decl/output.transform.js create mode 100644 crates/swc_fast_ts_strip/tests/fixture/type-assertions/output.transform.js diff --git a/crates/swc_fast_ts_strip/tests/fixture.rs b/crates/swc_fast_ts_strip/tests/fixture.rs index 55f589b46670..000349a89764 100644 --- a/crates/swc_fast_ts_strip/tests/fixture.rs +++ b/crates/swc_fast_ts_strip/tests/fixture.rs @@ -8,7 +8,7 @@ use testing::NormalizedOutput; fn test(input: PathBuf) { let input_code = std::fs::read_to_string(&input).unwrap(); let output_file = input.with_extension("js"); - let transform_output_file = input.with_file_name(".transform.js"); + let transform_output_file = input.with_file_name("output.transform.js"); testing::run_test(false, |cm, handler| { let code = operate(&cm, handler, input_code.clone(), opts(Mode::StripOnly)) diff --git a/crates/swc_fast_ts_strip/tests/fixture/mixed/output.transform.js b/crates/swc_fast_ts_strip/tests/fixture/mixed/output.transform.js new file mode 100644 index 000000000000..94b793277ca7 --- /dev/null +++ b/crates/swc_fast_ts_strip/tests/fixture/mixed/output.transform.js @@ -0,0 +1,6 @@ +const foo = { + foo: 1, + bar: "bar", + baz: foo +}; +const bar = "bar"; diff --git a/crates/swc_fast_ts_strip/tests/fixture/nonnull-assertion/output.transform.js b/crates/swc_fast_ts_strip/tests/fixture/nonnull-assertion/output.transform.js new file mode 100644 index 000000000000..e5c063811772 --- /dev/null +++ b/crates/swc_fast_ts_strip/tests/fixture/nonnull-assertion/output.transform.js @@ -0,0 +1,2 @@ +const foo = 1; +const bar = "bar"; diff --git a/crates/swc_fast_ts_strip/tests/fixture/output.transform.js b/crates/swc_fast_ts_strip/tests/fixture/output.transform.js new file mode 100644 index 000000000000..1444d1d1329e --- /dev/null +++ b/crates/swc_fast_ts_strip/tests/fixture/output.transform.js @@ -0,0 +1,57 @@ +let x = 1; +[]; +"test"; +class C extends Array { + field = ""; + static accessor f1; + f2; + method(a) {} + get g() { + return 1; + } + set g(v) {} +} +class D extends C { + method(...args) {} +} +class A { + b; +} +{ + let m = new Map([]); +}{ + let a = foo; +}{ + let a = foo([]); +}{ + let f = function(p) {}; +}{ + function overload() {} +}void 0; +export { C }; +function foo(p = ()=>1) { + return p; +} +void 0; +void 0; +void 0; +void 0; +void 0; +void 0; +{ + ()=>1; +}{ + ()=>1; +}{ + ()=>1; +}{ + ()=>1; +}{ + ()=>1; +}{ + (a, b, c = [])=>1; +}()=>1; +{ + (a, b, c = [])=>1; +}()=>1; +()=>1; diff --git a/crates/swc_fast_ts_strip/tests/fixture/satisfies/output.transform.js b/crates/swc_fast_ts_strip/tests/fixture/satisfies/output.transform.js new file mode 100644 index 000000000000..e5c063811772 --- /dev/null +++ b/crates/swc_fast_ts_strip/tests/fixture/satisfies/output.transform.js @@ -0,0 +1,2 @@ +const foo = 1; +const bar = "bar"; diff --git a/crates/swc_fast_ts_strip/tests/fixture/type-alias/output.transform.js b/crates/swc_fast_ts_strip/tests/fixture/type-alias/output.transform.js new file mode 100644 index 000000000000..e5c063811772 --- /dev/null +++ b/crates/swc_fast_ts_strip/tests/fixture/type-alias/output.transform.js @@ -0,0 +1,2 @@ +const foo = 1; +const bar = "bar"; diff --git a/crates/swc_fast_ts_strip/tests/fixture/type-ann/var-decl/output.transform.js b/crates/swc_fast_ts_strip/tests/fixture/type-ann/var-decl/output.transform.js new file mode 100644 index 000000000000..e5c063811772 --- /dev/null +++ b/crates/swc_fast_ts_strip/tests/fixture/type-ann/var-decl/output.transform.js @@ -0,0 +1,2 @@ +const foo = 1; +const bar = "bar"; diff --git a/crates/swc_fast_ts_strip/tests/fixture/type-assertions/output.transform.js b/crates/swc_fast_ts_strip/tests/fixture/type-assertions/output.transform.js new file mode 100644 index 000000000000..e5c063811772 --- /dev/null +++ b/crates/swc_fast_ts_strip/tests/fixture/type-assertions/output.transform.js @@ -0,0 +1,2 @@ +const foo = 1; +const bar = "bar";