Skip to content

Commit 51a0de9

Browse files
committed
fix build
1 parent 21065a3 commit 51a0de9

File tree

8 files changed

+106
-87
lines changed

8 files changed

+106
-87
lines changed
Lines changed: 3 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
1-
use swc_common::util::take::Take;
2-
use swc_ecma_ast::{CallExpr, Expr, Lit, Pass, Regex};
3-
use swc_ecma_compiler::compat::{CompatCompiler, TransformOptions};
4-
use swc_ecma_utils::{quote_ident, ExprFactory};
5-
use swc_ecma_visit::{noop_visit_mut_type, visit_mut_pass, VisitMut, VisitMutWith};
1+
use swc_ecma_ast::Pass;
2+
use swc_ecma_compiler::{TransformOptions, Transformer};
63

74
pub fn regexp(config: Config) -> impl Pass {
85
let mut transform_options = TransformOptions::default();
@@ -16,7 +13,7 @@ pub fn regexp(config: Config) -> impl Pass {
1613
transform_options.env.regexp.unicode_flag = config.unicode_regex;
1714
transform_options.env.regexp.set_notation = config.unicode_sets_regex;
1815

19-
visit_mut_pass(CompatCompiler::new(&transform_options))
16+
Transformer::new("".as_ref(), &transform_options)
2017
}
2118

2219
#[derive(Default, Clone, Copy)]
@@ -38,47 +35,3 @@ pub struct Config {
3835
// [RegExp.prototype.unicodeSets](https://github.com/tc39/proposal-regexp-v-flag)
3936
pub unicode_sets_regex: bool,
4037
}
41-
42-
struct RegExp {
43-
config: Config,
44-
}
45-
46-
impl VisitMut for RegExp {
47-
noop_visit_mut_type!(fail);
48-
49-
fn visit_mut_expr(&mut self, expr: &mut Expr) {
50-
expr.visit_mut_children_with(self);
51-
52-
if let Expr::Lit(Lit::Regex(regex)) = expr {
53-
if (self.config.dot_all_regex && regex.flags.contains('s'))
54-
|| (self.config.sticky_regex && regex.flags.contains('y'))
55-
|| (self.config.unicode_regex && regex.flags.contains('u'))
56-
|| (self.config.unicode_sets_regex && regex.flags.contains('v'))
57-
|| (self.config.has_indices && regex.flags.contains('d'))
58-
|| (self.config.named_capturing_groups_regex && regex.exp.contains("(?<"))
59-
|| (self.config.lookbehind_assertion && regex.exp.contains("(?<=")
60-
|| regex.exp.contains("(?<!"))
61-
|| (self.config.unicode_property_regex
62-
&& (regex.exp.contains("\\p{") || regex.exp.contains("\\P{")))
63-
{
64-
let Regex { exp, flags, span } = regex.take();
65-
66-
let exp: Expr = exp.into();
67-
let mut args = vec![exp.into()];
68-
69-
if !flags.is_empty() {
70-
let flags: Expr = flags.into();
71-
args.push(flags.into());
72-
}
73-
74-
*expr = CallExpr {
75-
span,
76-
callee: quote_ident!("RegExp").as_callee(),
77-
args,
78-
..Default::default()
79-
}
80-
.into()
81-
}
82-
}
83-
}
84-
}
Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,18 @@
11
use swc_ecma_ast::Pass;
2-
use swc_ecma_compiler::{Compiler, Features};
2+
use swc_ecma_compiler::{ES2020Options, EnvOptions, TransformOptions, Transformer};
33

44
pub fn export_namespace_from() -> impl Pass {
5-
Compiler::new(swc_ecma_compiler::Config {
6-
includes: Features::EXPORT_NAMESPACE_FROM,
7-
..Default::default()
8-
})
5+
Transformer::new(
6+
"".as_ref(),
7+
&TransformOptions {
8+
env: EnvOptions {
9+
es2020: ES2020Options {
10+
export_namespace_from: true,
11+
..Default::default()
12+
},
13+
..Default::default()
14+
},
15+
..Default::default()
16+
},
17+
)
918
}

crates/swc_ecma_compat_es2020/src/lib.rs

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use serde::Deserialize;
22
use swc_common::Mark;
33
use swc_ecma_ast::Pass;
4-
use swc_ecma_compiler::{Compiler, Features};
4+
use swc_ecma_compiler::{ES2020Options, EnvOptions, TransformOptions, Transformer};
55
use swc_ecma_transforms_base::assumptions::Assumptions;
66

77
pub use self::{
@@ -19,11 +19,20 @@ pub fn es2020(config: Config, unresolved_mark: Mark) -> impl Pass {
1919

2020
(
2121
optional_chaining(config.optional_chaining, unresolved_mark),
22-
Compiler::new(swc_ecma_compiler::Config {
23-
includes: Features::EXPORT_NAMESPACE_FROM | Features::NULLISH_COALESCING,
24-
assumptions,
25-
..Default::default()
26-
}),
22+
Transformer::new(
23+
"".as_ref(),
24+
&TransformOptions {
25+
env: EnvOptions {
26+
es2020: ES2020Options {
27+
export_namespace_from: true,
28+
nullish_coalescing_operator: true,
29+
..Default::default()
30+
},
31+
..Default::default()
32+
},
33+
..Default::default()
34+
},
35+
),
2736
)
2837
}
2938

crates/swc_ecma_compat_es2020/src/nullish_coalescing.rs

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use serde::Deserialize;
22
use swc_ecma_ast::Pass;
3-
use swc_ecma_compiler::{Compiler, Features};
3+
use swc_ecma_compiler::{ES2020Options, EnvOptions, TransformOptions, Transformer};
44
use swc_ecma_transforms_base::assumptions::Assumptions;
55

66
/// Configuration for nullish coalescing transformation
@@ -18,9 +18,17 @@ pub fn nullish_coalescing(c: Config) -> impl Pass + 'static {
1818
let mut assumptions = Assumptions::default();
1919
assumptions.no_document_all = c.no_document_all;
2020

21-
Compiler::new(swc_ecma_compiler::Config {
22-
includes: Features::NULLISH_COALESCING,
23-
assumptions,
24-
..Default::default()
25-
})
21+
Transformer::new(
22+
"".as_ref(),
23+
&TransformOptions {
24+
env: EnvOptions {
25+
es2020: ES2020Options {
26+
nullish_coalescing_operator: true,
27+
..Default::default()
28+
},
29+
..Default::default()
30+
},
31+
..Default::default()
32+
},
33+
)
2634
}
Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,17 @@
11
use swc_ecma_ast::Pass;
2-
use swc_ecma_compiler::{Compiler, Features};
2+
use swc_ecma_compiler::{ES2021Options, EnvOptions, TransformOptions, Transformer};
33

44
pub fn logical_assignments() -> impl Pass {
5-
Compiler::new(swc_ecma_compiler::Config {
6-
includes: Features::LOGICAL_ASSIGNMENTS,
7-
..Default::default()
8-
})
5+
Transformer::new(
6+
"".as_ref(),
7+
&TransformOptions {
8+
env: EnvOptions {
9+
es2021: ES2021Options {
10+
logical_assignment_operators: true,
11+
},
12+
..Default::default()
13+
},
14+
..Default::default()
15+
},
16+
)
917
}

crates/swc_ecma_compat_es2022/src/lib.rs

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
use swc_common::Mark;
44
use swc_ecma_ast::Pass;
55
use swc_ecma_compat_common::regexp::{self, regexp};
6-
use swc_ecma_compiler::{Compiler, Features};
6+
use swc_ecma_compiler::{ES2022Options, EnvOptions, TransformOptions, Transformer};
77

88
pub use self::{
99
class_properties::class_properties, private_in_object::private_in_object,
@@ -27,10 +27,20 @@ pub fn es2022(config: Config, unresolved_mark: Mark) -> impl Pass {
2727
unicode_regex: false,
2828
unicode_sets_regex: false,
2929
}),
30-
Compiler::new(swc_ecma_compiler::Config {
31-
includes: Features::STATIC_BLOCKS | Features::PRIVATE_IN_OBJECT,
32-
..Default::default()
33-
}),
30+
Transformer::new(
31+
"".as_ref(),
32+
&TransformOptions {
33+
env: EnvOptions {
34+
es2022: ES2022Options {
35+
class_static_block: true,
36+
top_level_await: true,
37+
..Default::default()
38+
},
39+
..Default::default()
40+
},
41+
..Default::default()
42+
},
43+
),
3444
class_properties(config.class_properties, unresolved_mark),
3545
)
3646
}
Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,23 @@
11
use swc_ecma_ast::Pass;
2-
use swc_ecma_compiler::{Compiler, Features};
2+
use swc_ecma_compiler::{
3+
ClassPropertiesOptions, ES2022Options, EnvOptions, TransformOptions, Transformer,
4+
};
35

