use swc_ecma_parser::{Syntax, TsConfig}; use swc_ecma_transforms_compat::es2021; use swc_ecma_transforms_testing::test; use swc_ecma_visit::Fold; fn tr() -> impl Fold { es2021::logical_assignments() } fn syntax() -> Syntax { Syntax::Typescript(TsConfig { ..Default::default() }) } test!(syntax(), |_| tr(), logical_ident, "a ||= b", "a || (a = b)"); test!( syntax(), |_| tr(), logical_member, "a.b ||= b", " var _a; (_a = a).b || (_a.b = b); " ); test!( syntax(), |_| tr(), logical_super, " class Foo { method() { return super.f ||= b } } ", " class Foo { method() { return super.f || (super.f = b); } } " ); test!( syntax(), |_| tr(), nullish_ident, "a ??= b", "a ?? (a = b);" ); test!( syntax(), |_| tr(), nullish_member, "a.b ??= b", " var _a; (_a = a).b ?? (_a.b = b); " );