Skip to content

Commit

Permalink
Mark WeakMaps of private fields as pure
Browse files Browse the repository at this point in the history
  • Loading branch information
nicolo-ribaudo committed Apr 22, 2021
1 parent a40f085 commit 24ed392
Show file tree
Hide file tree
Showing 225 changed files with 348 additions and 342 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
"babel-plugin"
],
"dependencies": {
"@babel/helper-annotate-as-pure": "workspace:^7.12.13",
"@babel/helper-function-name": "workspace:^7.12.13",
"@babel/helper-member-expression-to-functions": "workspace:^7.13.0",
"@babel/helper-optimise-call-expression": "workspace:^7.12.13",
Expand Down
28 changes: 16 additions & 12 deletions packages/babel-helper-create-class-features-plugin/src/fields.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import ReplaceSupers, {
} from "@babel/helper-replace-supers";
import memberExpressionToFunctions from "@babel/helper-member-expression-to-functions";
import optimiseCall from "@babel/helper-optimise-call-expression";
import annotateAsPure from "@babel/helper-annotate-as-pure";

import * as ts from "./typescript";

Expand Down Expand Up @@ -53,20 +54,23 @@ export function buildPrivateNamesNodes(
const { static: isStatic, method: isMethod, getId, setId } = value;
const isAccessor = getId || setId;
const id = t.cloneNode(value.id);

let init;

if (privateFieldsAsProperties) {
initNodes.push(
template.statement.ast`
var ${id} = ${state.addHelper("classPrivateFieldLooseKey")}("${name}")
`,
);
} else if (isMethod && !isStatic) {
if (isAccessor) {
initNodes.push(template.statement.ast`var ${id} = new WeakMap();`);
} else {
initNodes.push(template.statement.ast`var ${id} = new WeakSet();`);
}
init = t.callExpression(state.addHelper("classPrivateFieldLooseKey"), [
t.stringLiteral(name),
]);
} else if (!isStatic) {
initNodes.push(template.statement.ast`var ${id} = new WeakMap();`);
init = t.newExpression(
t.identifier(!isMethod || isAccessor ? "WeakMap" : "WeakSet"),
[],
);
}

if (init) {
annotateAsPure(init);
initNodes.push(template.statement.ast`var ${id} = ${init}`);
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
var _privateMethod = new WeakSet();
var _privateMethod = /*#__PURE__*/new WeakSet();

class X {
constructor() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
var _privateMethod = babelHelpers.classPrivateFieldLooseKey("privateMethod");
var _privateMethod = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("privateMethod");

class X {
constructor() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
var _foo = new WeakSet();
var _foo = /*#__PURE__*/new WeakSet();

class A extends B {
constructor(...args) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
var _m = new WeakMap();
var _m = /*#__PURE__*/new WeakMap();

class C {
constructor() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
var _m = new WeakMap();
var _m = /*#__PURE__*/new WeakMap();

class C {
constructor() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
var _g = new WeakSet();
var _g = /*#__PURE__*/new WeakSet();

class C {
constructor() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
var _foo = babelHelpers.classPrivateFieldLooseKey("foo");
var _foo = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("foo");

var Foo = /*#__PURE__*/function () {
"use strict";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
var _foo = babelHelpers.classPrivateFieldLooseKey("foo");
var _foo = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("foo");

var Foo = /*#__PURE__*/function () {
"use strict";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
var _x = babelHelpers.classPrivateFieldLooseKey("x");
var _x = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("x");

var _y = babelHelpers.classPrivateFieldLooseKey("y");
var _y = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("y");

var Point = /*#__PURE__*/function () {
"use strict";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
var foo = "bar";

var _bar = babelHelpers.classPrivateFieldLooseKey("bar");
var _bar = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("bar");

var Foo = function Foo() {
"use strict";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
var _x = babelHelpers.classPrivateFieldLooseKey("x");
var _x = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("x");

var C = function C() {
"use strict";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
var _bar = babelHelpers.classPrivateFieldLooseKey("bar");
var _bar = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("bar");

var Foo = /*#__PURE__*/function (_Bar) {
"use strict";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
var _prop = babelHelpers.classPrivateFieldLooseKey("prop");
var _prop = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("prop");

var Foo = function Foo() {
"use strict";
Expand All @@ -10,7 +10,7 @@ var Foo = function Foo() {
});
};

var _prop2 = babelHelpers.classPrivateFieldLooseKey("prop");
var _prop2 = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("prop");

var Bar = /*#__PURE__*/function (_Foo) {
"use strict";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
var _client = babelHelpers.classPrivateFieldLooseKey("client");
var _client = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("client");

var Foo = function Foo(props) {
"use strict";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
var _client = babelHelpers.classPrivateFieldLooseKey("client");
var _client = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("client");

var Foo = function Foo(props) {
"use strict";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
var _client = babelHelpers.classPrivateFieldLooseKey("client");
var _client = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("client");

var Foo = function Foo(props) {
"use strict";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
var _client = babelHelpers.classPrivateFieldLooseKey("client");
var _client = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("client");

var Foo = function Foo(props) {
"use strict";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
var _client = babelHelpers.classPrivateFieldLooseKey("client");
var _client = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("client");

var Foo = function Foo(props) {
"use strict";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
var _client = babelHelpers.classPrivateFieldLooseKey("client");
var _client = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("client");

var Foo = function Foo(props) {
"use strict";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
var _client = babelHelpers.classPrivateFieldLooseKey("client");
var _client = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("client");

var Foo = function Foo(props) {
"use strict";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
var _client = babelHelpers.classPrivateFieldLooseKey("client");
var _client = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("client");

var Foo = function Foo(props) {
"use strict";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
var _client = babelHelpers.classPrivateFieldLooseKey("client");
var _client = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("client");

var Foo = function Foo(props) {
"use strict";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
var _client = babelHelpers.classPrivateFieldLooseKey("client");
var _client = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("client");

var Foo = function Foo(props) {
"use strict";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
var foo = "bar";

var _bar = babelHelpers.classPrivateFieldLooseKey("bar");
var _bar = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("bar");

var _baz = babelHelpers.classPrivateFieldLooseKey("baz");
var _baz = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("baz");

var Foo = function Foo(_foo) {
"use strict";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
var _scopedFunctionWithThis = babelHelpers.classPrivateFieldLooseKey("scopedFunctionWithThis");
var _scopedFunctionWithThis = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("scopedFunctionWithThis");

var Child = /*#__PURE__*/function (_Parent) {
"use strict";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
var _bar = babelHelpers.classPrivateFieldLooseKey("bar");
var _bar = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("bar");

var Foo = function Foo() {
"use strict";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
var _bar = babelHelpers.classPrivateFieldLooseKey("bar");
var _bar = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("bar");

var Foo = function Foo() {
"use strict";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
var _nullish = babelHelpers.classPrivateFieldLooseKey("nullish");
var _nullish = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("nullish");

var _and = babelHelpers.classPrivateFieldLooseKey("and");
var _and = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("and");

var _or = babelHelpers.classPrivateFieldLooseKey("or");
var _or = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("or");

class Foo {
constructor() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
var _x = babelHelpers.classPrivateFieldLooseKey("x");
var _x = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("x");

var _y = babelHelpers.classPrivateFieldLooseKey("y");
var _y = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("y");

var Foo = function Foo() {
"use strict";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
var _foo = babelHelpers.classPrivateFieldLooseKey("foo");
var _foo = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("foo");

var _bar = babelHelpers.classPrivateFieldLooseKey("bar");
var _bar = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("bar");

class Foo {
constructor() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
var _foo = babelHelpers.classPrivateFieldLooseKey("foo");
var _foo = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("foo");

var Foo = /*#__PURE__*/function () {
"use strict";
Expand All @@ -16,7 +16,7 @@ var Foo = /*#__PURE__*/function () {
value: function test() {
var _babelHelpers$classPr;

var _foo2 = babelHelpers.classPrivateFieldLooseKey("foo");
var _foo2 = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("foo");

_babelHelpers$classPr = babelHelpers.classPrivateFieldLooseBase(this, _foo2)[_foo2];

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
var _foo = babelHelpers.classPrivateFieldLooseKey("foo");
var _foo = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("foo");

var Foo = /*#__PURE__*/function () {
"use strict";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
var _foo = babelHelpers.classPrivateFieldLooseKey("foo");
var _foo = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("foo");

var Foo = /*#__PURE__*/function () {
"use strict";
Expand All @@ -18,7 +18,7 @@ var Foo = /*#__PURE__*/function () {

var _babelHelpers$classPr;

var _foo2 = babelHelpers.classPrivateFieldLooseKey("foo");
var _foo2 = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("foo");

var Nested = /*#__PURE__*/function (_ref) {
babelHelpers.inherits(Nested, _ref);
Expand All @@ -38,7 +38,7 @@ var Foo = /*#__PURE__*/function () {
}

return Nested;
}((_foo3 = babelHelpers.classPrivateFieldLooseKey("foo"), _babelHelpers$classPr = babelHelpers.classPrivateFieldLooseBase(this, _foo3)[_foo3], /*#__PURE__*/function () {
}((_foo3 = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("foo"), _babelHelpers$classPr = babelHelpers.classPrivateFieldLooseBase(this, _foo3)[_foo3], /*#__PURE__*/function () {
function _class2() {
babelHelpers.classCallCheck(this, _class2);
Object.defineProperty(this, _foo3, {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
var _foo = babelHelpers.classPrivateFieldLooseKey("foo");
var _foo = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("foo");

var Foo = /*#__PURE__*/function () {
"use strict";
Expand All @@ -16,7 +16,7 @@ var Foo = /*#__PURE__*/function () {
value: function test() {
var _babelHelpers$classPr;

var _foo2 = babelHelpers.classPrivateFieldLooseKey("foo");
var _foo2 = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("foo");

var Nested = /*#__PURE__*/function (_ref) {
babelHelpers.inherits(Nested, _ref);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
var _foo = babelHelpers.classPrivateFieldLooseKey("foo");
var _foo = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("foo");

var _bar = babelHelpers.classPrivateFieldLooseKey("bar");
var _bar = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("bar");

var Foo = /*#__PURE__*/function () {
"use strict";
Expand All @@ -20,7 +20,7 @@ var Foo = /*#__PURE__*/function () {
babelHelpers.createClass(Foo, [{
key: "test",
value: function test() {
var _bar2 = babelHelpers.classPrivateFieldLooseKey("bar");
var _bar2 = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("bar");

var Nested = /*#__PURE__*/function () {
function Nested() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
var _foo = babelHelpers.classPrivateFieldLooseKey("foo");
var _foo = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("foo");

var Foo = /*#__PURE__*/function () {
"use strict";
Expand All @@ -14,7 +14,7 @@ var Foo = /*#__PURE__*/function () {
babelHelpers.createClass(Foo, [{
key: "test",
value: function test() {
var _foo2 = babelHelpers.classPrivateFieldLooseKey("foo");
var _foo2 = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("foo");

var Nested = /*#__PURE__*/function () {
function Nested() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
var _foo = babelHelpers.classPrivateFieldLooseKey("foo");
var _foo = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("foo");

var Foo = /*#__PURE__*/function () {
"use strict";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
export default (param => {
var _class, _props, _temp;

return _temp = (_props = babelHelpers.classPrivateFieldLooseKey("props"), _class = class App {
return _temp = (_props = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("props"), _class = class App {
getParam() {
return param;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
var _x = babelHelpers.classPrivateFieldLooseKey("x");
var _x = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("x");

var _m = babelHelpers.classPrivateFieldLooseKey("m");
var _m = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("m");

var _self = babelHelpers.classPrivateFieldLooseKey("self");
var _self = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("self");

class Foo {
static getSelf() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
var _x = babelHelpers.classPrivateFieldLooseKey("x");
var _x = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("x");

var _m = babelHelpers.classPrivateFieldLooseKey("m");
var _m = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("m");

var _self = babelHelpers.classPrivateFieldLooseKey("self");
var _self = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("self");

class Foo {
static getSelf() {
Expand Down

0 comments on commit 24ed392

Please sign in to comment.