Skip to content

Commit

Permalink
fix(es/compat): Fix chained op-assignment of super properties (#6319)
Browse files Browse the repository at this point in the history
  • Loading branch information
magic-akari committed Nov 3, 2022
1 parent 069c14d commit 064baa3
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 2 deletions.
19 changes: 19 additions & 0 deletions crates/swc/tests/fixture/issues-6xxx/6309/input/.swcrc
@@ -0,0 +1,19 @@
{
"jsc": {
"parser": {
"syntax": "ecmascript",
"jsx": false
},
"target": "es5",
"loose": false,
"minify": {
"compress": false,
"mangle": false
}
},
"module": {
"type": "es6"
},
"minify": false,
"isModule": true
}
4 changes: 4 additions & 0 deletions crates/swc/tests/fixture/issues-6xxx/6309/input/input.js
@@ -0,0 +1,4 @@
class x {
static x = super.x += super.x += 0;
static y = super.x = super.x += 0;
}
11 changes: 11 additions & 0 deletions crates/swc/tests/fixture/issues-6xxx/6309/output/input.js
@@ -0,0 +1,11 @@
import _class_call_check from "@swc/helpers/src/_class_call_check.mjs";
import _define_property from "@swc/helpers/src/_define_property.mjs";
import _get_prototype_of from "@swc/helpers/src/_get_prototype_of.mjs";
import _set from "@swc/helpers/src/_set.mjs";
import _update from "@swc/helpers/src/_update.mjs";
var x = function x() {
"use strict";
_class_call_check(this, x);
};
_define_property(x, "x", _update(_get_prototype_of(x), "x", x, true)._ += _update(_get_prototype_of(x), "x", x, true)._ += 0);
_define_property(x, "y", _set(_get_prototype_of(x), "x", _update(_get_prototype_of(x), "x", x, true)._ += 0, x, true));
4 changes: 2 additions & 2 deletions crates/swc_ecma_transforms_classes/src/super_field.rs
Expand Up @@ -124,11 +124,11 @@ impl<'a> VisitMut for SuperFieldAccessFolder<'a> {
right,
..
}) if is_assign_to_super_prop(left) => {
right.visit_mut_children_with(self);
right.visit_mut_with(self);
self.visit_mut_super_member_set(n)
}
Expr::Assign(AssignExpr { left, right, .. }) if is_assign_to_super_prop(left) => {
right.visit_mut_children_with(self);
right.visit_mut_with(self);
self.visit_mut_super_member_update(n);
}
Expr::Call(CallExpr {
Expand Down

1 comment on commit 064baa3

@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: 064baa3 Previous: 2513862 Ratio
es/full/bugs-1 339808 ns/iter (± 48022) 363050 ns/iter (± 43405) 0.94
es/full/minify/libraries/antd 1856398174 ns/iter (± 46806771) 1890639035 ns/iter (± 78407920) 0.98
es/full/minify/libraries/d3 401701503 ns/iter (± 8657620) 441323538 ns/iter (± 17054467) 0.91
es/full/minify/libraries/echarts 1555155718 ns/iter (± 35870688) 1611952548 ns/iter (± 67458162) 0.96
es/full/minify/libraries/jquery 103256786 ns/iter (± 10774673) 103937315 ns/iter (± 4804097) 0.99
es/full/minify/libraries/lodash 124116171 ns/iter (± 18125859) 126049351 ns/iter (± 6537236) 0.98
es/full/minify/libraries/moment 61347180 ns/iter (± 15396281) 62129228 ns/iter (± 3031627) 0.99
es/full/minify/libraries/react 20327598 ns/iter (± 321172) 21842633 ns/iter (± 996242) 0.93
es/full/minify/libraries/terser 315845682 ns/iter (± 11791358) 324291403 ns/iter (± 15199768) 0.97
es/full/minify/libraries/three 657432677 ns/iter (± 51592779) 575495381 ns/iter (± 35433145) 1.14
es/full/minify/libraries/typescript 4103281120 ns/iter (± 286754135) 3480203536 ns/iter (± 102441827) 1.18
es/full/minify/libraries/victory 893316270 ns/iter (± 24916831) 892629827 ns/iter (± 189283179) 1.00
es/full/minify/libraries/vue 182807407 ns/iter (± 35193740) 163676113 ns/iter (± 8774636) 1.12
es/full/codegen/es3 39284 ns/iter (± 21432) 32818 ns/iter (± 696) 1.20
es/full/codegen/es5 37685 ns/iter (± 11258) 32925 ns/iter (± 987) 1.14
es/full/codegen/es2015 36696 ns/iter (± 1924) 32857 ns/iter (± 1160) 1.12
es/full/codegen/es2016 34983 ns/iter (± 4634) 33825 ns/iter (± 2806) 1.03
es/full/codegen/es2017 34542 ns/iter (± 3656) 34569 ns/iter (± 1879) 1.00
es/full/codegen/es2018 33965 ns/iter (± 1371) 36069 ns/iter (± 5203) 0.94
es/full/codegen/es2019 33881 ns/iter (± 2814) 37069 ns/iter (± 7688) 0.91
es/full/codegen/es2020 34071 ns/iter (± 1199) 35599 ns/iter (± 10636) 0.96
es/full/all/es3 218747442 ns/iter (± 67997967) 254352641 ns/iter (± 98233025) 0.86
es/full/all/es5 213554067 ns/iter (± 65525383) 264774926 ns/iter (± 112918183) 0.81
es/full/all/es2015 162053569 ns/iter (± 54919097) 210624308 ns/iter (± 85171740) 0.77
es/full/all/es2016 162728545 ns/iter (± 58030801) 212417023 ns/iter (± 85890611) 0.77
es/full/all/es2017 162981036 ns/iter (± 55499897) 183827484 ns/iter (± 100367326) 0.89
es/full/all/es2018 162238444 ns/iter (± 41139637) 165074747 ns/iter (± 86477044) 0.98
es/full/all/es2019 158923971 ns/iter (± 47143856) 156392776 ns/iter (± 53384537) 1.02
es/full/all/es2020 160588323 ns/iter (± 39311778) 158568167 ns/iter (± 52542289) 1.01
es/full/parser 785268 ns/iter (± 138991) 809902 ns/iter (± 181376) 0.97
es/full/base/fixer 32959 ns/iter (± 9814) 27859 ns/iter (± 6805) 1.18
es/full/base/resolver_and_hygiene 105120 ns/iter (± 8719) 95806 ns/iter (± 13376) 1.10
serialization of ast node 219 ns/iter (± 17) 216 ns/iter (± 4) 1.01
serialization of serde 221 ns/iter (± 29) 228 ns/iter (± 25) 0.97

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

Please sign in to comment.