swc_ecma_transforms_typescript/
utils.rs

1use swc_common::DUMMY_SP;
2use swc_ecma_ast::*;
3use swc_ecma_utils::ExprFactory;
4
5///
6/// this.prop = value
7pub(crate) fn assign_value_to_this_prop(prop_name: PropName, value: Expr) -> Box<Expr> {
8    let target = MemberExpr {
9        obj: ThisExpr { span: DUMMY_SP }.into(),
10        span: DUMMY_SP,
11        prop: prop_name.into(),
12    };
13
14    let expr = value.make_assign_to(op!("="), target.into());
15
16    Box::new(expr)
17}
18
19/// this.#prop = value
20pub(crate) fn assign_value_to_this_private_prop(
21    private_name: PrivateName,
22    value: Expr,
23) -> Box<Expr> {
24    let target = MemberExpr {
25        obj: ThisExpr { span: DUMMY_SP }.into(),
26        span: DUMMY_SP,
27        prop: MemberProp::PrivateName(private_name),
28    };
29
30    let expr = value.make_assign_to(op!("="), target.into());
31
32    Box::new(expr)
33}
34
35pub(crate) struct Factory;
36
37impl Factory {
38    pub(crate) fn function(params: Vec<Param>, body: BlockStmt) -> Function {
39        Function {
40            params,
41            decorators: Default::default(),
42            span: DUMMY_SP,
43            body: Some(body),
44            is_generator: false,
45            is_async: false,
46            ..Default::default()
47        }
48    }
49}