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:
@@ -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);
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user