Skip to content

Commit

Permalink
fix(es/lints): Fix const-assign in function expressions (#6294)
Browse files Browse the repository at this point in the history
  • Loading branch information
johanholmerin committed Oct 30, 2022
1 parent ff700d8 commit a27392a
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 2 deletions.
5 changes: 5 additions & 0 deletions crates/swc/tests/errors/lints/const-assign/1/input.js
Expand Up @@ -31,3 +31,8 @@ b &&= 10;
c ||= 10;

d ??= 10;

const fn = () => {
const e = 100;
e = 200;
};
10 changes: 10 additions & 0 deletions crates/swc/tests/errors/lints/const-assign/1/output.swc-stderr
Expand Up @@ -518,3 +518,13 @@
: |
: `-- cannot reassign
`----

x cannot reassign to a variable declared with `const`
,-[36:3]
36 | const e = 100;
: |
: `-- const variable was declared here
37 | e = 200;
: |
: `-- cannot reassign
`----
6 changes: 4 additions & 2 deletions crates/swc_ecma_lints/src/rules/const_assign.rs
Expand Up @@ -108,11 +108,13 @@ impl Visit for ConstAssign {
program.visit_children_with(self);
}

fn visit_var_decl(&mut self, var_decl: &VarDecl) {
fn visit_var_declarator(&mut self, var_declarator: &VarDeclarator) {
let old_is_pat_decl = self.is_pat_decl;
self.is_pat_decl = true;
var_decl.visit_children_with(self);
var_declarator.name.visit_with(self);
self.is_pat_decl = old_is_pat_decl;

var_declarator.init.visit_with(self);
}
}

Expand Down

1 comment on commit a27392a

@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: a27392a Previous: 6cafeb2 Ratio
es/full/bugs-1 344901 ns/iter (± 19080) 390937 ns/iter (± 45171) 0.88
es/full/minify/libraries/antd 1850563958 ns/iter (± 28224724) 2024403696 ns/iter (± 84000294) 0.91
es/full/minify/libraries/d3 418588860 ns/iter (± 19747342) 476785546 ns/iter (± 41965702) 0.88
es/full/minify/libraries/echarts 1585651210 ns/iter (± 29271089) 1792415877 ns/iter (± 195551799) 0.88
es/full/minify/libraries/jquery 96055461 ns/iter (± 3158109) 129407773 ns/iter (± 9255158) 0.74
es/full/minify/libraries/lodash 118473201 ns/iter (± 3286074) 183424391 ns/iter (± 34477537) 0.65
es/full/minify/libraries/moment 59382237 ns/iter (± 1652427) 86003471 ns/iter (± 6876231) 0.69
es/full/minify/libraries/react 20159284 ns/iter (± 477236) 24059463 ns/iter (± 1356149) 0.84
es/full/minify/libraries/terser 305561389 ns/iter (± 9296521) 426218413 ns/iter (± 156067983) 0.72
es/full/minify/libraries/three 559008719 ns/iter (± 14668052) 711234308 ns/iter (± 53374467) 0.79
es/full/minify/libraries/typescript 3473317368 ns/iter (± 19811735) 4546603004 ns/iter (± 249963807) 0.76
es/full/minify/libraries/victory 826905747 ns/iter (± 8589207) 1325358466 ns/iter (± 161246805) 0.62
es/full/minify/libraries/vue 153275973 ns/iter (± 4584184) 287127452 ns/iter (± 13773630) 0.53
es/full/codegen/es3 33579 ns/iter (± 1023) 43131 ns/iter (± 19616) 0.78
es/full/codegen/es5 33654 ns/iter (± 460) 40857 ns/iter (± 26356) 0.82
es/full/codegen/es2015 33682 ns/iter (± 760) 43118 ns/iter (± 7459) 0.78
es/full/codegen/es2016 33715 ns/iter (± 520) 44904 ns/iter (± 11513) 0.75
es/full/codegen/es2017 33556 ns/iter (± 819) 46780 ns/iter (± 8498) 0.72
es/full/codegen/es2018 33578 ns/iter (± 1054) 41574 ns/iter (± 5738) 0.81
es/full/codegen/es2019 33546 ns/iter (± 1032) 44729 ns/iter (± 8708) 0.75
es/full/codegen/es2020 33579 ns/iter (± 758) 48745 ns/iter (± 11486) 0.69
es/full/all/es3 190862022 ns/iter (± 5666350) 367290261 ns/iter (± 87662089) 0.52
es/full/all/es5 185485596 ns/iter (± 6618037) 321890332 ns/iter (± 127241484) 0.58
es/full/all/es2015 145531348 ns/iter (± 4491505) 271068902 ns/iter (± 91852996) 0.54
es/full/all/es2016 145919692 ns/iter (± 6444791) 257610861 ns/iter (± 101836247) 0.57
es/full/all/es2017 139031641 ns/iter (± 4964042) 231542607 ns/iter (± 70423482) 0.60
es/full/all/es2018 138092431 ns/iter (± 3814047) 243168055 ns/iter (± 50391400) 0.57
es/full/all/es2019 137047490 ns/iter (± 3260987) 250836101 ns/iter (± 51105815) 0.55
es/full/all/es2020 135193740 ns/iter (± 8330172) 246835077 ns/iter (± 80358250) 0.55
es/full/parser 721489 ns/iter (± 24919) 1054014 ns/iter (± 288517) 0.68
es/full/base/fixer 26226 ns/iter (± 942) 35289 ns/iter (± 6720) 0.74
es/full/base/resolver_and_hygiene 91943 ns/iter (± 2121) 130803 ns/iter (± 25666) 0.70
serialization of ast node 213 ns/iter (± 3) 269 ns/iter (± 42) 0.79
serialization of serde 214 ns/iter (± 3) 264 ns/iter (± 46) 0.81

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

Please sign in to comment.