Skip to content

Commit 57ad722

Browse files
authoredMay 18, 2023
fix(es/parser): Fix parsing of > in typescript mode (#7407)
**Related issue:** - Closes #7403.
1 parent 9440f4b commit 57ad722

25 files changed

+1251
-15
lines changed
 

‎crates/swc_ecma_parser/src/lexer/mod.rs

+9
Original file line numberDiff line numberDiff line change
@@ -637,6 +637,15 @@ impl<'a> Lexer<'a> {
637637
let c = self.cur().unwrap();
638638
self.bump();
639639

640+
if self.syntax.typescript() && self.ctx.in_type && !self.ctx.should_not_lex_lt_or_gt_as_type
641+
{
642+
if c == '<' {
643+
return Ok(Some(tok!('<')));
644+
} else if c == '>' {
645+
return Ok(Some(tok!('>')));
646+
}
647+
}
648+
640649
// XML style comment. `<!--`
641650
if c == '<' && self.is(b'!') && self.peek() == Some('-') && self.peek_ahead() == Some('-') {
642651
self.skip_line_comment(3);

‎crates/swc_ecma_parser/src/lexer/state.rs

+2-12
Original file line numberDiff line numberDiff line change
@@ -217,8 +217,8 @@ impl<'a> Iterator for Lexer<'a> {
217217
start = self.input.cur_pos();
218218
};
219219

220-
let c = match self.input.cur() {
221-
Some(c) => c,
220+
match self.input.cur() {
221+
Some(..) => {}
222222
// End of input.
223223
None => {
224224
if let Some(comments) = self.comments.as_mut() {
@@ -324,16 +324,6 @@ impl<'a> Iterator for Lexer<'a> {
324324
return self.read_tmpl_token(start_pos_of_tpl).map(Some);
325325
}
326326

327-
if self.syntax.typescript() && self.ctx.in_type {
328-
if c == '<' {
329-
self.input.bump();
330-
return Ok(Some(tok!('<')));
331-
} else if c == '>' {
332-
self.input.bump();
333-
return Ok(Some(tok!('>')));
334-
}
335-
}
336-
337327
self.read_token()
338328
})();
339329

‎crates/swc_ecma_parser/src/lib.rs

+2
Original file line numberDiff line numberDiff line change
@@ -383,6 +383,8 @@ pub struct Context {
383383

384384
in_type: bool,
385385
/// Typescript extension.
386+
should_not_lex_lt_or_gt_as_type: bool,
387+
/// Typescript extension.
386388
in_declare: bool,
387389

388390
/// If true, `:` should not be treated as a type annotation.

‎crates/swc_ecma_parser/src/parser/expr.rs

+37-2
Original file line numberDiff line numberDiff line change
@@ -565,6 +565,15 @@ impl<I: Tokens> Parser<I> {
565565
/// `is_new_expr`: true iff we are parsing production 'NewExpression'.
566566
#[cfg_attr(feature = "debug", tracing::instrument(skip_all))]
567567
fn parse_member_expr_or_new_expr(&mut self, is_new_expr: bool) -> PResult<Box<Expr>> {
568+
let ctx = Context {
569+
should_not_lex_lt_or_gt_as_type: true,
570+
..self.ctx()
571+
};
572+
self.with_ctx(ctx)
573+
.parse_member_expr_or_new_expr_inner(is_new_expr)
574+
}
575+
576+
fn parse_member_expr_or_new_expr_inner(&mut self, is_new_expr: bool) -> PResult<Box<Expr>> {
568577
trace_cur!(self, parse_member_expr_or_new_expr);
569578

570579
let start = cur_pos!(self);
@@ -622,7 +631,12 @@ impl<I: Tokens> Parser<I> {
622631

623632
let type_args = if self.input.syntax().typescript() && is!(self, '<') {
624633
self.try_parse_ts(|p| {
625-
let args = p.parse_ts_type_args()?;
634+
let ctx = Context {
635+
should_not_lex_lt_or_gt_as_type: false,
636+
..p.ctx()
637+
};
638+
639+
let args = p.with_ctx(ctx).parse_ts_type_args()?;
626640
if !is!(p, '(') {
627641
// This will fail
628642
expect!(p, '(');
@@ -680,6 +694,7 @@ impl<I: Tokens> Parser<I> {
680694
None
681695
};
682696
let obj = if let Some(type_args) = type_args {
697+
trace_cur!(self, parse_member_expr_or_new_expr__with_type_args);
683698
Box::new(Expr::TsInstantiation(TsInstantiation {
684699
expr: obj,
685700
type_args,
@@ -1102,6 +1117,7 @@ impl<I: Tokens> Parser<I> {
11021117
})
11031118
}
11041119

1120+
#[cfg_attr(feature = "debug", tracing::instrument(skip_all))]
11051121
pub(super) fn parse_subscripts(
11061122
&mut self,
11071123
mut obj: Callee,
@@ -1118,13 +1134,15 @@ impl<I: Tokens> Parser<I> {
11181134
}
11191135

11201136
/// returned bool is true if this method should be called again.
1137+
#[cfg_attr(feature = "debug", tracing::instrument(skip_all))]
11211138
fn parse_subscript(
11221139
&mut self,
11231140
start: BytePos,
11241141
mut obj: Callee,
11251142
no_call: bool,
11261143
no_computed_member: bool,
11271144
) -> PResult<(Box<Expr>, bool)> {
1145+
trace_cur!(self, parse_subscript);
11281146
let _ = cur!(self, false);
11291147

11301148
if self.input.syntax().typescript() {
@@ -1169,7 +1187,11 @@ impl<I: Tokens> Parser<I> {
11691187

11701188
let mut_obj_opt = &mut obj_opt;
11711189

1172-
let result = self.try_parse_ts(|p| {
1190+
let ctx: Context = Context {
1191+
should_not_lex_lt_or_gt_as_type: true,
1192+
..self.ctx()
1193+
};
1194+
let result = self.with_ctx(ctx).try_parse_ts(|p| {
11731195
if !no_call
11741196
&& p.at_possible_async(match &mut_obj_opt {
11751197
Some(Callee::Expr(ref expr)) => expr,
@@ -1210,6 +1232,18 @@ impl<I: Tokens> Parser<I> {
12101232
)
12111233
.map(|expr| (Box::new(Expr::TaggedTpl(expr)), true))
12121234
.map(Some)
1235+
} else if is!(p, '=') {
1236+
Ok(Some((
1237+
Box::new(Expr::TsInstantiation(TsInstantiation {
1238+
span: span!(p, start),
1239+
expr: match mut_obj_opt {
1240+
Some(Callee::Expr(obj)) => obj.take(),
1241+
_ => unreachable!(),
1242+
},
1243+
type_args,
1244+
})),
1245+
true,
1246+
)))
12131247
} else if no_call {
12141248
unexpected!(p, "`")
12151249
} else {
@@ -1500,6 +1534,7 @@ impl<I: Tokens> Parser<I> {
15001534
}
15011535

15021536
/// Parse call, dot, and `[]`-subscript expressions.
1537+
#[cfg_attr(feature = "debug", tracing::instrument(skip_all))]
15031538
pub(super) fn parse_lhs_expr(&mut self) -> PResult<Box<Expr>> {
15041539
trace_cur!(self, parse_lhs_expr);
15051540

‎crates/swc_ecma_parser/src/parser/typescript.rs

+7-1
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,11 @@ impl<I: Tokens> Parser<I> {
231231
let type_name = self.parse_ts_entity_name(/* allow_reserved_words */ true)?;
232232
trace_cur!(self, parse_ts_type_ref__type_args);
233233
let type_params = if !self.input.had_line_break_before_cur() && is!(self, '<') {
234-
Some(self.parse_ts_type_args()?)
234+
let ctx = Context {
235+
should_not_lex_lt_or_gt_as_type: false,
236+
..self.ctx()
237+
};
238+
Some(self.with_ctx(ctx).parse_ts_type_args()?)
235239
} else {
236240
None
237241
};
@@ -568,7 +572,9 @@ impl<I: Tokens> Parser<I> {
568572
}
569573
}
570574

575+
#[cfg_attr(feature = "debug", tracing::instrument(skip_all))]
571576
pub(super) fn try_parse_ts_type_args(&mut self) -> Option<Box<TsTypeParamInstantiation>> {
577+
trace_cur!(self, try_parse_ts_type_args);
572578
debug_assert!(self.input.syntax().typescript());
573579

574580
self.try_parse_ts(|p| {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
fn(z<Number, Object>(y))
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
{
2+
"type": "Script",
3+
"span": {
4+
"start": 1,
5+
"end": 25,
6+
"ctxt": 0
7+
},
8+
"body": [
9+
{
10+
"type": "ExpressionStatement",
11+
"span": {
12+
"start": 1,
13+
"end": 25,
14+
"ctxt": 0
15+
},
16+
"expression": {
17+
"type": "CallExpression",
18+
"span": {
19+
"start": 1,
20+
"end": 25,
21+
"ctxt": 0
22+
},
23+
"callee": {
24+
"type": "Identifier",
25+
"span": {
26+
"start": 1,
27+
"end": 3,
28+
"ctxt": 0
29+
},
30+
"value": "fn",
31+
"optional": false
32+
},
33+
"arguments": [
34+
{
35+
"spread": null,
36+
"expression": {
37+
"type": "CallExpression",
38+
"span": {
39+
"start": 4,
40+
"end": 24,
41+
"ctxt": 0
42+
},
43+
"callee": {
44+
"type": "Identifier",
45+
"span": {
46+
"start": 4,
47+
"end": 5,
48+
"ctxt": 0
49+
},
50+
"value": "z",
51+
"optional": false
52+
},
53+
"arguments": [
54+
{
55+
"spread": null,
56+
"expression": {
57+
"type": "Identifier",
58+
"span": {
59+
"start": 22,
60+
"end": 23,
61+
"ctxt": 0
62+
},
63+
"value": "y",
64+
"optional": false
65+
}
66+
}
67+
],
68+
"typeArguments": {
69+
"type": "TsTypeParameterInstantiation",
70+
"span": {
71+
"start": 5,
72+
"end": 21,
73+
"ctxt": 0
74+
},
75+
"params": [
76+
{
77+
"type": "TsTypeReference",
78+
"span": {
79+
"start": 6,
80+
"end": 12,
81+
"ctxt": 0
82+
},
83+
"typeName": {
84+
"type": "Identifier",
85+
"span": {
86+
"start": 6,
87+
"end": 12,
88+
"ctxt": 0
89+
},
90+
"value": "Number",
91+
"optional": false
92+
},
93+
"typeParams": null
94+
},
95+
{
96+
"type": "TsTypeReference",
97+
"span": {
98+
"start": 14,
99+
"end": 20,
100+
"ctxt": 0
101+
},
102+
"typeName": {
103+
"type": "Identifier",
104+
"span": {
105+
"start": 14,
106+
"end": 20,
107+
"ctxt": 0
108+
},
109+
"value": "Object",
110+
"optional": false
111+
},
112+
"typeParams": null
113+
}
114+
]
115+
}
116+
}
117+
}
118+
],
119+
"typeArguments": null
120+
}
121+
}
122+
],
123+
"interpreter": null
124+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
fn(x < y, x < y, x >>>= y)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
{
2+
"type": "Script",
3+
"span": {
4+
"start": 1,
5+
"end": 27,
6+
"ctxt": 0
7+
},
8+
"body": [
9+
{
10+
"type": "ExpressionStatement",
11+
"span": {
12+
"start": 1,
13+
"end": 27,
14+
"ctxt": 0
15+
},
16+
"expression": {
17+
"type": "CallExpression",
18+
"span": {
19+
"start": 1,
20+
"end": 27,
21+
"ctxt": 0
22+
},
23+
"callee": {
24+
"type": "Identifier",
25+
"span": {
26+
"start": 1,
27+
"end": 3,
28+
"ctxt": 0
29+
},
30+
"value": "fn",
31+
"optional": false
32+
},
33+
"arguments": [
34+
{
35+
"spread": null,
36+
"expression": {
37+
"type": "BinaryExpression",
38+
"span": {
39+
"start": 4,
40+
"end": 9,
41+
"ctxt": 0
42+
},
43+
"operator": "<",
44+
"left": {
45+
"type": "Identifier",
46+
"span": {
47+
"start": 4,
48+
"end": 5,
49+
"ctxt": 0
50+
},
51+
"value": "x",
52+
"optional": false
53+
},
54+
"right": {
55+
"type": "Identifier",
56+
"span": {
57+
"start": 8,
58+
"end": 9,
59+
"ctxt": 0
60+
},
61+
"value": "y",
62+
"optional": false
63+
}
64+
}
65+
},
66+
{
67+
"spread": null,
68+
"expression": {
69+
"type": "BinaryExpression",
70+
"span": {
71+
"start": 11,
72+
"end": 16,
73+
"ctxt": 0
74+
},
75+
"operator": "<",
76+
"left": {
77+
"type": "Identifier",
78+
"span": {
79+
"start": 11,
80+
"end": 12,
81+
"ctxt": 0
82+
},
83+
"value": "x",
84+
"optional": false
85+
},
86+
"right": {
87+
"type": "Identifier",
88+
"span": {
89+
"start": 15,
90+
"end": 16,
91+
"ctxt": 0
92+
},
93+
"value": "y",
94+
"optional": false
95+
}
96+
}
97+
},
98+
{
99+
"spread": null,
100+
"expression": {
101+
"type": "AssignmentExpression",
102+
"span": {
103+
"start": 18,
104+
"end": 26,
105+
"ctxt": 0
106+
},
107+
"operator": ">>>=",
108+
"left": {
109+
"type": "Identifier",
110+
"span": {
111+
"start": 18,
112+
"end": 19,
113+
"ctxt": 0
114+
},
115+
"value": "x",
116+
"optional": false,
117+
"typeAnnotation": null
118+
},
119+
"right": {
120+
"type": "Identifier",
121+
"span": {
122+
"start": 25,
123+
"end": 26,
124+
"ctxt": 0
125+
},
126+
"value": "y",
127+
"optional": false
128+
}
129+
}
130+
}
131+
],
132+
"typeArguments": null
133+
}
134+
}
135+
],
136+
"interpreter": null
137+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
fn(z<Number, Object> = y)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
{
2+
"type": "Script",
3+
"span": {
4+
"start": 1,
5+
"end": 26,
6+
"ctxt": 0
7+
},
8+
"body": [
9+
{
10+
"type": "ExpressionStatement",
11+
"span": {
12+
"start": 1,
13+
"end": 26,
14+
"ctxt": 0
15+
},
16+
"expression": {
17+
"type": "CallExpression",
18+
"span": {
19+
"start": 1,
20+
"end": 26,
21+
"ctxt": 0
22+
},
23+
"callee": {
24+
"type": "Identifier",
25+
"span": {
26+
"start": 1,
27+
"end": 3,
28+
"ctxt": 0
29+
},
30+
"value": "fn",
31+
"optional": false
32+
},
33+
"arguments": [
34+
{
35+
"spread": null,
36+
"expression": {
37+
"type": "AssignmentExpression",
38+
"span": {
39+
"start": 4,
40+
"end": 25,
41+
"ctxt": 0
42+
},
43+
"operator": "=",
44+
"left": {
45+
"type": "TsInstantiation",
46+
"span": {
47+
"start": 4,
48+
"end": 21,
49+
"ctxt": 0
50+
},
51+
"expression": {
52+
"type": "Identifier",
53+
"span": {
54+
"start": 4,
55+
"end": 5,
56+
"ctxt": 0
57+
},
58+
"value": "z",
59+
"optional": false
60+
},
61+
"typeArguments": {
62+
"type": "TsTypeParameterInstantiation",
63+
"span": {
64+
"start": 5,
65+
"end": 21,
66+
"ctxt": 0
67+
},
68+
"params": [
69+
{
70+
"type": "TsTypeReference",
71+
"span": {
72+
"start": 6,
73+
"end": 12,
74+
"ctxt": 0
75+
},
76+
"typeName": {
77+
"type": "Identifier",
78+
"span": {
79+
"start": 6,
80+
"end": 12,
81+
"ctxt": 0
82+
},
83+
"value": "Number",
84+
"optional": false
85+
},
86+
"typeParams": null
87+
},
88+
{
89+
"type": "TsTypeReference",
90+
"span": {
91+
"start": 14,
92+
"end": 20,
93+
"ctxt": 0
94+
},
95+
"typeName": {
96+
"type": "Identifier",
97+
"span": {
98+
"start": 14,
99+
"end": 20,
100+
"ctxt": 0
101+
},
102+
"value": "Object",
103+
"optional": false
104+
},
105+
"typeParams": null
106+
}
107+
]
108+
}
109+
},
110+
"right": {
111+
"type": "Identifier",
112+
"span": {
113+
"start": 24,
114+
"end": 25,
115+
"ctxt": 0
116+
},
117+
"value": "y",
118+
"optional": false
119+
}
120+
}
121+
}
122+
],
123+
"typeArguments": null
124+
}
125+
}
126+
],
127+
"interpreter": null
128+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
fn(x < y, x > y)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
{
2+
"type": "Script",
3+
"span": {
4+
"start": 1,
5+
"end": 17,
6+
"ctxt": 0
7+
},
8+
"body": [
9+
{
10+
"type": "ExpressionStatement",
11+
"span": {
12+
"start": 1,
13+
"end": 17,
14+
"ctxt": 0
15+
},
16+
"expression": {
17+
"type": "CallExpression",
18+
"span": {
19+
"start": 1,
20+
"end": 17,
21+
"ctxt": 0
22+
},
23+
"callee": {
24+
"type": "Identifier",
25+
"span": {
26+
"start": 1,
27+
"end": 3,
28+
"ctxt": 0
29+
},
30+
"value": "fn",
31+
"optional": false
32+
},
33+
"arguments": [
34+
{
35+
"spread": null,
36+
"expression": {
37+
"type": "BinaryExpression",
38+
"span": {
39+
"start": 4,
40+
"end": 9,
41+
"ctxt": 0
42+
},
43+
"operator": "<",
44+
"left": {
45+
"type": "Identifier",
46+
"span": {
47+
"start": 4,
48+
"end": 5,
49+
"ctxt": 0
50+
},
51+
"value": "x",
52+
"optional": false
53+
},
54+
"right": {
55+
"type": "Identifier",
56+
"span": {
57+
"start": 8,
58+
"end": 9,
59+
"ctxt": 0
60+
},
61+
"value": "y",
62+
"optional": false
63+
}
64+
}
65+
},
66+
{
67+
"spread": null,
68+
"expression": {
69+
"type": "BinaryExpression",
70+
"span": {
71+
"start": 11,
72+
"end": 16,
73+
"ctxt": 0
74+
},
75+
"operator": ">",
76+
"left": {
77+
"type": "Identifier",
78+
"span": {
79+
"start": 11,
80+
"end": 12,
81+
"ctxt": 0
82+
},
83+
"value": "x",
84+
"optional": false
85+
},
86+
"right": {
87+
"type": "Identifier",
88+
"span": {
89+
"start": 15,
90+
"end": 16,
91+
"ctxt": 0
92+
},
93+
"value": "y",
94+
"optional": false
95+
}
96+
}
97+
}
98+
],
99+
"typeArguments": null
100+
}
101+
}
102+
],
103+
"interpreter": null
104+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
fn(x < y, x >= y)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
{
2+
"type": "Script",
3+
"span": {
4+
"start": 1,
5+
"end": 18,
6+
"ctxt": 0
7+
},
8+
"body": [
9+
{
10+
"type": "ExpressionStatement",
11+
"span": {
12+
"start": 1,
13+
"end": 18,
14+
"ctxt": 0
15+
},
16+
"expression": {
17+
"type": "CallExpression",
18+
"span": {
19+
"start": 1,
20+
"end": 18,
21+
"ctxt": 0
22+
},
23+
"callee": {
24+
"type": "Identifier",
25+
"span": {
26+
"start": 1,
27+
"end": 3,
28+
"ctxt": 0
29+
},
30+
"value": "fn",
31+
"optional": false
32+
},
33+
"arguments": [
34+
{
35+
"spread": null,
36+
"expression": {
37+
"type": "BinaryExpression",
38+
"span": {
39+
"start": 4,
40+
"end": 9,
41+
"ctxt": 0
42+
},
43+
"operator": "<",
44+
"left": {
45+
"type": "Identifier",
46+
"span": {
47+
"start": 4,
48+
"end": 5,
49+
"ctxt": 0
50+
},
51+
"value": "x",
52+
"optional": false
53+
},
54+
"right": {
55+
"type": "Identifier",
56+
"span": {
57+
"start": 8,
58+
"end": 9,
59+
"ctxt": 0
60+
},
61+
"value": "y",
62+
"optional": false
63+
}
64+
}
65+
},
66+
{
67+
"spread": null,
68+
"expression": {
69+
"type": "BinaryExpression",
70+
"span": {
71+
"start": 11,
72+
"end": 17,
73+
"ctxt": 0
74+
},
75+
"operator": ">=",
76+
"left": {
77+
"type": "Identifier",
78+
"span": {
79+
"start": 11,
80+
"end": 12,
81+
"ctxt": 0
82+
},
83+
"value": "x",
84+
"optional": false
85+
},
86+
"right": {
87+
"type": "Identifier",
88+
"span": {
89+
"start": 16,
90+
"end": 17,
91+
"ctxt": 0
92+
},
93+
"value": "y",
94+
"optional": false
95+
}
96+
}
97+
}
98+
],
99+
"typeArguments": null
100+
}
101+
}
102+
],
103+
"interpreter": null
104+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
fn(x < y, x >> y)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
{
2+
"type": "Script",
3+
"span": {
4+
"start": 1,
5+
"end": 18,
6+
"ctxt": 0
7+
},
8+
"body": [
9+
{
10+
"type": "ExpressionStatement",
11+
"span": {
12+
"start": 1,
13+
"end": 18,
14+
"ctxt": 0
15+
},
16+
"expression": {
17+
"type": "CallExpression",
18+
"span": {
19+
"start": 1,
20+
"end": 18,
21+
"ctxt": 0
22+
},
23+
"callee": {
24+
"type": "Identifier",
25+
"span": {
26+
"start": 1,
27+
"end": 3,
28+
"ctxt": 0
29+
},
30+
"value": "fn",
31+
"optional": false
32+
},
33+
"arguments": [
34+
{
35+
"spread": null,
36+
"expression": {
37+
"type": "BinaryExpression",
38+
"span": {
39+
"start": 4,
40+
"end": 9,
41+
"ctxt": 0
42+
},
43+
"operator": "<",
44+
"left": {
45+
"type": "Identifier",
46+
"span": {
47+
"start": 4,
48+
"end": 5,
49+
"ctxt": 0
50+
},
51+
"value": "x",
52+
"optional": false
53+
},
54+
"right": {
55+
"type": "Identifier",
56+
"span": {
57+
"start": 8,
58+
"end": 9,
59+
"ctxt": 0
60+
},
61+
"value": "y",
62+
"optional": false
63+
}
64+
}
65+
},
66+
{
67+
"spread": null,
68+
"expression": {
69+
"type": "BinaryExpression",
70+
"span": {
71+
"start": 11,
72+
"end": 17,
73+
"ctxt": 0
74+
},
75+
"operator": ">>",
76+
"left": {
77+
"type": "Identifier",
78+
"span": {
79+
"start": 11,
80+
"end": 12,
81+
"ctxt": 0
82+
},
83+
"value": "x",
84+
"optional": false
85+
},
86+
"right": {
87+
"type": "Identifier",
88+
"span": {
89+
"start": 16,
90+
"end": 17,
91+
"ctxt": 0
92+
},
93+
"value": "y",
94+
"optional": false
95+
}
96+
}
97+
}
98+
],
99+
"typeArguments": null
100+
}
101+
}
102+
],
103+
"interpreter": null
104+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
fn(x < y, x >>= y)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
{
2+
"type": "Script",
3+
"span": {
4+
"start": 1,
5+
"end": 19,
6+
"ctxt": 0
7+
},
8+
"body": [
9+
{
10+
"type": "ExpressionStatement",
11+
"span": {
12+
"start": 1,
13+
"end": 19,
14+
"ctxt": 0
15+
},
16+
"expression": {
17+
"type": "CallExpression",
18+
"span": {
19+
"start": 1,
20+
"end": 19,
21+
"ctxt": 0
22+
},
23+
"callee": {
24+
"type": "Identifier",
25+
"span": {
26+
"start": 1,
27+
"end": 3,
28+
"ctxt": 0
29+
},
30+
"value": "fn",
31+
"optional": false
32+
},
33+
"arguments": [
34+
{
35+
"spread": null,
36+
"expression": {
37+
"type": "BinaryExpression",
38+
"span": {
39+
"start": 4,
40+
"end": 9,
41+
"ctxt": 0
42+
},
43+
"operator": "<",
44+
"left": {
45+
"type": "Identifier",
46+
"span": {
47+
"start": 4,
48+
"end": 5,
49+
"ctxt": 0
50+
},
51+
"value": "x",
52+
"optional": false
53+
},
54+
"right": {
55+
"type": "Identifier",
56+
"span": {
57+
"start": 8,
58+
"end": 9,
59+
"ctxt": 0
60+
},
61+
"value": "y",
62+
"optional": false
63+
}
64+
}
65+
},
66+
{
67+
"spread": null,
68+
"expression": {
69+
"type": "AssignmentExpression",
70+
"span": {
71+
"start": 11,
72+
"end": 18,
73+
"ctxt": 0
74+
},
75+
"operator": ">>=",
76+
"left": {
77+
"type": "Identifier",
78+
"span": {
79+
"start": 11,
80+
"end": 12,
81+
"ctxt": 0
82+
},
83+
"value": "x",
84+
"optional": false,
85+
"typeAnnotation": null
86+
},
87+
"right": {
88+
"type": "Identifier",
89+
"span": {
90+
"start": 17,
91+
"end": 18,
92+
"ctxt": 0
93+
},
94+
"value": "y",
95+
"optional": false
96+
}
97+
}
98+
}
99+
],
100+
"typeArguments": null
101+
}
102+
}
103+
],
104+
"interpreter": null
105+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
fn(x < y, x >>>= y)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
{
2+
"type": "Script",
3+
"span": {
4+
"start": 1,
5+
"end": 20,
6+
"ctxt": 0
7+
},
8+
"body": [
9+
{
10+
"type": "ExpressionStatement",
11+
"span": {
12+
"start": 1,
13+
"end": 20,
14+
"ctxt": 0
15+
},
16+
"expression": {
17+
"type": "CallExpression",
18+
"span": {
19+
"start": 1,
20+
"end": 20,
21+
"ctxt": 0
22+
},
23+
"callee": {
24+
"type": "Identifier",
25+
"span": {
26+
"start": 1,
27+
"end": 3,
28+
"ctxt": 0
29+
},
30+
"value": "fn",
31+
"optional": false
32+
},
33+
"arguments": [
34+
{
35+
"spread": null,
36+
"expression": {
37+
"type": "BinaryExpression",
38+
"span": {
39+
"start": 4,
40+
"end": 9,
41+
"ctxt": 0
42+
},
43+
"operator": "<",
44+
"left": {
45+
"type": "Identifier",
46+
"span": {
47+
"start": 4,
48+
"end": 5,
49+
"ctxt": 0
50+
},
51+
"value": "x",
52+
"optional": false
53+
},
54+
"right": {
55+
"type": "Identifier",
56+
"span": {
57+
"start": 8,
58+
"end": 9,
59+
"ctxt": 0
60+
},
61+
"value": "y",
62+
"optional": false
63+
}
64+
}
65+
},
66+
{
67+
"spread": null,
68+
"expression": {
69+
"type": "AssignmentExpression",
70+
"span": {
71+
"start": 11,
72+
"end": 19,
73+
"ctxt": 0
74+
},
75+
"operator": ">>>=",
76+
"left": {
77+
"type": "Identifier",
78+
"span": {
79+
"start": 11,
80+
"end": 12,
81+
"ctxt": 0
82+
},
83+
"value": "x",
84+
"optional": false,
85+
"typeAnnotation": null
86+
},
87+
"right": {
88+
"type": "Identifier",
89+
"span": {
90+
"start": 18,
91+
"end": 19,
92+
"ctxt": 0
93+
},
94+
"value": "y",
95+
"optional": false
96+
}
97+
}
98+
}
99+
],
100+
"typeArguments": null
101+
}
102+
}
103+
],
104+
"interpreter": null
105+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
fn(x < y, x < y, x >>= y)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
{
2+
"type": "Script",
3+
"span": {
4+
"start": 1,
5+
"end": 26,
6+
"ctxt": 0
7+
},
8+
"body": [
9+
{
10+
"type": "ExpressionStatement",
11+
"span": {
12+
"start": 1,
13+
"end": 26,
14+
"ctxt": 0
15+
},
16+
"expression": {
17+
"type": "CallExpression",
18+
"span": {
19+
"start": 1,
20+
"end": 26,
21+
"ctxt": 0
22+
},
23+
"callee": {
24+
"type": "Identifier",
25+
"span": {
26+
"start": 1,
27+
"end": 3,
28+
"ctxt": 0
29+
},
30+
"value": "fn",
31+
"optional": false
32+
},
33+
"arguments": [
34+
{
35+
"spread": null,
36+
"expression": {
37+
"type": "BinaryExpression",
38+
"span": {
39+
"start": 4,
40+
"end": 9,
41+
"ctxt": 0
42+
},
43+
"operator": "<",
44+
"left": {
45+
"type": "Identifier",
46+
"span": {
47+
"start": 4,
48+
"end": 5,
49+
"ctxt": 0
50+
},
51+
"value": "x",
52+
"optional": false
53+
},
54+
"right": {
55+
"type": "Identifier",
56+
"span": {
57+
"start": 8,
58+
"end": 9,
59+
"ctxt": 0
60+
},
61+
"value": "y",
62+
"optional": false
63+
}
64+
}
65+
},
66+
{
67+
"spread": null,
68+
"expression": {
69+
"type": "BinaryExpression",
70+
"span": {
71+
"start": 11,
72+
"end": 16,
73+
"ctxt": 0
74+
},
75+
"operator": "<",
76+
"left": {
77+
"type": "Identifier",
78+
"span": {
79+
"start": 11,
80+
"end": 12,
81+
"ctxt": 0
82+
},
83+
"value": "x",
84+
"optional": false
85+
},
86+
"right": {
87+
"type": "Identifier",
88+
"span": {
89+
"start": 15,
90+
"end": 16,
91+
"ctxt": 0
92+
},
93+
"value": "y",
94+
"optional": false
95+
}
96+
}
97+
},
98+
{
99+
"spread": null,
100+
"expression": {
101+
"type": "AssignmentExpression",
102+
"span": {
103+
"start": 18,
104+
"end": 25,
105+
"ctxt": 0
106+
},
107+
"operator": ">>=",
108+
"left": {
109+
"type": "Identifier",
110+
"span": {
111+
"start": 18,
112+
"end": 19,
113+
"ctxt": 0
114+
},
115+
"value": "x",
116+
"optional": false,
117+
"typeAnnotation": null
118+
},
119+
"right": {
120+
"type": "Identifier",
121+
"span": {
122+
"start": 24,
123+
"end": 25,
124+
"ctxt": 0
125+
},
126+
"value": "y",
127+
"optional": false
128+
}
129+
}
130+
}
131+
],
132+
"typeArguments": null
133+
}
134+
}
135+
],
136+
"interpreter": null
137+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
fn(x < y, x < y, x >>> y)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
{
2+
"type": "Script",
3+
"span": {
4+
"start": 1,
5+
"end": 26,
6+
"ctxt": 0
7+
},
8+
"body": [
9+
{
10+
"type": "ExpressionStatement",
11+
"span": {
12+
"start": 1,
13+
"end": 26,
14+
"ctxt": 0
15+
},
16+
"expression": {
17+
"type": "CallExpression",
18+
"span": {
19+
"start": 1,
20+
"end": 26,
21+
"ctxt": 0
22+
},
23+
"callee": {
24+
"type": "Identifier",
25+
"span": {
26+
"start": 1,
27+
"end": 3,
28+
"ctxt": 0
29+
},
30+
"value": "fn",
31+
"optional": false
32+
},
33+
"arguments": [
34+
{
35+
"spread": null,
36+
"expression": {
37+
"type": "BinaryExpression",
38+
"span": {
39+
"start": 4,
40+
"end": 9,
41+
"ctxt": 0
42+
},
43+
"operator": "<",
44+
"left": {
45+
"type": "Identifier",
46+
"span": {
47+
"start": 4,
48+
"end": 5,
49+
"ctxt": 0
50+
},
51+
"value": "x",
52+
"optional": false
53+
},
54+
"right": {
55+
"type": "Identifier",
56+
"span": {
57+
"start": 8,
58+
"end": 9,
59+
"ctxt": 0
60+
},
61+
"value": "y",
62+
"optional": false
63+
}
64+
}
65+
},
66+
{
67+
"spread": null,
68+
"expression": {
69+
"type": "BinaryExpression",
70+
"span": {
71+
"start": 11,
72+
"end": 16,
73+
"ctxt": 0
74+
},
75+
"operator": "<",
76+
"left": {
77+
"type": "Identifier",
78+
"span": {
79+
"start": 11,
80+
"end": 12,
81+
"ctxt": 0
82+
},
83+
"value": "x",
84+
"optional": false
85+
},
86+
"right": {
87+
"type": "Identifier",
88+
"span": {
89+
"start": 15,
90+
"end": 16,
91+
"ctxt": 0
92+
},
93+
"value": "y",
94+
"optional": false
95+
}
96+
}
97+
},
98+
{
99+
"spread": null,
100+
"expression": {
101+
"type": "BinaryExpression",
102+
"span": {
103+
"start": 18,
104+
"end": 25,
105+
"ctxt": 0
106+
},
107+
"operator": ">>>",
108+
"left": {
109+
"type": "Identifier",
110+
"span": {
111+
"start": 18,
112+
"end": 19,
113+
"ctxt": 0
114+
},
115+
"value": "x",
116+
"optional": false
117+
},
118+
"right": {
119+
"type": "Identifier",
120+
"span": {
121+
"start": 24,
122+
"end": 25,
123+
"ctxt": 0
124+
},
125+
"value": "y",
126+
"optional": false
127+
}
128+
}
129+
}
130+
],
131+
"typeArguments": null
132+
}
133+
}
134+
],
135+
"interpreter": null
136+
}

2 commit comments

Comments
 (2)

github-actions[bot] commented on May 18, 2023

@github-actions[bot]

Benchmark

Benchmark suite Current: 57ad722 Previous: ac5ab60 Ratio
es/full/bugs-1 299753 ns/iter (± 17029) 252592 ns/iter (± 5424) 1.19
es/full/minify/libraries/antd 1657307266 ns/iter (± 27700790) 1202844503 ns/iter (± 4954937) 1.38
es/full/minify/libraries/d3 301760850 ns/iter (± 7765412) 242352186 ns/iter (± 3807527) 1.25
es/full/minify/libraries/echarts 1281004251 ns/iter (± 11402438) 980360776 ns/iter (± 16942866) 1.31
es/full/minify/libraries/jquery 92285653 ns/iter (± 431571) 77325100 ns/iter (± 220040) 1.19
es/full/minify/libraries/lodash 108622205 ns/iter (± 835387) 87289589 ns/iter (± 171655) 1.24
es/full/minify/libraries/moment 53612147 ns/iter (± 508591) 45097304 ns/iter (± 72779) 1.19
es/full/minify/libraries/react 19537317 ns/iter (± 151784) 16352722 ns/iter (± 55096) 1.19
es/full/minify/libraries/terser 254393551 ns/iter (± 4005395) 200055431 ns/iter (± 985227) 1.27
es/full/minify/libraries/three 447057721 ns/iter (± 7587006) 344506794 ns/iter (± 3934984) 1.30
es/full/minify/libraries/typescript 3143974178 ns/iter (± 20826051) 2438984073 ns/iter (± 18420607) 1.29
es/full/minify/libraries/victory 662019611 ns/iter (± 13923487) 509710826 ns/iter (± 4560544) 1.30
es/full/minify/libraries/vue 133372498 ns/iter (± 1128532) 109674007 ns/iter (± 548997) 1.22
es/full/codegen/es3 33755 ns/iter (± 51) 31548 ns/iter (± 63) 1.07
es/full/codegen/es5 33734 ns/iter (± 66) 31450 ns/iter (± 41) 1.07
es/full/codegen/es2015 33725 ns/iter (± 67) 31583 ns/iter (± 83) 1.07
es/full/codegen/es2016 33724 ns/iter (± 54) 31621 ns/iter (± 55) 1.07
es/full/codegen/es2017 33690 ns/iter (± 53) 31695 ns/iter (± 59) 1.06
es/full/codegen/es2018 33747 ns/iter (± 37) 31677 ns/iter (± 65) 1.07
es/full/codegen/es2019 33728 ns/iter (± 43) 31567 ns/iter (± 90) 1.07
es/full/codegen/es2020 33720 ns/iter (± 70) 31626 ns/iter (± 74) 1.07
es/full/all/es3 181666185 ns/iter (± 2616157) 157139680 ns/iter (± 597935) 1.16
es/full/all/es5 177442331 ns/iter (± 3430741) 150520055 ns/iter (± 640589) 1.18
es/full/all/es2015 140565525 ns/iter (± 2075592) 112126624 ns/iter (± 541628) 1.25
es/full/all/es2016 139813113 ns/iter (± 1909714) 111067630 ns/iter (± 677859) 1.26
es/full/all/es2017 136331413 ns/iter (± 2831991) 109804842 ns/iter (± 295091) 1.24
es/full/all/es2018 131412901 ns/iter (± 2556345) 108435236 ns/iter (± 763102) 1.21
es/full/all/es2019 130671010 ns/iter (± 1211399) 107569052 ns/iter (± 378890) 1.21
es/full/all/es2020 120407563 ns/iter (± 1227119) 102757893 ns/iter (± 483932) 1.17
es/full/parser 522194 ns/iter (± 7254) 466064 ns/iter (± 4742) 1.12
es/full/base/fixer 22888 ns/iter (± 46) 17322 ns/iter (± 35) 1.32
es/full/base/resolver_and_hygiene 85574 ns/iter (± 956) 75371 ns/iter (± 114) 1.14
serialization of serde 123 ns/iter (± 0) 112 ns/iter (± 0) 1.10
css/minify/libraries/bootstrap 27181572 ns/iter (± 110364) 23466855 ns/iter (± 106481) 1.16
css/visitor/compare/clone 2138082 ns/iter (± 8010) 1648014 ns/iter (± 2306) 1.30
css/visitor/compare/visit_mut_span 2324009 ns/iter (± 4388) 1781773 ns/iter (± 11865) 1.30
css/visitor/compare/visit_mut_span_panic 2361457 ns/iter (± 4224) 1858557 ns/iter (± 5501) 1.27
css/visitor/compare/fold_span 3102531 ns/iter (± 9273) 2538700 ns/iter (± 13291) 1.22
css/visitor/compare/fold_span_panic 3247670 ns/iter (± 10415) 2722417 ns/iter (± 10002) 1.19
css/lexer/bootstrap_5_1_3 5164154 ns/iter (± 9087) 4550821 ns/iter (± 3565) 1.13
css/lexer/foundation_6_7_4 4397563 ns/iter (± 2084) 3782648 ns/iter (± 2110) 1.16
css/lexer/tailwind_3_1_1 830045 ns/iter (± 477) 716361 ns/iter (± 176) 1.16
css/parser/bootstrap_5_1_3 21134634 ns/iter (± 37924) 18160277 ns/iter (± 19317) 1.16
css/parser/foundation_6_7_4 16836810 ns/iter (± 41570) 14509286 ns/iter (± 12483) 1.16
css/parser/tailwind_3_1_1 3245427 ns/iter (± 4349) 2797938 ns/iter (± 2586) 1.16
es/codegen/colors 735245 ns/iter (± 393774) 732469 ns/iter (± 399948) 1.00
es/codegen/large 3211920 ns/iter (± 1670635) 3027150 ns/iter (± 1590754) 1.06
es/codegen/with-parser/colors 48281 ns/iter (± 356) 42973 ns/iter (± 482) 1.12
es/codegen/with-parser/large 513489 ns/iter (± 2315) 475056 ns/iter (± 1076) 1.08
es/minify/libraries/antd 1450095436 ns/iter (± 24990252) 1063905053 ns/iter (± 10946120) 1.36
es/minify/libraries/d3 266325368 ns/iter (± 3517600) 214423687 ns/iter (± 946122) 1.24
es/minify/libraries/echarts 1111237083 ns/iter (± 14741898) 843397903 ns/iter (± 5085529) 1.32
es/minify/libraries/jquery 81844524 ns/iter (± 657005) 68999765 ns/iter (± 133936) 1.19
es/minify/libraries/lodash 97271360 ns/iter (± 1278801) 79335248 ns/iter (± 121033) 1.23
es/minify/libraries/moment 47587431 ns/iter (± 437962) 40508573 ns/iter (± 97458) 1.17
es/minify/libraries/react 17518262 ns/iter (± 195199) 14865390 ns/iter (± 28036) 1.18
es/minify/libraries/terser 215027451 ns/iter (± 2713381) 176139926 ns/iter (± 1862284) 1.22
es/minify/libraries/three 375406628 ns/iter (± 6415663) 295337616 ns/iter (± 7401562) 1.27
es/minify/libraries/typescript 2673858599 ns/iter (± 15961225) 2119142460 ns/iter (± 16202173) 1.26
es/minify/libraries/victory 577222728 ns/iter (± 5531295) 439241424 ns/iter (± 3268040) 1.31
es/minify/libraries/vue 120127673 ns/iter (± 1550279) 100779880 ns/iter (± 492314) 1.19
es/visitor/compare/clone 2319636 ns/iter (± 81599) 1996976 ns/iter (± 5140) 1.16
es/visitor/compare/visit_mut_span 2681699 ns/iter (± 6504) 2328264 ns/iter (± 1582) 1.15
es/visitor/compare/visit_mut_span_panic 2726538 ns/iter (± 3391) 2380152 ns/iter (± 2695) 1.15
es/visitor/compare/fold_span 3802711 ns/iter (± 5506) 3402995 ns/iter (± 4698) 1.12
es/visitor/compare/fold_span_panic 3938349 ns/iter (± 6052) 3544476 ns/iter (± 4302) 1.11
es/lexer/colors 13106 ns/iter (± 48) 11636 ns/iter (± 15) 1.13
es/lexer/angular 6426917 ns/iter (± 3868) 5643819 ns/iter (± 5535) 1.14
es/lexer/backbone 795139 ns/iter (± 511) 718171 ns/iter (± 1742) 1.11
es/lexer/jquery 4465860 ns/iter (± 3089) 4041167 ns/iter (± 1337) 1.11
es/lexer/jquery mobile 6930197 ns/iter (± 3993) 6256846 ns/iter (± 11114) 1.11
es/lexer/mootools 3493522 ns/iter (± 2040) 3207482 ns/iter (± 1629) 1.09
es/lexer/underscore 656710 ns/iter (± 2468) 590211 ns/iter (± 1393) 1.11
es/lexer/three 20973600 ns/iter (± 27366) 19129693 ns/iter (± 8588) 1.10
es/lexer/yui 3891916 ns/iter (± 2843) 3531819 ns/iter (± 12102) 1.10
es/parser/colors 28909 ns/iter (± 57) 25607 ns/iter (± 65) 1.13
es/parser/angular 15054988 ns/iter (± 117824) 13039645 ns/iter (± 50413) 1.15
es/parser/backbone 2192740 ns/iter (± 10872) 1943160 ns/iter (± 10513) 1.13
es/parser/jquery 11932271 ns/iter (± 104643) 10518069 ns/iter (± 36331) 1.13
es/parser/jquery mobile 18656071 ns/iter (± 148782) 16222263 ns/iter (± 88149) 1.15
es/parser/mootools 9031702 ns/iter (± 25454) 8114008 ns/iter (± 12688) 1.11
es/parser/underscore 1849603 ns/iter (± 12693) 1662798 ns/iter (± 10002) 1.11
es/parser/three 54499810 ns/iter (± 695657) 45337975 ns/iter (± 155210) 1.20
es/parser/yui 9138587 ns/iter (± 63527) 8043391 ns/iter (± 43835) 1.14
es/preset-env/usage/builtin_type 141422 ns/iter (± 34559) 146213 ns/iter (± 39620) 0.97
es/preset-env/usage/property 20212 ns/iter (± 79) 15569 ns/iter (± 40) 1.30
es/resolver/typescript 119119278 ns/iter (± 1999947) 90299073 ns/iter (± 1047880) 1.32
es/fixer/typescript 86693850 ns/iter (± 1505507) 65482578 ns/iter (± 1174484) 1.32
es/hygiene/typescript 183143578 ns/iter (± 882122) 133171134 ns/iter (± 1319213) 1.38
es/resolver_with_hygiene/typescript 324654433 ns/iter (± 2549962) 232722111 ns/iter (± 973419) 1.40
es/visitor/base-perf/module_clone 81088 ns/iter (± 450) 58902 ns/iter (± 187) 1.38
es/visitor/base-perf/fold_empty 90717 ns/iter (± 222) 63197 ns/iter (± 190) 1.44
es/visitor/base-perf/fold_noop_impl_all 91014 ns/iter (± 384) 63464 ns/iter (± 217) 1.43
es/visitor/base-perf/fold_noop_impl_vec 91722 ns/iter (± 340) 63470 ns/iter (± 237) 1.45
es/visitor/base-perf/boxing_boxed_clone 56 ns/iter (± 0) 53 ns/iter (± 0) 1.06
es/visitor/base-perf/boxing_unboxed_clone 41 ns/iter (± 0) 36 ns/iter (± 0) 1.14
es/visitor/base-perf/boxing_boxed 104 ns/iter (± 0) 112 ns/iter (± 0) 0.93
es/visitor/base-perf/boxing_unboxed 78 ns/iter (± 0) 78 ns/iter (± 0) 1
es/visitor/base-perf/visit_contains_this 3519 ns/iter (± 51) 2660 ns/iter (± 11) 1.32
es/base/parallel/resolver/typescript 6483359725 ns/iter (± 522424009) 3974713911 ns/iter (± 296483813) 1.63
es/base/parallel/hygiene/typescript 2159192998 ns/iter (± 40055475) 1423983835 ns/iter (± 18474203) 1.52
misc/visitors/time-complexity/time 5 105 ns/iter (± 0) 105 ns/iter (± 1) 1
misc/visitors/time-complexity/time 10 341 ns/iter (± 0) 263 ns/iter (± 0) 1.30
misc/visitors/time-complexity/time 15 710 ns/iter (± 0) 719 ns/iter (± 5) 0.99
misc/visitors/time-complexity/time 20 1324 ns/iter (± 0) 1137 ns/iter (± 72) 1.16
misc/visitors/time-complexity/time 40 6998 ns/iter (± 5) 3826 ns/iter (± 149) 1.83
misc/visitors/time-complexity/time 60 17815 ns/iter (± 13) 7745 ns/iter (± 59) 2.30
es/full-target/es2016 254215 ns/iter (± 319) 225429 ns/iter (± 407) 1.13
es/full-target/es2017 246526 ns/iter (± 478) 214775 ns/iter (± 548) 1.15
es/full-target/es2018 235881 ns/iter (± 450) 202289 ns/iter (± 518) 1.17
es2020_nullish_coalescing 92889 ns/iter (± 276) 69559 ns/iter (± 315) 1.34
es2020_optional_chaining 124249 ns/iter (± 166) 94329 ns/iter (± 611) 1.32
es2022_class_properties 148759 ns/iter (± 255) 116083 ns/iter (± 254) 1.28
es2018_object_rest_spread 95827 ns/iter (± 203) 73825 ns/iter (± 513) 1.30
es2019_optional_catch_binding 85204 ns/iter (± 109) 63171 ns/iter (± 184) 1.35
es2017_async_to_generator 85767 ns/iter (± 261) 63126 ns/iter (± 153) 1.36
es2016_exponentiation 90310 ns/iter (± 212) 68100 ns/iter (± 275) 1.33
es2015_arrow 93479 ns/iter (± 238) 71111 ns/iter (± 795) 1.31
es2015_block_scoped_fn 91710 ns/iter (± 255) 67534 ns/iter (± 143) 1.36
es2015_block_scoping 169556 ns/iter (± 315) 118896 ns/iter (± 517) 1.43

This comment was automatically generated by workflow using github-action-benchmark.

github-actions[bot] commented on May 18, 2023

@github-actions[bot]

⚠️ Performance Alert ⚠️

Possible performance regression was detected for benchmark.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 2.

Benchmark suite Current: 57ad722 Previous: ac5ab60 Ratio
misc/visitors/time-complexity/time 60 17815 ns/iter (± 13) 7745 ns/iter (± 59) 2.30

This comment was automatically generated by workflow using github-action-benchmark.

CC: @kdy1

Please sign in to comment.