Skip to content

Commit a66849c

Browse files
committed
Removing box_patterns
1 parent 1e38f0a commit a66849c

File tree

16 files changed

+483
-330
lines changed

16 files changed

+483
-330
lines changed

ecmascript/transforms/src/compat/es2015/block_scoped_fn.rs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,11 @@ impl Fold for BlockScopedFns {
1414
let mut extra_stmts = Vec::with_capacity(items.len());
1515

1616
for stmt in items {
17-
match stmt {
18-
Stmt::Expr(ExprStmt {
19-
expr: box Expr::Lit(Lit::Str(..)),
20-
..
21-
}) => {
17+
if let Stmt::Expr(ExprStmt { ref expr, .. }) = stmt {
18+
if let Expr::Lit(Lit::Str(..)) = &**expr {
2219
stmts.push(stmt);
2320
continue;
2421
}
25-
_ => {}
2622
}
2723

2824
// This is to preserve function Class()

ecmascript/transforms/src/compat/es2015/classes.rs

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -286,10 +286,10 @@ impl Classes {
286286
let cnt_of_non_directive = stmts
287287
.iter()
288288
.filter(|stmt| match stmt {
289-
Stmt::Expr(ExprStmt {
290-
expr: box Expr::Lit(Lit::Str(..)),
291-
..
292-
}) => false,
289+
Stmt::Expr(ExprStmt { expr, .. }) => match &**expr {
290+
Expr::Lit(Lit::Str(..)) => false,
291+
_ => true,
292+
},
293293
_ => true,
294294
})
295295
.count();
@@ -582,10 +582,10 @@ impl Classes {
582582
&& stmts
583583
.iter()
584584
.filter(|stmt| match stmt {
585-
Stmt::Expr(ExprStmt {
586-
expr: box Expr::Lit(Lit::Str(..)),
587-
..
588-
}) => false,
585+
Stmt::Expr(ExprStmt { expr, .. }) => match &**expr {
586+
Expr::Lit(Lit::Str(..)) => false,
587+
_ => true,
588+
},
589589
_ => true,
590590
})
591591
.count()
@@ -884,14 +884,14 @@ fn is_always_initialized(body: &[Stmt]) -> bool {
884884
}
885885

886886
let pos = match body.iter().position(|s| match s {
887-
Stmt::Expr(ExprStmt {
888-
expr:
889-
box Expr::Call(CallExpr {
890-
callee: ExprOrSuper::Super(..),
891-
..
892-
}),
893-
..
894-
}) => true,
887+
Stmt::Expr(ExprStmt { expr, .. }) => match &**expr {
888+
Expr::Call(CallExpr {
889+
callee: ExprOrSuper::Super(..),
890+
..
891+
}) => true,
892+
893+
_ => false,
894+
},
895895
_ => false,
896896
}) {
897897
Some(pos) => pos,

ecmascript/transforms/src/compat/es2015/classes/constructor.rs

Lines changed: 61 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,14 @@ impl SuperCallFinder {
2222
/// - `Some(Assign)`: `_this = ...`
2323
pub fn find(node: &Vec<Stmt>) -> Option<SuperFoldingMode> {
2424
match node.last() {
25-
Some(Stmt::Expr(ExprStmt {
26-
expr:
27-
box Expr::Call(CallExpr {
28-
callee: ExprOrSuper::Super(..),
29-
..
30-
}),
31-
..
32-
})) => return None,
25+
Some(Stmt::Expr(ExprStmt { ref expr, .. })) => match &**expr {
26+
Expr::Call(CallExpr {
27+
callee: ExprOrSuper::Super(..),
28+
..
29+
}) => {
30+
return None;
31+
}
32+
},
3333
_ => {}
3434
}
3535

@@ -107,12 +107,16 @@ impl Visit for SuperCallFinder {
107107
e.visit_children_with(self);
108108

109109
match e.obj {
110-
ExprOrSuper::Expr(box Expr::Call(CallExpr {
111-
callee: ExprOrSuper::Super(..),
112-
..
113-
})) => {
114-
// super().foo
115-
self.mode = Some(SuperFoldingMode::Assign)
110+
ExprOrSuper::Expr(ref expr) => {
111+
match &**expr {
112+
Expr::Call(CallExpr {
113+
callee: ExprOrSuper::Super(..),
114+
..
115+
}) => {
116+
// super().foo
117+
self.mode = Some(SuperFoldingMode::Assign)
118+
}
119+
}
116120
}
117121
_ => {}
118122
}
@@ -233,49 +237,51 @@ impl Fold for ConstructorFolder<'_> {
233237
let stmt = stmt.fold_children_with(self);
234238

235239
match stmt {
236-
Stmt::Expr(ExprStmt {
237-
expr:
238-
box Expr::Call(CallExpr {
239-
callee: ExprOrSuper::Super(..),
240-
args,
241-
..
242-
}),
243-
..
244-
}) => {
245-
let expr = make_possible_return_value(ReturningMode::Prototype {
246-
is_constructor_default: self.is_constructor_default,
247-
class_name: self.class_name.clone(),
248-
args: Some(args),
249-
});
250-
251-
match self.mode {
252-
Some(SuperFoldingMode::Assign) => AssignExpr {
253-
span: DUMMY_SP,
254-
left: PatOrExpr::Pat(Box::new(Pat::Ident(quote_ident!(
255-
DUMMY_SP.apply_mark(self.mark),
256-
"_this"
257-
)))),
258-
op: op!("="),
259-
right: expr.into(),
260-
}
261-
.into_stmt(),
262-
Some(SuperFoldingMode::Var) => Stmt::Decl(Decl::Var(VarDecl {
263-
span: DUMMY_SP,
264-
declare: false,
265-
kind: VarDeclKind::Var,
266-
decls: vec![VarDeclarator {
240+
Stmt::Expr(ExprStmt { expr, .. }) => match *expr {
241+
Expr::Call(CallExpr {
242+
callee: ExprOrSuper::Super(..),
243+
args,
244+
..
245+
}) => {
246+
let expr = make_possible_return_value(ReturningMode::Prototype {
247+
is_constructor_default: self.is_constructor_default,
248+
class_name: self.class_name.clone(),
249+
args: Some(args),
250+
});
251+
252+
match self.mode {
253+
Some(SuperFoldingMode::Assign) => AssignExpr {
267254
span: DUMMY_SP,
268-
name: Pat::Ident(quote_ident!(DUMMY_SP.apply_mark(self.mark), "_this")),
269-
init: Some(expr.into()),
270-
definite: false,
271-
}],
272-
})),
273-
None => Stmt::Return(ReturnStmt {
274-
span: DUMMY_SP,
275-
arg: Some(expr.into()),
276-
}),
255+
left: PatOrExpr::Pat(Box::new(Pat::Ident(quote_ident!(
256+
DUMMY_SP.apply_mark(self.mark),
257+
"_this"
258+
)))),
259+
op: op!("="),
260+
right: expr.into(),
261+
}
262+
.into_stmt(),
263+
Some(SuperFoldingMode::Var) => Stmt::Decl(Decl::Var(VarDecl {
264+
span: DUMMY_SP,
265+
declare: false,
266+
kind: VarDeclKind::Var,
267+
decls: vec![VarDeclarator {
268+
span: DUMMY_SP,
269+
name: Pat::Ident(quote_ident!(
270+
DUMMY_SP.apply_mark(self.mark),
271+
"_this"
272+
)),
273+
init: Some(expr.into()),
274+
definite: false,
275+
}],
276+
})),
277+
None => Stmt::Return(ReturnStmt {
278+
span: DUMMY_SP,
279+
arg: Some(expr.into()),
280+
}),
281+
}
277282
}
278-
}
283+
_ => stmt,
284+
},
279285
_ => stmt,
280286
}
281287
}

ecmascript/transforms/src/compat/es2015/classes/super_field.rs

Lines changed: 54 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use super::get_prototype_of;
22
use crate::util::{alias_ident_for, is_rest_arguments, ExprFactory};
33
use std::iter;
44
use swc_atoms::js_word;
5-
use swc_common::{Mark, Span, Spanned, DUMMY_SP};
5+
use swc_common::{Mark, Span, DUMMY_SP};
66
use swc_ecma_ast::*;
77
use swc_ecma_utils::quote_ident;
88
use swc_ecma_visit::{Fold, FoldWith};
@@ -141,30 +141,46 @@ impl<'a> Fold for SuperCalleeFolder<'a> {
141141
left,
142142
op,
143143
right,
144-
}) => match left {
145-
PatOrExpr::Expr(box Expr::Member(MemberExpr {
146-
obj:
147-
ExprOrSuper::Super(Super {
148-
span: super_token, ..
149-
}),
150-
prop,
151-
..
152-
}))
153-
| PatOrExpr::Pat(box Pat::Expr(box Expr::Member(MemberExpr {
154-
obj:
155-
ExprOrSuper::Super(Super {
156-
span: super_token, ..
157-
}),
158-
prop,
159-
..
160-
}))) => self.super_to_set_call(super_token, false, prop, op, right),
161-
_ => Expr::Assign(AssignExpr {
144+
}) => {
145+
//
146+
if let PatOrExpr::Expr(expr) = left {
147+
match *expr {
148+
Expr::Member(MemberExpr {
149+
obj:
150+
ExprOrSuper::Super(Super {
151+
span: super_token, ..
152+
}),
153+
prop,
154+
..
155+
}) => {
156+
return self.super_to_set_call(super_token, false, prop, op, right);
157+
}
158+
}
159+
}
160+
if let PatOrExpr::Pat(pat) = left {
161+
match *pat {
162+
Pat::Expr(expr) => match *expr {
163+
Expr::Member(MemberExpr {
164+
obj:
165+
ExprOrSuper::Super(Super {
166+
span: super_token, ..
167+
}),
168+
prop,
169+
..
170+
}) => {
171+
return self.super_to_set_call(super_token, false, prop, op, right);
172+
}
173+
},
174+
}
175+
}
176+
177+
Expr::Assign(AssignExpr {
162178
span,
163179
left: left.fold_children_with(self),
164180
op,
165181
right: right.fold_children_with(self),
166-
}),
167-
},
182+
})
183+
}
168184
_ => n.fold_children_with(self),
169185
};
170186

@@ -389,14 +405,13 @@ impl<'a> Fold for SuperFieldAccessFolder<'a> {
389405
fn fold_expr(&mut self, n: Expr) -> Expr {
390406
// We pretend method folding mode for while folding injected `_defineProperty`
391407
// calls.
392-
if n.span().is_dummy() {
393-
match n {
394-
Expr::Call(CallExpr {
395-
callee:
396-
ExprOrSuper::Expr(box Expr::Ident(Ident {
397-
sym: js_word!("_defineProperty"),
398-
..
399-
})),
408+
match n {
409+
Expr::Call(CallExpr {
410+
callee: ExprOrSuper::Expr(expr),
411+
..
412+
}) => match *expr {
413+
Expr::Ident(Ident {
414+
sym: js_word!("_defineProperty"),
400415
..
401416
}) => {
402417
let old = self.in_injected_define_property_call;
@@ -406,7 +421,8 @@ impl<'a> Fold for SuperFieldAccessFolder<'a> {
406421
return n;
407422
}
408423
_ => {}
409-
}
424+
},
425+
_ => {}
410426
}
411427

412428
let mut callee_folder = SuperCalleeFolder {
@@ -422,13 +438,15 @@ impl<'a> Fold for SuperFieldAccessFolder<'a> {
422438

423439
let should_invoke_call = match n {
424440
Expr::Call(CallExpr {
425-
callee:
426-
ExprOrSuper::Expr(box Expr::Member(MemberExpr {
427-
obj: ExprOrSuper::Super(..),
428-
..
429-
})),
441+
callee: ExprOrSuper::Expr(ref expr),
430442
..
431-
}) => true,
443+
}) => match &**expr {
444+
Expr::Member(MemberExpr {
445+
obj: ExprOrSuper::Super(..),
446+
..
447+
}) => true,
448+
_ => false,
449+
},
432450
_ => false,
433451
};
434452

ecmascript/transforms/src/compat/es2015/computed_props.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ impl Fold for ObjectLitFolder {
9595
let span = prop.span();
9696

9797
let (key, value) = match prop {
98-
PropOrSpread::Prop(box prop) => match prop {
98+
PropOrSpread::Prop(prop) => match *prop {
9999
Prop::Shorthand(ident) => (
100100
Expr::Lit(Lit::Str(Str {
101101
span: ident.span,

0 commit comments

Comments
 (0)