Skip to content

Commit

Permalink
Rework helpers
Browse files Browse the repository at this point in the history
  • Loading branch information
Robin Ricard committed Jul 20, 2018
1 parent 6d61421 commit 1c448ee
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 31 deletions.
16 changes: 9 additions & 7 deletions packages/babel-helpers/src/helpers.js
Expand Up @@ -1030,26 +1030,28 @@ helpers.classPrivateFieldSet = () => template.program.ast`
}
`;

helpers.classStaticPrivateFieldBase = () => template.program.ast`
export default function _classStaticPrivateFieldBase(receiver, classConstructor, privateClass) {
helpers.classStaticPrivateFieldLooseBase = () => template.program.ast`
export default function _classStaticPrivateFieldLooseBase(receiver, classConstructor) {
if (receiver !== classConstructor && receiver.constructor !== classConstructor) {
throw new TypeError("Private static access of wrong provenance");
}
return privateClass;
return classConstructor;
}
`;

helpers.classStaticPrivateFieldGet = () => template.program.ast`
export default function _classStaticPrivateFieldGet(receiver, classConstructor, privateClass, privateId) {
helpers.classStaticPrivateFieldSpecGet = () => template.program.ast`
export default function _classStaticPrivateFieldSpecGet(
receiver, classConstructor, privateClass, privateId
) {
if (receiver !== classConstructor && receiver.constructor !== classConstructor) {
throw new TypeError("Private static access of wrong provenance");
}
return privateClass[privateId];
}
`;

helpers.classStaticPrivateFieldSet = () => template.program.ast`
export default function _classStaticPrivateFieldSet(
helpers.classStaticPrivateFieldSpecSet = () => template.program.ast`
export default function _classStaticPrivateFieldSpecSet(
receiver, classConstructor, privateClass, privateId, value
) {
if (receiver !== classConstructor && receiver.constructor !== classConstructor) {
Expand Down
50 changes: 26 additions & 24 deletions packages/babel-plugin-proposal-class-properties/src/index.js
Expand Up @@ -163,24 +163,30 @@ export default declare((api, options) => {
get(member) {
const { file, privateId, privateClassId, classRef } = this;

return t.callExpression(file.addHelper("classStaticPrivateFieldGet"), [
this.receiver(member),
classRef,
privateClassId,
t.stringLiteral(privateId.name),
]);
return t.callExpression(
file.addHelper("classStaticPrivateFieldSpecGet"),
[
this.receiver(member),
classRef,
privateClassId,
t.stringLiteral(privateId.name),
],
);
},

set(member, value) {
const { file, privateId, privateClassId, classRef } = this;

return t.callExpression(file.addHelper("classStaticPrivateFieldSet"), [
this.receiver(member),
classRef,
privateClassId,
t.stringLiteral(privateId.name),
value,
]);
return t.callExpression(
file.addHelper("classStaticPrivateFieldSpecSet"),
[
this.receiver(member),
classRef,
privateClassId,
t.stringLiteral(privateId.name),
value,
],
);
},

call(member, args) {
Expand All @@ -193,17 +199,14 @@ export default declare((api, options) => {

const staticPrivatePropertyHandlerLoose = {
handle(member) {
const { file, privateId, privateClassId, classRef } = this;
const { file, privateId, classRef } = this;
member.replaceWith(
template.expression`BASE(RECEIVER, CLASS, PRIVATE_CLASS_ID).PRIVATE_ID`(
{
BASE: file.addHelper("classStaticPrivateFieldBase"),
RECEIVER: member.node.object,
CLASS: classRef,
PRIVATE_CLASS_ID: privateClassId,
PRIVATE_ID: privateId,
},
),
template.expression`BASE(RECEIVER, CLASS).PRIVATE_ID`({
BASE: file.addHelper("classStaticPrivateFieldLooseBase"),
RECEIVER: member.node.object,
CLASS: classRef,
PRIVATE_ID: privateId,
}),
);
},
};
Expand Down Expand Up @@ -349,7 +352,6 @@ export default declare((api, options) => {
parentPath.traverse(privateNameVisitor, {
name,
privateId,
privateClassId: ref,
classRef: ref,
file: state,
...staticPrivatePropertyHandlerLoose,
Expand Down

0 comments on commit 1c448ee

Please sign in to comment.