46
/// https://github.com/tc39/proposal-private-fields-in-in
57
pub fn private_in_object() -> impl Pass {
6-
Compiler::new(swc_ecma_compiler::Config {
7-
includes: Features::PRIVATE_IN_OBJECT,
8-
..Default::default()
9-
})
8+
Transformer::new(
9+
"".as_ref(),
10+
&TransformOptions {
11+
env: EnvOptions {
12+
es2022: ES2022Options {
13+
class_properties: Some(ClassPropertiesOptions {
14+
..Default::default()
15+
}),
16+
..Default::default()
17+
},
18+
..Default::default()
19+
},
20+
..Default::default()
21+
},
22+
)
1023
}
Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,18 @@
11
use swc_ecma_ast::*;
2-
use swc_ecma_compiler::{Compiler, Features};
2+
use swc_ecma_compiler::{ES2022Options, EnvOptions, TransformOptions, Transformer};
33

44
pub fn static_blocks() -> impl Pass {
5-
Compiler::new(swc_ecma_compiler::Config {
6-
includes: Features::STATIC_BLOCKS,
7-
..Default::default()
8-
})
5+
Transformer::new(
6+
"".as_ref(),
7+
&TransformOptions {
8+
env: EnvOptions {
9+
es2022: ES2022Options {
10+
class_static_block: true,
11+
..Default::default()
12+
},
13+
..Default::default()
14+
},
15+
..Default::default()
16+
},
17+
)
918
}

0 commit comments

Comments
 (0)