Skip to content

Commit

Permalink
Skip unnecessary static private check
Browse files Browse the repository at this point in the history
  • Loading branch information
nicolo-ribaudo committed Feb 2, 2024
1 parent f00ea43 commit deedbe6
Show file tree
Hide file tree
Showing 50 changed files with 187 additions and 181 deletions.
34 changes: 26 additions & 8 deletions packages/babel-helper-create-class-features-plugin/src/fields.ts
Original file line number Diff line number Diff line change
Expand Up @@ -399,10 +399,18 @@ const privateNameHandlerSpec: Handler<PrivateNameState & Receiver> & Receiver =
]);
}

const receiver = this.receiver(member);
const skipCheck =
t.isIdentifier(receiver) && receiver.name === classRef.name;

if (!isMethod) {
if (skipCheck) {
return t.memberExpression(t.cloneNode(id), t.identifier("_"));
}

return t.memberExpression(
t.callExpression(file.addHelper("classCheckPrivateStaticAccess"), [
this.receiver(member),
receiver,
t.cloneNode(classRef),
t.cloneNode(id),
]),
Expand All @@ -417,6 +425,8 @@ const privateNameHandlerSpec: Handler<PrivateNameState & Receiver> & Receiver =
? t.buildUndefinedNode() // TODO: writeOnlyError(file, name)
: t.cloneNode(id);

if (skipCheck) return get;

return t.sequenceExpression([
t.callExpression(file.addHelper("classCheckPrivateStaticAccess"), [
this.receiver(member),
Expand Down Expand Up @@ -496,24 +506,32 @@ const privateNameHandlerSpec: Handler<PrivateNameState & Receiver> & Receiver =
]);
}

const brandCheck = t.callExpression(
file.addHelper("classCheckPrivateStaticAccess"),
[this.receiver(member), t.cloneNode(classRef), value],
);
const receiver = this.receiver(member);

const brandChecked =
t.isIdentifier(receiver) && receiver.name === classRef.name
? value
: t.callExpression(
file.addHelper("classCheckPrivateStaticAccess"),
[this.receiver(member), t.cloneNode(classRef), value],
);

if (isMethod && !setId) {
return t.sequenceExpression([brandCheck, readOnlyError(file, name)]);
return t.sequenceExpression([
brandChecked,
readOnlyError(file, name),
]);
}
if (setId) {
return t.callExpression(
t.memberExpression(t.cloneNode(setId), t.identifier("call")),
[t.cloneNode(classRef), brandCheck],
[t.cloneNode(classRef), brandChecked],
);
}
return t.assignmentExpression(
"=",
t.memberExpression(t.cloneNode(id), t.identifier("_")),
brandCheck,
brandChecked,
);
}
if (isMethod) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,52 +16,52 @@ class Foo {
babelHelpers.classPrivateMethodInitSpec(this, _a);
}
static get a() {
return babelHelpers.classCheckPrivateStaticAccess(Foo, Foo, _A)._;
return _A._;
}
static set a(v) {
_A._ = babelHelpers.classCheckPrivateStaticAccess(Foo, Foo, v);
_A._ = v;
}
static get "b"() {
return babelHelpers.classCheckPrivateStaticAccess(Foo, Foo, _C)._;
return _C._;
}
static set "b"(v) {
_C._ = babelHelpers.classCheckPrivateStaticAccess(Foo, Foo, v);
_C._ = v;
}
static get ["c"]() {
return babelHelpers.classCheckPrivateStaticAccess(Foo, Foo, _D)._;
return _D._;
}
static set ["c"](v) {
_D._ = babelHelpers.classCheckPrivateStaticAccess(Foo, Foo, v);
_D._ = v;
}
static get 0() {
return babelHelpers.classCheckPrivateStaticAccess(Foo, Foo, _E)._;
return _E._;
}
static set 0(v) {
_E._ = babelHelpers.classCheckPrivateStaticAccess(Foo, Foo, v);
_E._ = v;
}
static get [1]() {
return babelHelpers.classCheckPrivateStaticAccess(Foo, Foo, _F)._;
return _F._;
}
static set [1](v) {
_F._ = babelHelpers.classCheckPrivateStaticAccess(Foo, Foo, v);
_F._ = v;
}
static get 2n() {
return babelHelpers.classCheckPrivateStaticAccess(Foo, Foo, _G)._;
return _G._;
}
static set 2n(v) {
_G._ = babelHelpers.classCheckPrivateStaticAccess(Foo, Foo, v);
_G._ = v;
}
static get [3n]() {
return babelHelpers.classCheckPrivateStaticAccess(Foo, Foo, _H)._;
return _H._;
}
static set [3n](v) {
_H._ = babelHelpers.classCheckPrivateStaticAccess(Foo, Foo, v);
_H._ = v;
}
static get [_computedKey]() {
return babelHelpers.classCheckPrivateStaticAccess(Foo, Foo, _I)._;
return _I._;
}
static set [_computedKey](v) {
_I._ = babelHelpers.classCheckPrivateStaticAccess(Foo, Foo, v);
_I._ = v;
}
}
_Foo = Foo;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,22 @@ var _initStatic, _init_a, _init_b, _init_computedKey, _Foo;
const dec = () => {};
class Foo {
static get a() {
return babelHelpers.classCheckPrivateStaticAccess(Foo, Foo, _A)._;
return _A._;
}
static set a(v) {
_A._ = babelHelpers.classCheckPrivateStaticAccess(Foo, Foo, v);
_A._ = v;
}
static get b() {
return babelHelpers.classCheckPrivateStaticAccess(Foo, Foo, _B)._;
return _B._;
}
static set b(v) {
_B._ = babelHelpers.classCheckPrivateStaticAccess(Foo, Foo, v);
_B._ = v;
}
static get ['c']() {
return babelHelpers.classCheckPrivateStaticAccess(Foo, Foo, _C)._;
return _C._;
}
static set ['c'](v) {
_C._ = babelHelpers.classCheckPrivateStaticAccess(Foo, Foo, v);
_C._ = v;
}
}
_Foo = Foo;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,16 @@
var _Foo;
const dec = () => {};
class Foo {}
_Foo = Foo;
function _get_a() {
return babelHelpers.classCheckPrivateStaticAccess(_Foo, _Foo, _A)._;
return _A._;
}
function _set_a(v) {
_A._ = babelHelpers.classCheckPrivateStaticAccess(_Foo, _Foo, v);
_A._ = v;
}
function _get_b() {
return babelHelpers.classCheckPrivateStaticAccess(_Foo, _Foo, _B)._;
return _B._;
}
function _set_b(v) {
_B._ = babelHelpers.classCheckPrivateStaticAccess(_Foo, _Foo, v);
_B._ = v;
}
var _A = {
_: void 0
Expand Down
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
const dec = () => {};
class Foo {
static get a() {
return babelHelpers.classCheckPrivateStaticAccess(Foo, Foo, _A)._;
return _A._;
}
static set a(v) {
_A._ = babelHelpers.classCheckPrivateStaticAccess(Foo, Foo, v);
_A._ = v;
}
static get b() {
return babelHelpers.classCheckPrivateStaticAccess(Foo, Foo, _B)._;
return _B._;
}
static set b(v) {
_B._ = babelHelpers.classCheckPrivateStaticAccess(Foo, Foo, v);
_B._ = v;
}
static get ['c']() {
return babelHelpers.classCheckPrivateStaticAccess(Foo, Foo, _C)._;
return _C._;
}
static set ['c'](v) {
_C._ = babelHelpers.classCheckPrivateStaticAccess(Foo, Foo, v);
_C._ = v;
}
}
var _A = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ var _x = {
var _m;
({
a = 1
} = _C), _m = babelHelpers.classCheckPrivateStaticAccess(_C, _C, _x)._, x = _m === void 0 ? 2 : _m, ({
} = _C), _m = _x._, x = _m === void 0 ? 2 : _m, ({
b = 3
} = _C);
})();
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,5 @@ var _z = {
(() => {
var _p, _p2;
let z;
[babelHelpers.classCheckPrivateStaticAccess(_C, _C, _x)._, _p, ..._p2] = [0, _C], x = babelHelpers.classCheckPrivateStaticAccess(_p, _C, _x)._, z = _p2;
[_x._, _p, ..._p2] = [0, _C], x = babelHelpers.classCheckPrivateStaticAccess(_p, _C, _x)._, z = _p2;
})();
Original file line number Diff line number Diff line change
Expand Up @@ -17,5 +17,5 @@ babelHelpers.defineProperty(C, "self", _C);
(() => {
var _p, _p2, _p3, _p4, _m;
let x, y, z;
[_p, _p2,, _p3] = [_C, _C], x = babelHelpers.classCheckPrivateStaticAccess(_p === void 0 ? _C.self : _p, _C, _x)._, [, _p4] = babelHelpers.classCheckPrivateStaticAccess(_p2, _C, _y)._, _m = babelHelpers.classCheckPrivateStaticAccess(_p4 === void 0 ? _C.self : _p4, _C, _z)._, y = _m === void 0 ? (babelHelpers.classCheckPrivateStaticAccess(_C, _C), _self).call(_C) : _m, z = _p3 === void 0 ? babelHelpers.classCheckPrivateStaticAccess(y, _C, _y)._ : _p3;
[_p, _p2,, _p3] = [_C, _C], x = babelHelpers.classCheckPrivateStaticAccess(_p === void 0 ? _C.self : _p, _C, _x)._, [, _p4] = babelHelpers.classCheckPrivateStaticAccess(_p2, _C, _y)._, _m = babelHelpers.classCheckPrivateStaticAccess(_p4 === void 0 ? _C.self : _p4, _C, _z)._, y = _m === void 0 ? _self.call(_C) : _m, z = _p3 === void 0 ? babelHelpers.classCheckPrivateStaticAccess(y, _C, _y)._ : _p3;
})();
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@ var _self = {
(() => {
var _m, _m2, _m3, _m4, _m5;
let cloned, b, y, yy, yy2;
_m = babelHelpers.classCheckPrivateStaticAccess(_C, _C, _x)._, _m2 = _m === void 0 ? babelHelpers.classCheckPrivateStaticAccess(_C, _C, _self)._ : _m, _m3 = _m2[babelHelpers.classCheckPrivateStaticAccess(_C, _C, _z)._], ({
_m = _x._, _m2 = _m === void 0 ? _self._ : _m, _m3 = _m2[_z._], ({
b
} = _m3), _m4 = babelHelpers.classCheckPrivateStaticAccess(_m3, _C, _x)._, y = _m4 === void 0 ? (_C.b = "bb", babelHelpers.classCheckPrivateStaticAccess(babelHelpers.classCheckPrivateStaticAccess(_C, _C, _self)._, _C, _y)._) : _m4, _m5 = babelHelpers.classCheckPrivateStaticAccess(_m2, _C, _x)._, yy = _m5 === void 0 ? (delete _C.self, ({
} = _m3), _m4 = babelHelpers.classCheckPrivateStaticAccess(_m3, _C, _x)._, y = _m4 === void 0 ? (_C.b = "bb", babelHelpers.classCheckPrivateStaticAccess(_self._, _C, _y)._) : _m4, _m5 = babelHelpers.classCheckPrivateStaticAccess(_m2, _C, _x)._, yy = _m5 === void 0 ? (delete _C.self, ({
...cloned
} = _C), _y._ = babelHelpers.classCheckPrivateStaticAccess(_C, _C, "yy")) : _m5, yy2 = babelHelpers.classCheckPrivateStaticAccess(_C, _C, _y)._;
} = _C), _y._ = "yy") : _m5, yy2 = _y._;
})();
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ babelHelpers.defineProperty(C, "b", "b");
babelHelpers.defineProperty(C, "c", "c");
(_C2 => {
let x, y, z;
x = babelHelpers.classCheckPrivateStaticAccess(_C, _C, _x)._, (_C2 = _C, ({
x = _x._, (_C2 = _C, ({
y
} = _C2), z = babelHelpers.objectWithoutProperties(_C2, _excluded), _C2);
result = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ babelHelpers.defineProperty(C, "b", "b");
babelHelpers.defineProperty(C, "c", "c");
(_C2 => {
let x, y, z;
x = babelHelpers.classCheckPrivateStaticAccess(_C, _C, _x)._, y = babelHelpers.classCheckPrivateStaticAccess(_C, _C, _y)._, (_C2 = _C, ({} = _C2), z = Object.assign({}, (babelHelpers.objectDestructuringEmpty(_C2), _C2)), _C2);
x = _x._, y = _y._, (_C2 = _C, ({} = _C2), z = Object.assign({}, (babelHelpers.objectDestructuringEmpty(_C2), _C2)), _C2);
result = {
x,
y,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,13 @@ babelHelpers.defineProperty(C, "z", "z");
var _x = {
_: _C
};
(_babelHelpers$classCh => {
(_x$_ => {
var x, y, z;
({
x
} = _C), (_babelHelpers$classCh = babelHelpers.classCheckPrivateStaticAccess(_C, _C, _x)._, ({
} = _C), (_x$_ = _x._, ({
y
} = _babelHelpers$classCh), z = babelHelpers.objectWithoutProperties(_babelHelpers$classCh, _excluded), _babelHelpers$classCh);
} = _x$_), z = babelHelpers.objectWithoutProperties(_x$_, _excluded), _x$_);
result = {
x,
y,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@ babelHelpers.defineProperty(C, "c", "c");
var a, b, x, y, z;
({
[_m = _C.a]: a
} = _C), x = babelHelpers.classCheckPrivateStaticAccess(_C, _C, _x)._, ({
} = _C), x = _x._, ({
[_m2 = _C.b]: b
} = _C), y = babelHelpers.classCheckPrivateStaticAccess(_C, _C, _y)._, z = babelHelpers.objectWithoutProperties(_C, [_m, _m2].map(babelHelpers.toPropertyKey));
} = _C), y = _y._, z = babelHelpers.objectWithoutProperties(_C, [_m, _m2].map(babelHelpers.toPropertyKey));
result = {
a,
b,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,11 @@ babelHelpers.defineProperty(C, "c", "c");
var {
[_m = _C.a]: a
} = _C,
x = babelHelpers.classCheckPrivateStaticAccess(_C, _C, _x)._,
x = _x._,
{
[_m2 = _C.b]: b
} = _C,
y = babelHelpers.classCheckPrivateStaticAccess(_C, _C, _y)._,
y = _y._,
z = babelHelpers.objectWithoutPropertiesLoose(_C, [_m, _m2].map(babelHelpers.toPropertyKey));
result = {
a,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
var _C;
class C {}
_C = C;
var _x = {
_: void 0
};
(() => {
for (let x = babelHelpers.classCheckPrivateStaticAccess(_C, _C, _x)._;;) {
for (let x = _x._;;) {
break;
}
})();
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ var _x = {
var {
a = 1
} = _C,
_m = babelHelpers.classCheckPrivateStaticAccess(_C, _C, _x)._,
_m = _x._,
x = _m === void 0 ? 2 : _m,
{
b = 3
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,6 @@ babelHelpers.defineProperty(C, "self", _C);
x = babelHelpers.classCheckPrivateStaticAccess(_p === void 0 ? _C.self : _p, _C, _x)._,
[, _p4] = babelHelpers.classCheckPrivateStaticAccess(_p2, _C, _y)._,
_m = babelHelpers.classCheckPrivateStaticAccess(_p4 === void 0 ? _C.self : _p4, _C, _z)._,
y = _m === void 0 ? (babelHelpers.classCheckPrivateStaticAccess(_C, _C), _self).call(_C) : _m,
y = _m === void 0 ? _self.call(_C) : _m,
z = _p3 === void 0 ? babelHelpers.classCheckPrivateStaticAccess(y, _C, _y)._ : _p3;
})();
Original file line number Diff line number Diff line change
Expand Up @@ -17,17 +17,17 @@ var _self = {
};
(() => {
let cloned;
var _m = babelHelpers.classCheckPrivateStaticAccess(_C, _C, _x)._,
_m2 = _m === void 0 ? babelHelpers.classCheckPrivateStaticAccess(_C, _C, _self)._ : _m,
_m3 = _m2[babelHelpers.classCheckPrivateStaticAccess(_C, _C, _z)._],
var _m = _x._,
_m2 = _m === void 0 ? _self._ : _m,
_m3 = _m2[_z._],
{
b
} = _m3,
_m4 = babelHelpers.classCheckPrivateStaticAccess(_m3, _C, _x)._,
y = _m4 === void 0 ? (_C.b = "bb", babelHelpers.classCheckPrivateStaticAccess(babelHelpers.classCheckPrivateStaticAccess(_C, _C, _self)._, _C, _y)._) : _m4,
y = _m4 === void 0 ? (_C.b = "bb", babelHelpers.classCheckPrivateStaticAccess(_self._, _C, _y)._) : _m4,
_m5 = babelHelpers.classCheckPrivateStaticAccess(_m2, _C, _x)._,
yy = _m5 === void 0 ? (delete _C.self, ({
...cloned
} = _C), _y._ = babelHelpers.classCheckPrivateStaticAccess(_C, _C, "yy")) : _m5,
yy2 = babelHelpers.classCheckPrivateStaticAccess(_C, _C, _y)._;
} = _C), _y._ = "yy") : _m5,
yy2 = _y._;
})();
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ babelHelpers.defineProperty(C, "a", "a");
babelHelpers.defineProperty(C, "b", "b");
babelHelpers.defineProperty(C, "c", "c");
(() => {
var x = babelHelpers.classCheckPrivateStaticAccess(_C, _C, _x)._,
var x = _x._,
{
y
} = _C,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ babelHelpers.defineProperty(C, "a", "a");
babelHelpers.defineProperty(C, "b", "b");
babelHelpers.defineProperty(C, "c", "c");
(() => {
var x = babelHelpers.classCheckPrivateStaticAccess(_C, _C, _x)._,
y = babelHelpers.classCheckPrivateStaticAccess(_C, _C, _y)._,
var x = _x._,
y = _y._,
z = Object.assign({}, (babelHelpers.objectDestructuringEmpty(_C), _C));
result = {
x,
Expand Down
Loading

0 comments on commit deedbe6

Please sign in to comment.