@@ -35,10 +35,11 @@ pub mod swc {
35
35
use std:: { path:: Path , sync:: Arc } ;
36
36
37
37
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 } ;
39
39
use swc_ecma_parser:: { EsSyntax , Parser , StringInput , Syntax , TsSyntax } ;
40
40
use swc_ecma_transforms:: {
41
41
compat:: { es2016, es2017, es2018, es2019, es2020, es2021, es2022} ,
42
+ helpers:: { Helpers , HELPERS } ,
42
43
resolver,
43
44
} ;
44
45
use swc_ecma_transforms_react:: { react, Options , Runtime } ;
@@ -59,48 +60,53 @@ pub mod swc {
59
60
} ;
60
61
61
62
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 ( ) ;
67
71
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 ( ) ;
70
74
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
+ ) ) ;
76
80
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) ;
98
102
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" ) ;
102
106
103
- Ok ( printed. code )
107
+ Ok ( printed. code )
108
+ } )
109
+ } )
104
110
} )
105
111
. unwrap ( )
106
112
} )
0 commit comments