Skip to content

Commit

Permalink
fix(es/typescript): Don't panic of @jsxFrag null (#7540)
Browse files Browse the repository at this point in the history
**Related issue:**

 - Closes #7539.
  • Loading branch information
kdy1 committed Jun 19, 2023
1 parent d38c409 commit 76aa91f
Show file tree
Hide file tree
Showing 6 changed files with 18 additions and 0 deletions.
9 changes: 9 additions & 0 deletions crates/swc/tests/fixture/issues-7xxx/7539/input/.swcrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"jsc": {
"parser": {
"syntax": "typescript",
"tsx": true
}
},
"isModule": true
}
3 changes: 3 additions & 0 deletions crates/swc/tests/fixture/issues-7xxx/7539/input/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
/* @jsx h */
/* @jsxFrag null */
<></>;
1 change: 1 addition & 0 deletions crates/swc/tests/fixture/issues-7xxx/7539/output/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/* @jsx h */ /* @jsxFrag null */ /*#__PURE__*/ h(null, null);
1 change: 1 addition & 0 deletions crates/swc_ecma_transforms_typescript/src/strip.rs
Original file line number Diff line number Diff line change
Expand Up @@ -248,6 +248,7 @@ fn id_for_jsx(e: &Expr) -> Id {
match e {
Expr::Ident(i) => i.to_id(),
Expr::Member(MemberExpr { obj, .. }) => id_for_jsx(obj),
Expr::Lit(Lit::Null(..)) => (js_word!("null"), Default::default()),
_ => {
panic!("failed to determine top-level Id for jsx expression")
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
/* @jsx h */
/* @jsxFrag null */
<></>;
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/* @jsx h */ /* @jsxFrag null */ <></>;

1 comment on commit 76aa91f

@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: 76aa91f Previous: f42fdd2 Ratio
es/full/bugs-1 304990 ns/iter (± 3663) 357387 ns/iter (± 7209) 0.85
es/full/minify/libraries/antd 1536532315 ns/iter (± 15068881) 1894867384 ns/iter (± 33413328) 0.81
es/full/minify/libraries/d3 326726784 ns/iter (± 4485657) 374257258 ns/iter (± 8553329) 0.87
es/full/minify/libraries/echarts 1262817437 ns/iter (± 19357378) 1463349284 ns/iter (± 12068537) 0.86
es/full/minify/libraries/jquery 96287268 ns/iter (± 268812) 110091642 ns/iter (± 698406) 0.87
es/full/minify/libraries/lodash 114889882 ns/iter (± 784496) 133334890 ns/iter (± 1196348) 0.86
es/full/minify/libraries/moment 56537539 ns/iter (± 132425) 63503576 ns/iter (± 583521) 0.89
es/full/minify/libraries/react 20397978 ns/iter (± 207756) 22693856 ns/iter (± 148355) 0.90
es/full/minify/libraries/terser 250513575 ns/iter (± 2352413) 297997336 ns/iter (± 3515108) 0.84
es/full/minify/libraries/three 452982081 ns/iter (± 7809883) 538296215 ns/iter (± 7296576) 0.84
es/full/minify/libraries/typescript 3070068149 ns/iter (± 30395044) 3625496829 ns/iter (± 34903132) 0.85
es/full/minify/libraries/victory 665331191 ns/iter (± 5664423) 787749259 ns/iter (± 11179036) 0.84
es/full/minify/libraries/vue 140392240 ns/iter (± 1218082) 160447566 ns/iter (± 1044031) 0.88
es/full/codegen/es3 36223 ns/iter (± 84) 40065 ns/iter (± 95) 0.90
es/full/codegen/es5 36453 ns/iter (± 91) 40085 ns/iter (± 103) 0.91
es/full/codegen/es2015 36377 ns/iter (± 76) 40127 ns/iter (± 97) 0.91
es/full/codegen/es2016 36693 ns/iter (± 102) 40067 ns/iter (± 60) 0.92
es/full/codegen/es2017 36454 ns/iter (± 76) 40063 ns/iter (± 55) 0.91
es/full/codegen/es2018 36444 ns/iter (± 61) 40131 ns/iter (± 85) 0.91
es/full/codegen/es2019 36425 ns/iter (± 225) 40112 ns/iter (± 59) 0.91
es/full/codegen/es2020 36447 ns/iter (± 67) 40078 ns/iter (± 128) 0.91
es/full/all/es3 180418125 ns/iter (± 1325930) 208556208 ns/iter (± 2721954) 0.87
es/full/all/es5 169953153 ns/iter (± 994455) 199644111 ns/iter (± 1970020) 0.85
es/full/all/es2015 128009535 ns/iter (± 984928) 154141040 ns/iter (± 1312433) 0.83
es/full/all/es2016 126106501 ns/iter (± 569030) 152819690 ns/iter (± 2139082) 0.83
es/full/all/es2017 125576531 ns/iter (± 722752) 154190833 ns/iter (± 2252918) 0.81
es/full/all/es2018 123238497 ns/iter (± 760554) 150423451 ns/iter (± 1848015) 0.82
es/full/all/es2019 122888787 ns/iter (± 739799) 151297696 ns/iter (± 2376093) 0.81
es/full/all/es2020 119772085 ns/iter (± 1190506) 144884929 ns/iter (± 2090087) 0.83
es/full/parser 524067 ns/iter (± 5645) 596592 ns/iter (± 8859) 0.88
es/full/base/fixer 18573 ns/iter (± 113) 25806 ns/iter (± 45) 0.72
es/full/base/resolver_and_hygiene 94762 ns/iter (± 258) 106146 ns/iter (± 154) 0.89
serialization of serde 310 ns/iter (± 0) 282 ns/iter (± 0) 1.10
css/minify/libraries/bootstrap 30757242 ns/iter (± 175487) 35884146 ns/iter (± 343779) 0.86
css/visitor/compare/clone 2129333 ns/iter (± 30136) 2364138 ns/iter (± 4527) 0.90
css/visitor/compare/visit_mut_span 2292845 ns/iter (± 17851) 2510393 ns/iter (± 5200) 0.91
css/visitor/compare/visit_mut_span_panic 2351143 ns/iter (± 17089) 2615062 ns/iter (± 4354) 0.90
css/visitor/compare/fold_span 3116668 ns/iter (± 12180) 3321902 ns/iter (± 11985) 0.94
css/visitor/compare/fold_span_panic 3330857 ns/iter (± 15921) 3497685 ns/iter (± 11626) 0.95
css/lexer/bootstrap_5_1_3 4811773 ns/iter (± 2570) 5538881 ns/iter (± 998) 0.87
css/lexer/foundation_6_7_4 4061305 ns/iter (± 1503) 4675091 ns/iter (± 2459) 0.87
css/lexer/tailwind_3_1_1 769028 ns/iter (± 777) 888340 ns/iter (± 226) 0.87
css/parser/bootstrap_5_1_3 20466887 ns/iter (± 71918) 23940380 ns/iter (± 143394) 0.85
css/parser/foundation_6_7_4 16452112 ns/iter (± 29570) 19088951 ns/iter (± 37967) 0.86
css/parser/tailwind_3_1_1 3182061 ns/iter (± 4980) 3680254 ns/iter (± 2267) 0.86
es/codegen/colors 740887 ns/iter (± 403455) 742581 ns/iter (± 406560) 1.00
es/codegen/large 2975124 ns/iter (± 1555504) 3102986 ns/iter (± 1610663) 0.96
es/codegen/with-parser/colors 49643 ns/iter (± 79) 57997 ns/iter (± 686) 0.86
es/codegen/with-parser/large 523916 ns/iter (± 1797) 578294 ns/iter (± 3573) 0.91
es/minify/libraries/antd 1347575429 ns/iter (± 12335854) 1648536078 ns/iter (± 23640967) 0.82
es/minify/libraries/d3 290884669 ns/iter (± 4080163) 325818389 ns/iter (± 2318996) 0.89
es/minify/libraries/echarts 1093644295 ns/iter (± 12797980) 1282293853 ns/iter (± 21331060) 0.85
es/minify/libraries/jquery 84640791 ns/iter (± 537283) 97436003 ns/iter (± 747454) 0.87
es/minify/libraries/lodash 104788858 ns/iter (± 773883) 121504456 ns/iter (± 890482) 0.86
es/minify/libraries/moment 49545954 ns/iter (± 179489) 56500367 ns/iter (± 353232) 0.88
es/minify/libraries/react 18173613 ns/iter (± 161735) 20385651 ns/iter (± 87517) 0.89
es/minify/libraries/terser 220101056 ns/iter (± 2166102) 251428860 ns/iter (± 2344845) 0.88
es/minify/libraries/three 384819108 ns/iter (± 11206812) 444376043 ns/iter (± 6030289) 0.87
es/minify/libraries/typescript 2659747799 ns/iter (± 11166612) 3139761059 ns/iter (± 26384918) 0.85
es/minify/libraries/victory 567944309 ns/iter (± 4362026) 671476685 ns/iter (± 10742456) 0.85
es/minify/libraries/vue 125491148 ns/iter (± 690829) 143049634 ns/iter (± 1739867) 0.88
es/visitor/compare/clone 2069455 ns/iter (± 7809) 2401065 ns/iter (± 11694) 0.86
es/visitor/compare/visit_mut_span 2407551 ns/iter (± 4819) 2799594 ns/iter (± 1670) 0.86
es/visitor/compare/visit_mut_span_panic 2453667 ns/iter (± 5313) 2831883 ns/iter (± 3820) 0.87
es/visitor/compare/fold_span 3505758 ns/iter (± 5801) 3939581 ns/iter (± 3787) 0.89
es/visitor/compare/fold_span_panic 3635751 ns/iter (± 10204) 4043698 ns/iter (± 9276) 0.90
es/lexer/colors 13479 ns/iter (± 18) 14875 ns/iter (± 34) 0.91
es/lexer/angular 6339325 ns/iter (± 24993) 6915369 ns/iter (± 11947) 0.92
es/lexer/backbone 845757 ns/iter (± 2136) 844062 ns/iter (± 2470) 1.00
es/lexer/jquery 4710100 ns/iter (± 7634) 4743355 ns/iter (± 7684) 0.99
es/lexer/jquery mobile 7232528 ns/iter (± 3092) 7314221 ns/iter (± 5640) 0.99
es/lexer/mootools 3722847 ns/iter (± 2986) 3736501 ns/iter (± 7242) 1.00
es/lexer/underscore 701226 ns/iter (± 1449) 699791 ns/iter (± 2597) 1.00
es/lexer/three 22264769 ns/iter (± 53444) 22275434 ns/iter (± 11124) 1.00
es/lexer/yui 4202830 ns/iter (± 7307) 4268864 ns/iter (± 1643) 0.98
es/parser/colors 29300 ns/iter (± 72) 33846 ns/iter (± 64) 0.87
es/parser/angular 15857069 ns/iter (± 118322) 16912234 ns/iter (± 91147) 0.94
es/parser/backbone 2169111 ns/iter (± 13147) 2440338 ns/iter (± 9275) 0.89
es/parser/jquery 13070534 ns/iter (± 287109) 13282318 ns/iter (± 92514) 0.98
es/parser/jquery mobile 19981242 ns/iter (± 259929) 20266332 ns/iter (± 177813) 0.99
es/parser/mootools 9035617 ns/iter (± 87829) 10083158 ns/iter (± 24016) 0.90
es/parser/underscore 1876429 ns/iter (± 11283) 2077804 ns/iter (± 12329) 0.90
es/parser/three 53829007 ns/iter (± 275149) 58948393 ns/iter (± 778075) 0.91
es/parser/yui 9558824 ns/iter (± 119693) 10218187 ns/iter (± 103146) 0.94
es/preset-env/usage/builtin_type 146817 ns/iter (± 32742) 155279 ns/iter (± 33816) 0.95
es/preset-env/usage/property 20322 ns/iter (± 59) 29527 ns/iter (± 62) 0.69
es/resolver/typescript 102385536 ns/iter (± 1089282) 129382169 ns/iter (± 3577586) 0.79
es/fixer/typescript 71758321 ns/iter (± 912937) 91606178 ns/iter (± 1654351) 0.78
es/hygiene/typescript 156107447 ns/iter (± 1315337) 205329028 ns/iter (± 1988120) 0.76
es/resolver_with_hygiene/typescript 306129466 ns/iter (± 5973644) 406587463 ns/iter (± 3015924) 0.75
es/visitor/base-perf/module_clone 61000 ns/iter (± 157) 85462 ns/iter (± 486) 0.71
es/visitor/base-perf/fold_empty 64739 ns/iter (± 502) 94931 ns/iter (± 410) 0.68
es/visitor/base-perf/fold_noop_impl_all 64949 ns/iter (± 201) 95307 ns/iter (± 259) 0.68
es/visitor/base-perf/fold_noop_impl_vec 64975 ns/iter (± 277) 95460 ns/iter (± 600) 0.68
es/visitor/base-perf/boxing_boxed_clone 56 ns/iter (± 0) 62 ns/iter (± 0) 0.90
es/visitor/base-perf/boxing_unboxed_clone 40 ns/iter (± 0) 44 ns/iter (± 0) 0.91
es/visitor/base-perf/boxing_boxed 110 ns/iter (± 0) 109 ns/iter (± 0) 1.01
es/visitor/base-perf/boxing_unboxed 78 ns/iter (± 0) 82 ns/iter (± 0) 0.95
es/visitor/base-perf/visit_empty 0 ns/iter (± 0)
es/visitor/base-perf/visit_contains_this 2629 ns/iter (± 11) 3526 ns/iter (± 64) 0.75
es/base/parallel/resolver/typescript 4567617212 ns/iter (± 313601235) 7031201283 ns/iter (± 434464736) 0.65
es/base/parallel/hygiene/typescript 1603987962 ns/iter (± 21850342) 2341099419 ns/iter (± 24921406) 0.69
misc/visitors/time-complexity/time 5 109 ns/iter (± 0) 106 ns/iter (± 0) 1.03
misc/visitors/time-complexity/time 10 327 ns/iter (± 0) 346 ns/iter (± 5) 0.95
misc/visitors/time-complexity/time 15 585 ns/iter (± 1) 672 ns/iter (± 0) 0.87
misc/visitors/time-complexity/time 20 1093 ns/iter (± 3) 1262 ns/iter (± 25) 0.87
misc/visitors/time-complexity/time 40 4664 ns/iter (± 3) 6854 ns/iter (± 33) 0.68
misc/visitors/time-complexity/time 60 10099 ns/iter (± 12) 17509 ns/iter (± 48) 0.58
es/full-target/es2016 242717 ns/iter (± 1421) 270177 ns/iter (± 668) 0.90
es/full-target/es2017 230924 ns/iter (± 781) 260399 ns/iter (± 468) 0.89
es/full-target/es2018 220179 ns/iter (± 673) 249178 ns/iter (± 627) 0.88
es2020_nullish_coalescing 73895 ns/iter (± 382) 99689 ns/iter (± 431) 0.74
es2020_optional_chaining 65564 ns/iter (± 193) 121999 ns/iter (± 385) 0.54
es2022_class_properties 124410 ns/iter (± 545) 157001 ns/iter (± 358) 0.79
es2018_object_rest_spread 75419 ns/iter (± 378) 101007 ns/iter (± 204) 0.75
es2019_optional_catch_binding 67686 ns/iter (± 548) 89319 ns/iter (± 318) 0.76
es2017_async_to_generator 66122 ns/iter (± 188) 90271 ns/iter (± 117) 0.73
es2016_exponentiation 71775 ns/iter (± 180) 96726 ns/iter (± 235) 0.74
es2015_arrow 74472 ns/iter (± 182) 99438 ns/iter (± 260) 0.75
es2015_block_scoped_fn 70788 ns/iter (± 242) 97592 ns/iter (± 261) 0.73
es2015_block_scoping 133382 ns/iter (± 615) 184758 ns/iter (± 224) 0.72

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

Please sign in to comment.