Skip to content

Commit

Permalink
fix(es/parser): Reset ctx for cond while parsing a stmt (#7232)
Browse files Browse the repository at this point in the history
  • Loading branch information
kdy1 committed Apr 10, 2023
1 parent c06690e commit 01db30f
Show file tree
Hide file tree
Showing 3 changed files with 1,430 additions and 1 deletion.
7 changes: 6 additions & 1 deletion crates/swc_ecma_parser/src/parser/stmt.rs
Expand Up @@ -101,7 +101,12 @@ impl<'a, I: Tokens> Parser<I> {
return self.handle_import_export(top_level, decorators);
}

self.parse_stmt_internal(start, include_decl, top_level, decorators)
let ctx = Context {
will_expect_colon_for_cond: false,
..self.ctx()
};
self.with_ctx(ctx)
.parse_stmt_internal(start, include_decl, top_level, decorators)
.map(From::from)
}

Expand Down
34 changes: 34 additions & 0 deletions crates/swc_ecma_parser/tests/typescript/vercel/web-875/input.ts
@@ -0,0 +1,34 @@


export async function postProcessHTML(
) {
const postProcessors: Array<PostProcessorFunction> = [
process.env.NEXT_RUNTIME !== 'edge' && inAmpMode
? async (html: string) => {
const optimizeAmp = require('./optimize-amp')
.default as typeof import('./optimize-amp').default
html = await optimizeAmp!(html, renderOpts.ampOptimizerConfig)
if (!renderOpts.ampSkipValidation && renderOpts.ampValidator) {
await renderOpts.ampValidator(html, pathname)
}
return html
}
: null,
process.env.NEXT_RUNTIME !== 'edge' && renderOpts.optimizeFonts
? async (html: string) => {
const getFontDefinition = (url: string): string => {
}
}
: null,
process.env.NEXT_RUNTIME !== 'edge' && renderOpts.optimizeCss
? async (html: string) => {
}
: null,
inAmpMode || hybridAmp
? (html: string) => {
return html.replace(/&amp;amp=1/g, '&amp=1')
}
: null,
].filter(nonNullable)

}

1 comment on commit 01db30f

