swc_ecma_transforms_base/
quote.rs

1/// Not a public api.
2#[doc(hidden)]
3#[macro_export]
4macro_rules! helper_expr {
5    (ts, $field_name:ident) => {{
6        $crate::helper_expr!(ts, ::swc_common::DUMMY_SP, $field_name)
7    }};
8
9    (ts, $span:expr, $field_name:ident) => {{
10        use swc_ecma_utils::{quote_ident, ExprFactory};
11
12        let mark = $crate::enable_helper!($field_name);
13        let ctxt = swc_common::SyntaxContext::empty().apply_mark(mark);
14
15        Expr::from(swc_ecma_utils::quote_ident!(
16            ctxt,
17            $span,
18            concat!("_", stringify!($field_name))
19        ))
20    }};
21
22    ($field_name:ident) => {{
23        $crate::helper_expr!(::swc_common::DUMMY_SP, $field_name)
24    }};
25
26    ($span:expr, $field_name:ident) => {{
27        use swc_ecma_utils::{quote_ident, ExprFactory};
28
29        let mark = $crate::enable_helper!($field_name);
30        let ctxt = swc_common::SyntaxContext::empty().apply_mark(mark);
31
32        Expr::from(swc_ecma_utils::quote_ident!(
33            ctxt,
34            $span,
35            concat!("_", stringify!($field_name))
36        ))
37    }};
38}
39
40/// Not a public api.
41#[doc(hidden)]
42#[macro_export]
43macro_rules! helper {
44    ($($t:tt)*) => {{
45        use swc_ecma_utils::ExprFactory;
46        $crate::helper_expr!($($t)*).as_callee()
47    }};
48}