swc_ecma_compat_es2018/
object_rest_spread.rs

1use serde::Deserialize;
2use swc_ecma_ast::Pass;
3use swc_ecma_visit::visit_mut_pass;
4
5use crate::{object_rest::ObjectRest, object_spread::ObjectSpread};
6
7// TODO: currently swc behaves like babel with
8// `ignoreFunctionLength` on
9
10/// `@babel/plugin-proposal-object-rest-spread`
11pub fn object_rest_spread(config: Config) -> impl Pass {
12    (
13        visit_mut_pass(ObjectRest {
14            config,
15            ..Default::default()
16        }),
17        visit_mut_pass(ObjectSpread { config }),
18    )
19}
20
21#[derive(Debug, Clone, Copy, Default, Deserialize)]
22#[serde(rename_all = "camelCase")]
23pub struct Config {
24    #[serde(default)]
25    pub no_symbol: bool,
26    #[serde(default)]
27    pub set_property: bool,
28    #[serde(default)]
29    pub pure_getters: bool,
30}