@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: 01db30f Previous: c665918 Ratio
es/full/bugs-1 310987 ns/iter (± 16623) 302145 ns/iter (± 16577) 1.03
es/full/minify/libraries/antd 1781397600 ns/iter (± 30219133) 1592472124 ns/iter (± 31502249) 1.12
es/full/minify/libraries/d3 327460891 ns/iter (± 4232900) 292157209 ns/iter (± 5562411) 1.12
es/full/minify/libraries/echarts 1360038360 ns/iter (± 12264649) 1206121141 ns/iter (± 11522412) 1.13
es/full/minify/libraries/jquery 100764211 ns/iter (± 2694558) 89105314 ns/iter (± 906653) 1.13
es/full/minify/libraries/lodash 114258472 ns/iter (± 1657267) 103588871 ns/iter (± 1045686) 1.10
es/full/minify/libraries/moment 56051808 ns/iter (± 909252) 51607467 ns/iter (± 456727) 1.09
es/full/minify/libraries/react 20932723 ns/iter (± 228381) 18802019 ns/iter (± 171858) 1.11
es/full/minify/libraries/terser 295502667 ns/iter (± 6542611) 247816483 ns/iter (± 10251748) 1.19
es/full/minify/libraries/three 526162730 ns/iter (± 6071390) 440508851 ns/iter (± 6967671) 1.19
es/full/minify/libraries/typescript 3414818458 ns/iter (± 18063098) 3020447589 ns/iter (± 63806282) 1.13
es/full/minify/libraries/victory 809035184 ns/iter (± 15729455) 639841330 ns/iter (± 16813881) 1.26
es/full/minify/libraries/vue 152802856 ns/iter (± 4728462) 127599772 ns/iter (± 938005) 1.20
es/full/codegen/es3 28731 ns/iter (± 35) 28481 ns/iter (± 191) 1.01
es/full/codegen/es5 28762 ns/iter (± 53) 28881 ns/iter (± 143) 1.00
es/full/codegen/es2015 28758 ns/iter (± 28) 28527 ns/iter (± 153) 1.01
es/full/codegen/es2016 28815 ns/iter (± 63) 28434 ns/iter (± 210) 1.01
es/full/codegen/es2017 28768 ns/iter (± 38) 28364 ns/iter (± 130) 1.01
es/full/codegen/es2018 28782 ns/iter (± 40) 28369 ns/iter (± 113) 1.01
es/full/codegen/es2019 28784 ns/iter (± 73) 28426 ns/iter (± 159) 1.01
es/full/codegen/es2020 28762 ns/iter (± 60) 28466 ns/iter (± 155) 1.01
es/full/all/es3 187440589 ns/iter (± 4127629) 178296542 ns/iter (± 2342481) 1.05
es/full/all/es5 176823383 ns/iter (± 4049776) 173520028 ns/iter (± 1778519) 1.02
es/full/all/es2015 138636022 ns/iter (± 1933832) 130758308 ns/iter (± 1174019) 1.06
es/full/all/es2016 135461524 ns/iter (± 3349038) 130028866 ns/iter (± 2250490) 1.04
es/full/all/es2017 134492978 ns/iter (± 2312005) 127178227 ns/iter (± 1059894) 1.06
es/full/all/es2018 132566535 ns/iter (± 3184680) 123214631 ns/iter (± 1416576) 1.08
es/full/all/es2019 130063263 ns/iter (± 3553001) 121844239 ns/iter (± 1623698) 1.07
es/full/all/es2020 121387588 ns/iter (± 1659426) 116265068 ns/iter (± 847500) 1.04
es/full/parser 515005 ns/iter (± 10358) 504795 ns/iter (± 9039) 1.02
es/full/base/fixer 22819 ns/iter (± 33) 22442 ns/iter (± 192) 1.02
es/full/base/resolver_and_hygiene 83326 ns/iter (± 94) 83308 ns/iter (± 390) 1.00
serialization of serde 121 ns/iter (± 0) 124 ns/iter (± 0) 0.98
css/minify/libraries/bootstrap 29127435 ns/iter (± 217886) 26956226 ns/iter (± 232196) 1.08
css/visitor/compare/clone 2150211 ns/iter (± 79035) 2128992 ns/iter (± 17869) 1.01
css/visitor/compare/visit_mut_span 2370471 ns/iter (± 16295) 2288385 ns/iter (± 8880) 1.04
css/visitor/compare/visit_mut_span_panic 2408985 ns/iter (± 14057) 2354891 ns/iter (± 9190) 1.02
css/visitor/compare/fold_span 3153412 ns/iter (± 80809) 3067590 ns/iter (± 17185) 1.03
css/visitor/compare/fold_span_panic 3326931 ns/iter (± 16756) 3223110 ns/iter (± 21639) 1.03
css/lexer/bootstrap_5_1_3 5148263 ns/iter (± 109408) 5085373 ns/iter (± 31470) 1.01
css/lexer/foundation_6_7_4 4319727 ns/iter (± 7437) 4236599 ns/iter (± 22308) 1.02
css/lexer/tailwind_3_1_1 820270 ns/iter (± 163) 810486 ns/iter (± 2632) 1.01
css/parser/bootstrap_5_1_3 22071583 ns/iter (± 147861) 20884401 ns/iter (± 194966) 1.06
css/parser/foundation_6_7_4 17693101 ns/iter (± 475164) 16735660 ns/iter (± 109962) 1.06
css/parser/tailwind_3_1_1 3324730 ns/iter (± 27268) 3257623 ns/iter (± 11785) 1.02
es/codegen/colors 306631 ns/iter (± 173290) 705240 ns/iter (± 409311) 0.43
es/codegen/large 1129709 ns/iter (± 564407) 1154564 ns/iter (± 594798) 0.98
es/codegen/with-parser/colors 47105 ns/iter (± 314) 47080 ns/iter (± 364) 1.00
es/codegen/with-parser/large 515105 ns/iter (± 1033) 508046 ns/iter (± 2795) 1.01
es/minify/libraries/antd 1507532962 ns/iter (± 16489070) 1389500330 ns/iter (± 23164633) 1.08
es/minify/libraries/d3 284330716 ns/iter (± 3538501) 246656337 ns/iter (± 2616939) 1.15
es/minify/libraries/echarts 1164392654 ns/iter (± 4679526) 1052875022 ns/iter (± 21919989) 1.11
es/minify/libraries/jquery 83237062 ns/iter (± 706295) 78290289 ns/iter (± 2284787) 1.06
es/minify/libraries/lodash 99422233 ns/iter (± 1667534) 93405630 ns/iter (± 1235206) 1.06
es/minify/libraries/moment 47936411 ns/iter (± 483959) 45013234 ns/iter (± 647121) 1.06
es/minify/libraries/react 17786494 ns/iter (± 178256) 16875952 ns/iter (± 145221) 1.05
es/minify/libraries/terser 233965961 ns/iter (± 2311305) 206152441 ns/iter (± 4195729) 1.13
es/minify/libraries/three 414643604 ns/iter (± 9000240) 352906126 ns/iter (± 9570954) 1.17
es/minify/libraries/typescript 2787833062 ns/iter (± 27322859) 2576376763 ns/iter (± 23178671) 1.08
es/minify/libraries/victory 655240208 ns/iter (± 12481010) 566242260 ns/iter (± 13989560) 1.16
es/minify/libraries/vue 124672099 ns/iter (± 2285814) 115915455 ns/iter (± 1706840) 1.08
es/visitor/compare/clone 2352686 ns/iter (± 20036) 2330430 ns/iter (± 23317) 1.01
es/visitor/compare/visit_mut_span 2750719 ns/iter (± 13907) 2734238 ns/iter (± 12590) 1.01
es/visitor/compare/visit_mut_span_panic 2796696 ns/iter (± 13811) 2757526 ns/iter (± 8371) 1.01
es/visitor/compare/fold_span 3910334 ns/iter (± 20100) 3813288 ns/iter (± 16753) 1.03
es/visitor/compare/fold_span_panic 4047574 ns/iter (± 54368) 3968939 ns/iter (± 12222) 1.02
es/lexer/colors 13084 ns/iter (± 7) 13078 ns/iter (± 75) 1.00
es/lexer/angular 6345345 ns/iter (± 9034) 6364377 ns/iter (± 3579) 1.00
es/lexer/backbone 783922 ns/iter (± 282) 787387 ns/iter (± 619) 1.00
es/lexer/jquery 4379053 ns/iter (± 1719) 4400121 ns/iter (± 5021) 1.00
es/lexer/jquery mobile 6864056 ns/iter (± 9051) 6861330 ns/iter (± 16878) 1.00
es/lexer/mootools 3438053 ns/iter (± 22277) 3415498 ns/iter (± 21952) 1.01
es/lexer/underscore 648236 ns/iter (± 119) 647551 ns/iter (± 6471) 1.00
es/lexer/three 20887612 ns/iter (± 15405) 20652250 ns/iter (± 104527) 1.01
es/lexer/yui 3852983 ns/iter (± 996) 3864864 ns/iter (± 10617) 1.00
es/parser/colors 28854 ns/iter (± 52) 28587 ns/iter (± 131) 1.01
es/parser/angular 15995707 ns/iter (± 303691) 14792274 ns/iter (± 126100) 1.08
es/parser/backbone 2176085 ns/iter (± 10327) 2145890 ns/iter (± 14956) 1.01
es/parser/jquery 12415528 ns/iter (± 220949) 11732241 ns/iter (± 133203) 1.06
es/parser/jquery mobile 20582463 ns/iter (± 331497) 18090272 ns/iter (± 234850) 1.14
es/parser/mootools 9170740 ns/iter (± 51601) 8764621 ns/iter (± 57866) 1.05
es/parser/underscore 1837595 ns/iter (± 10662) 1809223 ns/iter (± 15691) 1.02
es/parser/three 57758441 ns/iter (± 285549) 52754680 ns/iter (± 1248451) 1.09
es/parser/yui 9431017 ns/iter (± 154765) 8891077 ns/iter (± 65233) 1.06
es/preset-env/usage/builtin_type 144997 ns/iter (± 36068) 145083 ns/iter (± 34760) 1.00
es/preset-env/usage/property 21840 ns/iter (± 125) 21335 ns/iter (± 165) 1.02
es/resolver/typescript 125143204 ns/iter (± 3708599) 124924089 ns/iter (± 3122475) 1.00
es/fixer/typescript 94996287 ns/iter (± 2253378) 85666969 ns/iter (± 1400457) 1.11
es/hygiene/typescript 201455406 ns/iter (± 1159470) 183647905 ns/iter (± 2177032) 1.10
es/resolver_with_hygiene/typescript 352253258 ns/iter (± 1665354) 334415360 ns/iter (± 4620513) 1.05
es/visitor/base-perf/module_clone 81098 ns/iter (± 463) 80710 ns/iter (± 370) 1.00
es/visitor/base-perf/fold_empty 90735 ns/iter (± 333) 90208 ns/iter (± 343) 1.01
es/visitor/base-perf/fold_noop_impl_all 90871 ns/iter (± 364) 89662 ns/iter (± 1108) 1.01
es/visitor/base-perf/fold_noop_impl_vec 90924 ns/iter (± 288) 89932 ns/iter (± 721) 1.01
es/visitor/base-perf/boxing_boxed_clone 56 ns/iter (± 0) 61 ns/iter (± 0) 0.92
es/visitor/base-perf/boxing_unboxed_clone 41 ns/iter (± 0) 41 ns/iter (± 0) 1
es/visitor/base-perf/boxing_boxed 102 ns/iter (± 0) 106 ns/iter (± 0) 0.96
es/visitor/base-perf/boxing_unboxed 78 ns/iter (± 0) 90 ns/iter (± 0) 0.87
es/visitor/base-perf/visit_contains_this 3624 ns/iter (± 73) 3530 ns/iter (± 79) 1.03
es/base/parallel/resolver/typescript 6427992707 ns/iter (± 620000710) 6420041886 ns/iter (± 579899614) 1.00
es/base/parallel/hygiene/typescript 2281148809 ns/iter (± 40553903) 2169233766 ns/iter (± 31387359) 1.05
misc/visitors/time-complexity/time 5 103 ns/iter (± 0) 103 ns/iter (± 0) 1
misc/visitors/time-complexity/time 10 330 ns/iter (± 5) 339 ns/iter (± 4) 0.97
misc/visitors/time-complexity/time 15 649 ns/iter (± 0) 670 ns/iter (± 7) 0.97
misc/visitors/time-complexity/time 20 1242 ns/iter (± 8) 1210 ns/iter (± 6) 1.03
misc/visitors/time-complexity/time 40 6571 ns/iter (± 73) 6142 ns/iter (± 26) 1.07
misc/visitors/time-complexity/time 60 17015 ns/iter (± 42) 15557 ns/iter (± 81) 1.09
es/full-target/es2016 253426 ns/iter (± 436) 254534 ns/iter (± 456) 1.00
es/full-target/es2017 245689 ns/iter (± 397) 246221 ns/iter (± 1467) 1.00
es/full-target/es2018 235023 ns/iter (± 223) 235642 ns/iter (± 849) 1.00
es2020_nullish_coalescing 92512 ns/iter (± 502) 92344 ns/iter (± 526) 1.00
es2020_optional_chaining 124853 ns/iter (± 337) 123817 ns/iter (± 746) 1.01
es2022_class_properties 149327 ns/iter (± 320) 148167 ns/iter (± 718) 1.01
es2018_object_rest_spread 95956 ns/iter (± 103) 95220 ns/iter (± 591) 1.01
es2019_optional_catch_binding 85239 ns/iter (± 200) 85183 ns/iter (± 344) 1.00
es2017_async_to_generator 85906 ns/iter (± 227) 85896 ns/iter (± 495) 1.00
es2016_exponentiation 90031 ns/iter (± 130) 89518 ns/iter (± 278) 1.01
es2015_arrow 94614 ns/iter (± 255) 93576 ns/iter (± 254) 1.01
es2015_block_scoped_fn 91616 ns/iter (± 230) 92120 ns/iter (± 372) 0.99
es2015_block_scoping 170330 ns/iter (± 257) 169672 ns/iter (± 847) 1.00

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

Please sign in to comment.