Skip to content

Commit 774b13c

Browse files
committed
w
1 parent 0f373e7 commit 774b13c

File tree

1 file changed

+44
-38
lines changed

1 file changed

+44
-38
lines changed

src/lib.rs

Lines changed: 44 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,11 @@ pub mod swc {
3535
use std::{path::Path, sync::Arc};
3636

3737
use swc::{try_with_handler, Compiler, PrintArgs, SwcComments};
38-
use swc_common::{source_map::SourceMap, sync::Lrc, Mark, GLOBALS};
38+
use swc_common::{errors::HANDLER, source_map::SourceMap, sync::Lrc, Mark, GLOBALS};
3939
use swc_ecma_parser::{EsSyntax, Parser, StringInput, Syntax, TsSyntax};
4040
use swc_ecma_transforms::{
4141
compat::{es2016, es2017, es2018, es2019, es2020, es2021, es2022},
42+
helpers::{Helpers, HELPERS},
4243
resolver,
4344
};
4445
use swc_ecma_transforms_react::{react, Options, Runtime};
@@ -59,48 +60,53 @@ pub mod swc {
5960
};
6061

6162
GLOBALS.set(&Default::default(), || {
62-
try_with_handler(cm.clone(), Default::default(), |_handler| {
63-
let input = StringInput::new(source_text, Default::default(), Default::default());
64-
let mut program = Parser::new(syntax, input, Some(&comments))
65-
.parse_program()
66-
.unwrap();
63+
try_with_handler(cm.clone(), Default::default(), |handler| {
64+
HELPERS.set(&Helpers::new(true), || {
65+
HANDLER.set(handler, || {
66+
let input =
67+
StringInput::new(source_text, Default::default(), Default::default());
68+
let mut program = Parser::new(syntax, input, Some(&comments))
69+
.parse_program()
70+
.unwrap();
6771

68-
let top_level_mark = Mark::new();
69-
let unresolved_mark = Mark::new();
72+
let top_level_mark = Mark::new();
73+
let unresolved_mark = Mark::new();
7074

71-
program.visit_mut_with(&mut resolver(
72-
unresolved_mark,
73-
top_level_mark,
74-
syntax.typescript(),
75-
));
75+
program.visit_mut_with(&mut resolver(
76+
unresolved_mark,
77+
top_level_mark,
78+
syntax.typescript(),
79+
));
7680

77-
let mut ast_pass = (
78-
strip(unresolved_mark, top_level_mark),
79-
react(
80-
Arc::clone(&cm),
81-
Some(comments),
82-
Options {
83-
runtime: Some(Runtime::Automatic),
84-
..Options::default()
85-
},
86-
top_level_mark,
87-
unresolved_mark,
88-
),
89-
es2022(Default::default(), unresolved_mark),
90-
es2021(),
91-
es2020(Default::default(), unresolved_mark),
92-
es2019(),
93-
es2018(Default::default()),
94-
es2017(Default::default(), unresolved_mark),
95-
es2016(),
96-
);
97-
let program = program.apply(&mut ast_pass);
81+
let mut ast_pass = (
82+
strip(unresolved_mark, top_level_mark),
83+
react(
84+
Arc::clone(&cm),
85+
Some(comments),
86+
Options {
87+
runtime: Some(Runtime::Automatic),
88+
..Options::default()
89+
},
90+
top_level_mark,
91+
unresolved_mark,
92+
),
93+
es2022(Default::default(), unresolved_mark),
94+
es2021(),
95+
es2020(Default::default(), unresolved_mark),
96+
es2019(),
97+
es2018(Default::default()),
98+
es2017(Default::default(), unresolved_mark),
99+
es2016(),
100+
);
101+
let program = program.apply(&mut ast_pass);
98102

99-
let printed = compiler
100-
.print(&program, PrintArgs::default())
101-
.expect("print failed");
103+
let printed = compiler
104+
.print(&program, PrintArgs::default())
105+
.expect("print failed");
102106

103-
Ok(printed.code)
107+
Ok(printed.code)
108+
})
109+
})
104110
})
105111
.unwrap()
106112
})

0 commit comments

Comments
 (0)