Skip to content

Commit

Permalink
fix(es/parser): Use a hard error for missing r-paren in an if stmt (#…
Browse files Browse the repository at this point in the history
…7223)

**Related issue:**

 - Closes #7104.
  • Loading branch information
chenyukang committed Apr 10, 2023
1 parent 0fe9088 commit b1c40a4
Show file tree
Hide file tree
Showing 5 changed files with 33 additions and 13 deletions.
14 changes: 1 addition & 13 deletions crates/swc_ecma_parser/src/parser/stmt.rs
Expand Up @@ -470,20 +470,8 @@ impl<'a, I: Tokens> Parser<I> {
},
)
})?;
if !eat!(self, ')') {
self.emit_err(self.input.cur_span(), SyntaxError::TS1005);

let span = span!(self, start);
return Ok(IfStmt {
span,
test,
cons: Box::new(Stmt::Expr(ExprStmt {
span,
expr: Box::new(Expr::Invalid(Invalid { span })),
})),
alt: Default::default(),
});
}
expect!(self, ')');

let cons = {
// Prevent stack overflow
Expand Down
@@ -0,0 +1,5 @@
const foo = <T extends {}>() => {
if (bar() {
console.log(1);
}
};
@@ -0,0 +1,14 @@

x An arrow function is not allowed here
,-[$DIR/tests/typescript-errors/issue-7104/case1/input.ts:1:1]
1 | const foo = <T extends {}>() => {
: ^^
2 | if (bar() {
`----

x Expression expected
,-[$DIR/tests/typescript-errors/issue-7104/case1/input.ts:1:1]
1 | const foo = <T extends {}>() => {
: ^
2 | if (bar() {
`----
@@ -0,0 +1,5 @@
const foo = () => {
if (bar() {
console.log(1);
}
};
@@ -0,0 +1,8 @@

x Expected ')', got '{'
,-[$DIR/tests/typescript-errors/issue-7104/case2/input.ts:1:1]
1 | const foo = () => {
2 | if (bar() {
: ^
3 | console.log(1);
`----

1 comment on commit b1c40a4

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark

Benchmark suite Current: b1c40a4 Previous: 695ce06 Ratio
es/full/bugs-1 308538 ns/iter (± 4780) 307390 ns/iter (± 7075) 1.00
es/full/minify/libraries/antd 1648368101 ns/iter (± 20502270) 1695035312 ns/iter (± 24041558) 0.97
es/full/minify/libraries/d3 330578293 ns/iter (± 7643284) 308028058 ns/iter (± 2852292) 1.07
es/full/minify/libraries/echarts 1251016186 ns/iter (± 14093336) 1300530013 ns/iter (± 15820025) 0.96
es/full/minify/libraries/jquery 94549341 ns/iter (± 1116141) 94905443 ns/iter (± 2260108) 1.00
es/full/minify/libraries/lodash 109615130 ns/iter (± 1151120) 107593662 ns/iter (± 689545) 1.02
es/full/minify/libraries/moment 53718087 ns/iter (± 467859) 53335790 ns/iter (± 500527) 1.01
es/full/minify/libraries/react 19635656 ns/iter (± 262388) 19322033 ns/iter (± 125628) 1.02
es/full/minify/libraries/terser 263147508 ns/iter (± 4561482) 264825069 ns/iter (± 7057160) 0.99
es/full/minify/libraries/three 460222672 ns/iter (± 6161320) 466016904 ns/iter (± 8721815) 0.99
es/full/minify/libraries/typescript 3021573539 ns/iter (± 14193176) 3158906760 ns/iter (± 42612030) 0.96
es/full/minify/libraries/victory 710872683 ns/iter (± 14428315) 723131878 ns/iter (± 16587837) 0.98
es/full/minify/libraries/vue 137526822 ns/iter (± 1799953) 133715811 ns/iter (± 1378206) 1.03
es/full/codegen/es3 28743 ns/iter (± 71) 28814 ns/iter (± 73) 1.00
es/full/codegen/es5 28816 ns/iter (± 96) 28869 ns/iter (± 84) 1.00
es/full/codegen/es2015 28817 ns/iter (± 59) 28938 ns/iter (± 59) 1.00
es/full/codegen/es2016 28785 ns/iter (± 59) 28955 ns/iter (± 35) 0.99
es/full/codegen/es2017 28819 ns/iter (± 43) 28914 ns/iter (± 63) 1.00
es/full/codegen/es2018 28807 ns/iter (± 41) 28920 ns/iter (± 64) 1.00
es/full/codegen/es2019 28807 ns/iter (± 47) 28925 ns/iter (± 74) 1.00
es/full/codegen/es2020 28839 ns/iter (± 32) 28875 ns/iter (± 66) 1.00
es/full/all/es3 185897198 ns/iter (± 2819061) 182890804 ns/iter (± 1967224) 1.02
es/full/all/es5 177105767 ns/iter (± 3166912) 174198668 ns/iter (± 2963732) 1.02
es/full/all/es2015 134911114 ns/iter (± 2346283) 135653479 ns/iter (± 1567612) 0.99
es/full/all/es2016 134913557 ns/iter (± 2651418) 134259285 ns/iter (± 1163500) 1.00
es/full/all/es2017 134449392 ns/iter (± 2831098) 134203598 ns/iter (± 1999081) 1.00
es/full/all/es2018 129250611 ns/iter (± 2061280) 127161266 ns/iter (± 1777380) 1.02
es/full/all/es2019 129230932 ns/iter (± 2326184) 126646041 ns/iter (± 2997888) 1.02
es/full/all/es2020 120049142 ns/iter (± 1605438) 118568470 ns/iter (± 2836673) 1.01
es/full/parser 514403 ns/iter (± 8516) 510591 ns/iter (± 9759) 1.01
es/full/base/fixer 22821 ns/iter (± 38) 24023 ns/iter (± 23) 0.95
es/full/base/resolver_and_hygiene 84351 ns/iter (± 91) 85861 ns/iter (± 129) 0.98
serialization of serde 120 ns/iter (± 0) 121 ns/iter (± 0) 0.99
css/minify/libraries/bootstrap 28591001 ns/iter (± 129624) 27486349 ns/iter (± 188181) 1.04
css/visitor/compare/clone 2151908 ns/iter (± 9756) 2153331 ns/iter (± 5743) 1.00
css/visitor/compare/visit_mut_span 2343682 ns/iter (± 20201) 2338705 ns/iter (± 7118) 1.00
css/visitor/compare/visit_mut_span_panic 2400290 ns/iter (± 15737) 2404930 ns/iter (± 294776) 1.00
css/visitor/compare/fold_span 3142650 ns/iter (± 21516) 3191694 ns/iter (± 336020) 0.98
css/visitor/compare/fold_span_panic 3313361 ns/iter (± 33273) 3255216 ns/iter (± 26019) 1.02
css/lexer/bootstrap_5_1_3 5116388 ns/iter (± 1961) 5105259 ns/iter (± 1893) 1.00
css/lexer/foundation_6_7_4 4307018 ns/iter (± 1522) 4304285 ns/iter (± 4163) 1.00
css/lexer/tailwind_3_1_1 818802 ns/iter (± 246) 817634 ns/iter (± 340) 1.00
css/parser/bootstrap_5_1_3 21863627 ns/iter (± 66905) 21861627 ns/iter (± 111400) 1.00
css/parser/foundation_6_7_4 17332352 ns/iter (± 67410) 17257308 ns/iter (± 75605) 1.00
css/parser/tailwind_3_1_1 3235317 ns/iter (± 2150) 3251382 ns/iter (± 9318) 1.00
es/codegen/colors 315817 ns/iter (± 178953) 694485 ns/iter (± 405060) 0.45
es/codegen/large 1113516 ns/iter (± 567993) 2654580 ns/iter (± 1526192) 0.42
es/codegen/with-parser/colors 47201 ns/iter (± 401) 47028 ns/iter (± 256) 1.00
es/codegen/with-parser/large 515217 ns/iter (± 2295) 505184 ns/iter (± 1241) 1.02
es/minify/libraries/antd 1420747663 ns/iter (± 22154429) 1520801462 ns/iter (± 14319972) 0.93
es/minify/libraries/d3 268031086 ns/iter (± 5150946) 261298552 ns/iter (± 3072385) 1.03
es/minify/libraries/echarts 1093172030 ns/iter (± 9049126) 1107531578 ns/iter (± 29973924) 0.99
es/minify/libraries/jquery 82471140 ns/iter (± 1612534) 82208553 ns/iter (± 579654) 1.00
es/minify/libraries/lodash 99189182 ns/iter (± 2351082) 98364464 ns/iter (± 1323917) 1.01
es/minify/libraries/moment 46676970 ns/iter (± 402621) 47415748 ns/iter (± 525151) 0.98
es/minify/libraries/react 17396357 ns/iter (± 261753) 17715455 ns/iter (± 145045) 0.98
es/minify/libraries/terser 223287864 ns/iter (± 2582660) 228328811 ns/iter (± 4125342) 0.98
es/minify/libraries/three 383954680 ns/iter (± 12405512) 406953424 ns/iter (± 3459567) 0.94
es/minify/libraries/typescript 2556681827 ns/iter (± 17393178) 2774569536 ns/iter (± 17319788) 0.92
es/minify/libraries/victory 598875676 ns/iter (± 5226064) 629613372 ns/iter (± 6434168) 0.95
es/minify/libraries/vue 121771138 ns/iter (± 880228) 121189157 ns/iter (± 3063002) 1.00
es/visitor/compare/clone 2328801 ns/iter (± 9989) 2317195 ns/iter (± 36725) 1.01
es/visitor/compare/visit_mut_span 2705531 ns/iter (± 7139) 2687949 ns/iter (± 14945) 1.01
es/visitor/compare/visit_mut_span_panic 2755283 ns/iter (± 11604) 2740558 ns/iter (± 12120) 1.01
es/visitor/compare/fold_span 3835773 ns/iter (± 38371) 3776416 ns/iter (± 11106) 1.02
es/visitor/compare/fold_span_panic 3966478 ns/iter (± 25465) 3937815 ns/iter (± 11443) 1.01
es/lexer/colors 13376 ns/iter (± 7) 13184 ns/iter (± 10) 1.01
es/lexer/angular 6440411 ns/iter (± 5360) 6417557 ns/iter (± 2993) 1.00
es/lexer/backbone 796414 ns/iter (± 484) 794939 ns/iter (± 252) 1.00
es/lexer/jquery 4444012 ns/iter (± 2847) 4438489 ns/iter (± 2667) 1.00
es/lexer/jquery mobile 6920997 ns/iter (± 3163) 6931525 ns/iter (± 18119) 1.00
es/lexer/mootools 3510996 ns/iter (± 1439) 3483412 ns/iter (± 2212) 1.01
es/lexer/underscore 658476 ns/iter (± 912) 655498 ns/iter (± 920) 1.00
es/lexer/three 21072410 ns/iter (± 33363) 21054663 ns/iter (± 26510) 1.00
es/lexer/yui 3908606 ns/iter (± 1675) 3890190 ns/iter (± 17390) 1.00
es/parser/colors 28838 ns/iter (± 71) 28572 ns/iter (± 311) 1.01
es/parser/angular 15598531 ns/iter (± 210550) 15642833 ns/iter (± 221920) 1.00
es/parser/backbone 2137475 ns/iter (± 11607) 2159582 ns/iter (± 69210) 0.99
es/parser/jquery 11904783 ns/iter (± 276788) 11906774 ns/iter (± 178769) 1.00
es/parser/jquery mobile 19746584 ns/iter (± 236203) 19505573 ns/iter (± 330618) 1.01
es/parser/mootools 8976610 ns/iter (± 75037) 8901234 ns/iter (± 56265) 1.01
es/parser/underscore 1800545 ns/iter (± 9030) 1816293 ns/iter (± 8625) 0.99
es/parser/three 54815869 ns/iter (± 205240) 56201310 ns/iter (± 277330) 0.98
es/parser/yui 9200413 ns/iter (± 92172) 9015706 ns/iter (± 66958) 1.02
es/preset-env/usage/builtin_type 142610 ns/iter (± 33464) 145684 ns/iter (± 34875) 0.98
es/preset-env/usage/property 20530 ns/iter (± 166) 20777 ns/iter (± 118) 0.99
es/resolver/typescript 109387521 ns/iter (± 1946562) 122196791 ns/iter (± 3214999) 0.90
es/fixer/typescript 76795136 ns/iter (± 504358) 89034717 ns/iter (± 469173) 0.86
es/hygiene/typescript 164987637 ns/iter (± 1271990) 197672230 ns/iter (± 1124321) 0.83
es/resolver_with_hygiene/typescript 296183306 ns/iter (± 3158706) 348631105 ns/iter (± 2379945) 0.85
es/visitor/base-perf/module_clone 80503 ns/iter (± 336) 80468 ns/iter (± 498) 1.00
es/visitor/base-perf/fold_empty 90338 ns/iter (± 382) 89990 ns/iter (± 279) 1.00
es/visitor/base-perf/fold_noop_impl_all 90975 ns/iter (± 322) 90257 ns/iter (± 515) 1.01
es/visitor/base-perf/fold_noop_impl_vec 90493 ns/iter (± 713) 90645 ns/iter (± 446) 1.00
es/visitor/base-perf/boxing_boxed_clone 58 ns/iter (± 0) 56 ns/iter (± 0) 1.04
es/visitor/base-perf/boxing_unboxed_clone 42 ns/iter (± 0) 42 ns/iter (± 0) 1
es/visitor/base-perf/boxing_boxed 103 ns/iter (± 0) 103 ns/iter (± 0) 1
es/visitor/base-perf/boxing_unboxed 80 ns/iter (± 0) 79 ns/iter (± 0) 1.01
es/visitor/base-perf/visit_contains_this 3387 ns/iter (± 67) 3678 ns/iter (± 77) 0.92
es/base/parallel/resolver/typescript 6166602036 ns/iter (± 471514514) 6757289199 ns/iter (± 590252156) 0.91
es/base/parallel/hygiene/typescript 1994715787 ns/iter (± 21445058) 2255083836 ns/iter (± 41150944) 0.88
misc/visitors/time-complexity/time 5 105 ns/iter (± 0) 102 ns/iter (± 0) 1.03
misc/visitors/time-complexity/time 10 325 ns/iter (± 0) 319 ns/iter (± 2) 1.02
misc/visitors/time-complexity/time 15 677 ns/iter (± 16) 650 ns/iter (± 1) 1.04
misc/visitors/time-complexity/time 20 1243 ns/iter (± 0) 1215 ns/iter (± 12) 1.02
misc/visitors/time-complexity/time 40 6212 ns/iter (± 26) 6627 ns/iter (± 42) 0.94
misc/visitors/time-complexity/time 60 15578 ns/iter (± 2) 16960 ns/iter (± 71) 0.92
es/full-target/es2016 253247 ns/iter (± 1288) 253172 ns/iter (± 364) 1.00
es/full-target/es2017 246689 ns/iter (± 500) 246793 ns/iter (± 295) 1.00
es/full-target/es2018 236127 ns/iter (± 306) 236156 ns/iter (± 572) 1.00
es2020_nullish_coalescing 92881 ns/iter (± 438) 93116 ns/iter (± 233) 1.00
es2020_optional_chaining 123774 ns/iter (± 261) 125162 ns/iter (± 444) 0.99
es2022_class_properties 149797 ns/iter (± 228) 149997 ns/iter (± 250) 1.00
es2018_object_rest_spread 96229 ns/iter (± 114) 96312 ns/iter (± 229) 1.00
es2019_optional_catch_binding 85717 ns/iter (± 126) 85784 ns/iter (± 1251) 1.00
es2017_async_to_generator 85728 ns/iter (± 183) 86082 ns/iter (± 197) 1.00
es2016_exponentiation 90549 ns/iter (± 183) 91138 ns/iter (± 270) 0.99
es2015_arrow 94295 ns/iter (± 176) 94547 ns/iter (± 212) 1.00
es2015_block_scoped_fn 92139 ns/iter (± 178) 92693 ns/iter (± 170) 0.99
es2015_block_scoping 169783 ns/iter (± 195) 170240 ns/iter (± 325) 1.00

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

Please sign in to comment.