fix: ensure (a?.b)() has proper this (#11623)

* fix: ensure (a?.b)() has proper this

* let test be more restrictive

* fix: transformed member call should preserve computed

* chore: revamp test files

* refactor: simplify

* fix: unwrap parthenthesizedExpression

* add loose test cases

* add `(a?.#b)()` support

* add with-transform test cases

* Update packages/babel-plugin-proposal-optional-chaining/src/index.js

Co-authored-by: Justin Ridgewell <justin@ridgewell.name>

* address review comments

* update test fixtures

Co-authored-by: Justin Ridgewell <justin@ridgewell.name>
This commit is contained in:
Huáng Jùnliàng
2020-06-01 10:25:22 -04:00
committed by GitHub
parent 3a3457d808
commit 1e115aed33
30 changed files with 929 additions and 8 deletions

View File

@@ -241,6 +241,15 @@ const privateNameHandlerSpec = {
]);
},
boundGet(member) {
this.memoise(member, 1);
return t.callExpression(
t.memberExpression(this.get(member), t.identifier("bind")),
[this.receiver(member)],
);
},
set(member, value) {
const { classRef, privateNamesMap, file } = this;
const { name } = member.node.property.id;
@@ -323,6 +332,13 @@ const privateNameHandlerLoose = {
});
},
boundGet(member) {
return t.callExpression(
t.memberExpression(this.get(member), t.identifier("bind")),
[t.cloneNode(member.node.object)],
);
},
simpleSet(member) {
return this.get(member);
},