Skip to content

Commit

Permalink
fix(es/react): Don't panic on key without a value (#6945)
Browse files Browse the repository at this point in the history
**Related issue:**

 - Closes #6939.
  • Loading branch information
kdy1 committed Feb 15, 2023
1 parent 4c67756 commit 14454c9
Show file tree
Hide file tree
Showing 5 changed files with 22 additions and 4 deletions.
16 changes: 12 additions & 4 deletions crates/swc_ecma_transforms_react/src/jsx/mod.rs
Expand Up @@ -533,10 +533,18 @@ where
.value
.and_then(jsx_attr_value_to_expr)
.map(|expr| expr.as_arg());
assert_ne!(
key, None,
"value of property 'key' should not be empty"
);

if key.is_none() {
HANDLER.with(|handler| {
handler
.struct_span_err(
i.span,
"The value of property 'key' should not \
be empty",
)
.emit();
});
}
continue;
}

Expand Down
@@ -0,0 +1 @@
const test = <div key></div>
@@ -0,0 +1 @@
{ "runtime": "automatic" }
@@ -0,0 +1,2 @@
import { jsx as _jsx } from "react/jsx-runtime";
const test = /*#__PURE__*/ _jsx("div", {});
@@ -0,0 +1,6 @@

x The value of property 'key' should not be empty
,-[input.js:1:1]
1 | const test = <div key></div>
: ^^^
`----

1 comment on commit 14454c9

@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: 14454c9 Previous: 85fffda Ratio
es/full/bugs-1 305805 ns/iter (± 4452) 296804 ns/iter (± 5345) 1.03
es/full/minify/libraries/antd 1567820530 ns/iter (± 14708860) 1619309349 ns/iter (± 33715858) 0.97
es/full/minify/libraries/d3 294809614 ns/iter (± 5566964) 279737578 ns/iter (± 7083550) 1.05
es/full/minify/libraries/echarts 1205063522 ns/iter (± 23072681) 1186798028 ns/iter (± 30602820) 1.02
es/full/minify/libraries/jquery 90332936 ns/iter (± 650635) 86424746 ns/iter (± 889910) 1.05
es/full/minify/libraries/lodash 106178557 ns/iter (± 615685) 102090072 ns/iter (± 1785470) 1.04
es/full/minify/libraries/moment 52271203 ns/iter (± 188209) 51183861 ns/iter (± 591274) 1.02
es/full/minify/libraries/react 19070620 ns/iter (± 110534) 18876515 ns/iter (± 133019) 1.01
es/full/minify/libraries/terser 244185875 ns/iter (± 2255454) 235336331 ns/iter (± 4274087) 1.04
es/full/minify/libraries/three 424819830 ns/iter (± 2591918) 412709672 ns/iter (± 10445254) 1.03
es/full/minify/libraries/typescript 2995517152 ns/iter (± 18146481) 3042544971 ns/iter (± 17309921) 0.98
es/full/minify/libraries/victory 640763887 ns/iter (± 6385320) 627352974 ns/iter (± 9617256) 1.02
es/full/minify/libraries/vue 129577513 ns/iter (± 814815) 125422710 ns/iter (± 1561942) 1.03
es/full/codegen/es3 26187 ns/iter (± 43) 24934 ns/iter (± 354) 1.05
es/full/codegen/es5 26234 ns/iter (± 43) 25587 ns/iter (± 165) 1.03
es/full/codegen/es2015 26175 ns/iter (± 51) 24985 ns/iter (± 199) 1.05
es/full/codegen/es2016 26177 ns/iter (± 30) 24928 ns/iter (± 79) 1.05
es/full/codegen/es2017 26208 ns/iter (± 61) 25086 ns/iter (± 201) 1.04
es/full/codegen/es2018 26234 ns/iter (± 54) 24985 ns/iter (± 133) 1.05
es/full/codegen/es2019 26242 ns/iter (± 47) 24993 ns/iter (± 141) 1.05
es/full/codegen/es2020 26193 ns/iter (± 37) 24881 ns/iter (± 279) 1.05
es/full/all/es3 173563757 ns/iter (± 3419479) 170221854 ns/iter (± 2479581) 1.02
es/full/all/es5 163389423 ns/iter (± 3245031) 164339272 ns/iter (± 1649068) 0.99
es/full/all/es2015 126596631 ns/iter (± 2145784) 123521427 ns/iter (± 2591153) 1.02
es/full/all/es2016 124468975 ns/iter (± 1460940) 122398873 ns/iter (± 1494343) 1.02
es/full/all/es2017 122399312 ns/iter (± 1152015) 121445691 ns/iter (± 730948) 1.01
es/full/all/es2018 119857891 ns/iter (± 816586) 118102954 ns/iter (± 1256833) 1.01
es/full/all/es2019 118627487 ns/iter (± 772279) 117686351 ns/iter (± 762398) 1.01
es/full/all/es2020 114935241 ns/iter (± 638199) 113505952 ns/iter (± 1003053) 1.01
es/full/parser 543513 ns/iter (± 7373) 539831 ns/iter (± 11435) 1.01
es/full/base/fixer 21970 ns/iter (± 25) 20947 ns/iter (± 102) 1.05
es/full/base/resolver_and_hygiene 81574 ns/iter (± 119) 77872 ns/iter (± 784) 1.05
serialization of ast node 121 ns/iter (± 0) 118 ns/iter (± 1) 1.03
serialization of serde 126 ns/iter (± 0) 125 ns/iter (± 1) 1.01
css/minify/libraries/bootstrap 27765671 ns/iter (± 350802) 27079741 ns/iter (± 346866) 1.03
css/visitor/compare/clone 2079819 ns/iter (± 28082) 2012778 ns/iter (± 29367) 1.03
css/visitor/compare/visit_mut_span 2247940 ns/iter (± 3319) 2182495 ns/iter (± 22613) 1.03
css/visitor/compare/visit_mut_span_panic 2339422 ns/iter (± 4902) 2240897 ns/iter (± 24138) 1.04
css/visitor/compare/fold_span 3030115 ns/iter (± 27257) 2953992 ns/iter (± 42177) 1.03
css/visitor/compare/fold_span_panic 3190107 ns/iter (± 16894) 3044100 ns/iter (± 42357) 1.05
css/lexer/bootstrap_5_1_3 5251283 ns/iter (± 9066) 4965517 ns/iter (± 95290) 1.06
css/lexer/foundation_6_7_4 4410723 ns/iter (± 2687) 4195187 ns/iter (± 28548) 1.05
css/lexer/tailwind_3_1_1 838863 ns/iter (± 515) 791017 ns/iter (± 6240) 1.06
css/parser/bootstrap_5_1_3 21831649 ns/iter (± 66771) 20923375 ns/iter (± 365713) 1.04
css/parser/foundation_6_7_4 17406386 ns/iter (± 14671) 16453563 ns/iter (± 187595) 1.06
css/parser/tailwind_3_1_1 3343336 ns/iter (± 4116) 3152329 ns/iter (± 38749) 1.06
es/codegen/colors 330129 ns/iter (± 185669) 319112 ns/iter (± 182250) 1.03
es/codegen/large 1230440 ns/iter (± 635910) 1139228 ns/iter (± 577219) 1.08
es/codegen/with-parser/colors 48683 ns/iter (± 351) 47070 ns/iter (± 512) 1.03
es/codegen/with-parser/large 534462 ns/iter (± 1344) 516825 ns/iter (± 4335) 1.03
es/minify/libraries/antd 1330926953 ns/iter (± 16888494) 1393391740 ns/iter (± 20511693) 0.96
es/minify/libraries/d3 244102078 ns/iter (± 2341549) 242827344 ns/iter (± 3511580) 1.01
es/minify/libraries/echarts 1013249256 ns/iter (± 8335690) 1015348040 ns/iter (± 9849935) 1.00
es/minify/libraries/jquery 77196654 ns/iter (± 457955) 75776970 ns/iter (± 616044) 1.02
es/minify/libraries/lodash 93869014 ns/iter (± 1038813) 91824144 ns/iter (± 945557) 1.02
es/minify/libraries/moment 45237550 ns/iter (± 152754) 44207380 ns/iter (± 440055) 1.02
es/minify/libraries/react 16796855 ns/iter (± 104052) 16633484 ns/iter (± 167043) 1.01
es/minify/libraries/terser 202910571 ns/iter (± 1700859) 202418369 ns/iter (± 3285808) 1.00
es/minify/libraries/three 341100882 ns/iter (± 3821424) 348854856 ns/iter (± 12109844) 0.98
es/minify/libraries/typescript 2549228797 ns/iter (± 11843739) 2614657976 ns/iter (± 32329916) 0.97
es/minify/libraries/victory 531721832 ns/iter (± 3978974) 536651122 ns/iter (± 21475595) 0.99
es/minify/libraries/vue 114022002 ns/iter (± 802788) 111367327 ns/iter (± 995633) 1.02
es/visitor/compare/clone 2434935 ns/iter (± 26730) 2280631 ns/iter (± 31128) 1.07
es/visitor/compare/visit_mut_span 2851699 ns/iter (± 2101) 2669837 ns/iter (± 30065) 1.07
es/visitor/compare/visit_mut_span_panic 2865649 ns/iter (± 8753) 2706236 ns/iter (± 39120) 1.06
es/visitor/compare/fold_span 3957211 ns/iter (± 7487) 3787374 ns/iter (± 39874) 1.04
es/visitor/compare/fold_span_panic 4098563 ns/iter (± 8836) 3912036 ns/iter (± 62917) 1.05
es/lexer/colors 17171 ns/iter (± 15) 16564 ns/iter (± 113) 1.04
es/lexer/angular 8234116 ns/iter (± 4895) 7904330 ns/iter (± 51435) 1.04
es/lexer/backbone 1075791 ns/iter (± 2966) 1031285 ns/iter (± 18258) 1.04
es/lexer/jquery 5954176 ns/iter (± 3145) 5701042 ns/iter (± 22561) 1.04
es/lexer/jquery mobile 9202106 ns/iter (± 6418) 8747447 ns/iter (± 39116) 1.05
es/lexer/mootools 4660248 ns/iter (± 1924) 4465636 ns/iter (± 39887) 1.04
es/lexer/underscore 895872 ns/iter (± 506) 858001 ns/iter (± 3434) 1.04
es/lexer/three 27856437 ns/iter (± 36205) 26641949 ns/iter (± 175597) 1.05
es/lexer/yui 5052703 ns/iter (± 3402) 4843786 ns/iter (± 55140) 1.04
es/parser/colors 30378 ns/iter (± 167) 28504 ns/iter (± 351) 1.07
es/parser/angular 15419725 ns/iter (± 120677) 14824271 ns/iter (± 164597) 1.04
es/parser/backbone 2332927 ns/iter (± 16670) 2201992 ns/iter (± 24992) 1.06
es/parser/jquery 12631361 ns/iter (± 79166) 11964481 ns/iter (± 176076) 1.06
es/parser/jquery mobile 19660079 ns/iter (± 464762) 18645842 ns/iter (± 187384) 1.05
es/parser/mootools 9666879 ns/iter (± 45198) 9085516 ns/iter (± 68882) 1.06
es/parser/underscore 1984286 ns/iter (± 10648) 1875704 ns/iter (± 23239) 1.06
es/parser/three 56129369 ns/iter (± 459629) 52641535 ns/iter (± 762099) 1.07
es/parser/yui 9588420 ns/iter (± 57504) 9167980 ns/iter (± 84434) 1.05
es/preset-env/usage/builtin_type 143131 ns/iter (± 33139) 137337 ns/iter (± 32951) 1.04
es/preset-env/usage/property 21198 ns/iter (± 65) 20632 ns/iter (± 217) 1.03
es/resolver/typescript 110058932 ns/iter (± 1439901) 115578551 ns/iter (± 6304571) 0.95
es/fixer/typescript 83927850 ns/iter (± 486858) 90133165 ns/iter (± 809197) 0.93
es/hygiene/typescript 176882386 ns/iter (± 2244793) 188111504 ns/iter (± 2452046) 0.94
es/resolver_with_hygiene/typescript 303724843 ns/iter (± 1927859) 320726190 ns/iter (± 4740643) 0.95
es/visitor/base-perf/module_clone 75792 ns/iter (± 1068) 72491 ns/iter (± 1796) 1.05
es/visitor/base-perf/fold_empty 85815 ns/iter (± 1582) 81641 ns/iter (± 1204) 1.05
es/visitor/base-perf/fold_noop_impl_all 86213 ns/iter (± 1737) 82754 ns/iter (± 1839) 1.04
es/visitor/base-perf/fold_noop_impl_vec 85644 ns/iter (± 1044) 81685 ns/iter (± 977) 1.05
es/visitor/base-perf/boxing_boxed_clone 56 ns/iter (± 0) 53 ns/iter (± 0) 1.06
es/visitor/base-perf/boxing_unboxed_clone 59 ns/iter (± 0) 56 ns/iter (± 0) 1.05
es/visitor/base-perf/boxing_boxed 105 ns/iter (± 0) 99 ns/iter (± 0) 1.06
es/visitor/base-perf/boxing_unboxed 102 ns/iter (± 0) 99 ns/iter (± 1) 1.03
es/visitor/base-perf/visit_contains_this 3442 ns/iter (± 61) 3438 ns/iter (± 88) 1.00
es/base/parallel/resolver/typescript 5318737483 ns/iter (± 549796295) 5619283312 ns/iter (± 497678798) 0.95
es/base/parallel/hygiene/typescript 2135375121 ns/iter (± 30431542) 2297586728 ns/iter (± 30439167) 0.93
misc/visitors/time-complexity/time 5 94 ns/iter (± 0) 102 ns/iter (± 0) 0.92
misc/visitors/time-complexity/time 10 351 ns/iter (± 0) 325 ns/iter (± 3) 1.08
misc/visitors/time-complexity/time 15 654 ns/iter (± 2) 634 ns/iter (± 6) 1.03
misc/visitors/time-complexity/time 20 1203 ns/iter (± 2) 1166 ns/iter (± 16) 1.03
misc/visitors/time-complexity/time 40 6153 ns/iter (± 29) 6248 ns/iter (± 43) 0.98
misc/visitors/time-complexity/time 60 15591 ns/iter (± 49) 16271 ns/iter (± 181) 0.96
es/full-target/es2016 188095 ns/iter (± 750) 183855 ns/iter (± 2213) 1.02
es/full-target/es2017 183219 ns/iter (± 501) 176265 ns/iter (± 774) 1.04
es/full-target/es2018 171821 ns/iter (± 1519) 167080 ns/iter (± 1577) 1.03
es2020_nullish_coalescing 66796 ns/iter (± 507) 64338 ns/iter (± 778) 1.04
es2020_optional_chaining 96073 ns/iter (± 9300) 92555 ns/iter (± 8137) 1.04
es2022_class_properties 94516 ns/iter (± 247) 90283 ns/iter (± 494) 1.05
es2018_object_rest_spread 71621 ns/iter (± 219) 68544 ns/iter (± 672) 1.04
es2019_optional_catch_binding 61370 ns/iter (± 147) 58667 ns/iter (± 849) 1.05
es2017_async_to_generator 61569 ns/iter (± 86) 59036 ns/iter (± 375) 1.04
es2016_exponentiation 65106 ns/iter (± 76) 62763 ns/iter (± 455) 1.04
es2015_arrow 70842 ns/iter (± 172) 67411 ns/iter (± 570) 1.05
es2015_block_scoped_fn 66401 ns/iter (± 161) 63571 ns/iter (± 368) 1.04
es2015_block_scoping 151543 ns/iter (± 9934) 153193 ns/iter (± 9783) 0.99
es2015_classes 117079 ns/iter (± 465) 112797 ns/iter (± 1338) 1.04
es2015_computed_props 61104 ns/iter (± 139) 58719 ns/iter (± 568) 1.04
es2015_destructuring 117717 ns/iter (± 1798) 110884 ns/iter (± 937) 1.06
es2015_duplicate_keys 63878 ns/iter (± 75) 61095 ns/iter (± 511) 1.05
es2015_parameters 79643 ns/iter (± 207) 75950 ns/iter (± 537) 1.05
es2015_fn_name 65975 ns/iter (± 311) 63541 ns/iter (± 682) 1.04
es2015_for_of 64854 ns/iter (± 81) 61899 ns/iter (± 803) 1.05
es2015_instanceof 62969 ns/iter (± 109) 60457 ns/iter (± 476) 1.04
es2015_shorthand_property 61204 ns/iter (± 168) 58636 ns/iter (± 254) 1.04
es2015_spread 61218 ns/iter (± 843) 58523 ns/iter (± 355) 1.05
es2015_sticky_regex 62323 ns/iter (± 100) 59650 ns/iter (± 585) 1.04
es2015_typeof_symbol 62176 ns/iter (± 133) 60361 ns/iter (± 434) 1.03
es/transform/baseline/base 51813 ns/iter (± 104) 50159 ns/iter (± 449) 1.03
es/transform/baseline/common_reserved_word 63125 ns/iter (± 74) 59857 ns/iter (± 367) 1.05
es/transform/baseline/common_typescript 143069 ns/iter (± 1557) 162118 ns/iter (± 1748) 0.88
es/target/es3 169479 ns/iter (± 350) 160466 ns/iter (± 1043) 1.06
es/target/es2015 631609 ns/iter (± 1085) 576490 ns/iter (± 4133) 1.10
es/target/es2016 65244 ns/iter (± 133) 61144 ns/iter (± 460) 1.07
es/target/es2017 61565 ns/iter (± 607) 58138 ns/iter (± 855) 1.06
es/target/es2018 79686 ns/iter (± 154) 76284 ns/iter (± 488) 1.04
es/target/es2020 129291 ns/iter (± 189) 122921 ns/iter (± 1075) 1.05
babelify-only 678704 ns/iter (± 934) 652846 ns/iter (± 5196) 1.04
parse_and_babelify_angular 42507356 ns/iter (± 1004474) 42098751 ns/iter (± 1346833) 1.01
parse_and_babelify_backbone 5333517 ns/iter (± 29312) 5244304 ns/iter (± 24733) 1.02
parse_and_babelify_jquery 30455747 ns/iter (± 261021) 30728822 ns/iter (± 451026) 0.99
parse_and_babelify_jquery_mobile 52516390 ns/iter (± 331064) 53432711 ns/iter (± 746412) 0.98
parse_and_babelify_mootools 30817169 ns/iter (± 346083) 31297533 ns/iter (± 652603) 0.98
parse_and_babelify_underscore 4346946 ns/iter (± 22018) 4318166 ns/iter (± 39409) 1.01
parse_and_babelify_yui 30697596 ns/iter (± 276033) 30453026 ns/iter (± 927394) 1.01
html/minify/document/css_spec 41347957 ns/iter (± 154875) 39757298 ns/iter (± 433505) 1.04
html/minify/document/github 17476510 ns/iter (± 15551) 17015244 ns/iter (± 234217) 1.03
html/minify/document/stackoverflow 15656077 ns/iter (± 21045) 15005297 ns/iter (± 111668) 1.04
html/minify/document_fragment/css_spec 39403995 ns/iter (± 144588) 37810211 ns/iter (± 378165) 1.04
html/minify/document_fragment/github 16838788 ns/iter (± 14502) 16132972 ns/iter (± 205215) 1.04
html/minify/document_fragment/stackoverflow 15287129 ns/iter (± 24925) 14447815 ns/iter (± 71256) 1.06
html/document/visitor/compare/clone 342306 ns/iter (± 1516) 327814 ns/iter (± 4151) 1.04
html/document/visitor/compare/visit_mut_span 373251 ns/iter (± 1498) 347309 ns/iter (± 3299) 1.07
html/document/visitor/compare/visit_mut_span_panic 379926 ns/iter (± 1895) 355164 ns/iter (± 2648) 1.07
html/document/visitor/compare/fold_span 402872 ns/iter (± 2219) 401686 ns/iter (± 9891) 1.00
html/document/visitor/compare/fold_span_panic 463440 ns/iter (± 2145) 442400 ns/iter (± 3284) 1.05
html/document_fragment/visitor/compare/clone 340600 ns/iter (± 2302) 324691 ns/iter (± 3429) 1.05
html/document_fragment/visitor/compare/visit_mut_span 364961 ns/iter (± 1886) 351623 ns/iter (± 4374) 1.04
html/document_fragment/visitor/compare/visit_mut_span_panic 372884 ns/iter (± 1808) 364917 ns/iter (± 4614) 1.02
html/document_fragment/visitor/compare/fold_span 406563 ns/iter (± 2609) 391542 ns/iter (± 3662) 1.04
html/document_fragment/visitor/compare/fold_span_panic 461948 ns/iter (± 2245) 444415 ns/iter (± 3544) 1.04
html/lexer/css_2021_spec 15633029 ns/iter (± 13099) 14857046 ns/iter (± 170972) 1.05
html/lexer/github_com_17_05_2022 6049202 ns/iter (± 77783) 5722577 ns/iter (± 29258) 1.06
html/lexer/stackoverflow_com_17_05_2022 5651324 ns/iter (± 7421) 5348194 ns/iter (± 39504) 1.06
html/parser/parser_document/css_2021_spec 25161427 ns/iter (± 103057) 24134715 ns/iter (± 281875) 1.04
html/parser/parser_document/github_com_17_05_2022 8744972 ns/iter (± 7780) 8417538 ns/iter (± 79087) 1.04
html/parser/parser_document/stackoverflow_com_17_05_2022 7687492 ns/iter (± 5425) 7382914 ns/iter (± 43072) 1.04
html/parser/parser_document_fragment/css_2021_spec 25404608 ns/iter (± 165481) 24367926 ns/iter (± 123245) 1.04
html/parser/parser_document_fragment/github_com_17_05_2022 8774639 ns/iter (± 9467) 8369631 ns/iter (± 70410) 1.05
html/parser/parser_document_fragment/stackoverflow_com_17_05_2022 7730238 ns/iter (± 8084) 7366182 ns/iter (± 41671) 1.05

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

Please sign in to comment.