Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -58,15 +58,14 @@ export function buildPrivateNamesMap(props: PropPath[]) {
export function buildPrivateNamesNodes(
privateNamesMap: PrivateNamesMap,
privateFieldsAsProperties: boolean,
state: File,
) {
const initNodes: t.Statement[] = [];

for (const [name, value] of privateNamesMap) {
// When the privateFieldsAsProperties assumption is enabled,
// both static and instance fields are transpiled using a
// secret non-enumerable property. Hence, we also need to generate that
// key (using the classPrivateFieldLooseKey helper).
// key, using a Symbol.
// In spec mode, only instance fields need a "private name" initializer
// because static fields are directly assigned to a variable in the
// buildPrivateStaticFieldInitSpec function.
Expand All @@ -77,9 +76,7 @@ export function buildPrivateNamesNodes(
let init: t.Expression;

if (privateFieldsAsProperties) {
init = t.callExpression(state.addHelper("classPrivateFieldLooseKey"), [
t.stringLiteral(name),
]);
init = t.callExpression(t.identifier("Symbol"), [t.stringLiteral(name)]);
} else if (!isStatic) {
init = t.newExpression(
t.identifier(!isMethod || isAccessor ? "WeakMap" : "WeakSet"),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,6 @@ export function createClassFeaturePlugin({
const privateNamesNodes = buildPrivateNamesNodes(
privateNamesMap,
privateFieldsAsProperties ?? loose,
file,
);

transformPrivateNamesUsage(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
var _privateMethod = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("privateMethod");
var _privateMethod = /*#__PURE__*/Symbol("privateMethod");
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm just about to remove the PURE comment for the new Symbol output and wondered whether it is needed for the existing standard solution, which generates new WeakMap() also with a PURE annotation. Shouldn't optimizer tools like Uglify know that creating a (built-in) WeakMap has no side-effects?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

class X {
constructor() {
Object.defineProperty(this, _privateMethod, {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
var _foo = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("foo");
var _foo = /*#__PURE__*/Symbol("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 = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("foo");
var _foo = /*#__PURE__*/Symbol("foo");
var Foo = /*#__PURE__*/function () {
"use strict";

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

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

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

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
var _bar = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("bar");
var _bar = /*#__PURE__*/Symbol("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 = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("prop");
var _prop = /*#__PURE__*/Symbol("prop");
var Foo = /*#__PURE__*/babelHelpers.createClass(function Foo() {
"use strict";

Expand All @@ -8,7 +8,7 @@ var Foo = /*#__PURE__*/babelHelpers.createClass(function Foo() {
value: "foo"
});
});
var _prop2 = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("prop");
var _prop2 = /*#__PURE__*/Symbol("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 = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("client");
var _client = /*#__PURE__*/Symbol("client");
var Foo = /*#__PURE__*/babelHelpers.createClass(function Foo(props) {
"use strict";

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

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

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

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

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

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

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

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

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

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

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

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

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

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
var _nullish = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("nullish");
var _and = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("and");
var _or = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("or");
var _nullish = /*#__PURE__*/Symbol("nullish");
var _and = /*#__PURE__*/Symbol("and");
var _or = /*#__PURE__*/Symbol("or");
class Foo {
constructor() {
Object.defineProperty(this, _nullish, {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
var _x = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("x");
var _y = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("y");
var _x = /*#__PURE__*/Symbol("x");
var _y = /*#__PURE__*/Symbol("y");
var Foo = /*#__PURE__*/babelHelpers.createClass(function Foo() {
"use strict";

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
var _foo = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("foo");
var _bar = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("bar");
var _foo = /*#__PURE__*/Symbol("foo");
var _bar = /*#__PURE__*/Symbol("bar");
class Foo {
constructor() {
Object.defineProperty(this, _bar, {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
var _foo = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("foo");
var _foo = /*#__PURE__*/Symbol("foo");
var Foo = /*#__PURE__*/function () {
"use strict";

Expand All @@ -13,7 +13,7 @@ var Foo = /*#__PURE__*/function () {
key: "test",
value: function test() {
var _babelHelpers$classPr;
var _foo2 = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("foo");
var _foo2 = /*#__PURE__*/Symbol("foo");
_babelHelpers$classPr = babelHelpers.classPrivateFieldLooseBase(this, _foo2)[_foo2];
var Nested = /*#__PURE__*/function () {
function Nested() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
var _foo = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("foo");
var _foo = /*#__PURE__*/Symbol("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 = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("foo");
var _foo = /*#__PURE__*/Symbol("foo");
var Foo = /*#__PURE__*/function () {
"use strict";

Expand All @@ -14,7 +14,7 @@ var Foo = /*#__PURE__*/function () {
value: function test() {
var _foo3;
var _babelHelpers$classPr;
var _foo2 = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("foo");
var _foo2 = /*#__PURE__*/Symbol("foo");
var Nested = /*#__PURE__*/function (_ref) {
babelHelpers.inherits(Nested, _ref);
var _super = babelHelpers.createSuper(Nested);
Expand All @@ -29,7 +29,7 @@ var Foo = /*#__PURE__*/function () {
return _this;
}
return babelHelpers.createClass(Nested);
}((_foo3 = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("foo"), _babelHelpers$classPr = babelHelpers.classPrivateFieldLooseBase(this, _foo3)[_foo3], /*#__PURE__*/function () {
}((_foo3 = /*#__PURE__*/Symbol("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 = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("foo");
var _foo = /*#__PURE__*/Symbol("foo");
var Foo = /*#__PURE__*/function () {
"use strict";

Expand All @@ -13,7 +13,7 @@ var Foo = /*#__PURE__*/function () {
key: "test",
value: function test() {
var _babelHelpers$classPr;
var _foo2 = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("foo");
var _foo2 = /*#__PURE__*/Symbol("foo");
var Nested = /*#__PURE__*/function (_ref) {
babelHelpers.inherits(Nested, _ref);
var _super = babelHelpers.createSuper(Nested);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
var _foo = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("foo");
var _bar = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("bar");
var _foo = /*#__PURE__*/Symbol("foo");
var _bar = /*#__PURE__*/Symbol("bar");
var Foo = /*#__PURE__*/function () {
"use strict";

Expand All @@ -17,7 +17,7 @@ var Foo = /*#__PURE__*/function () {
babelHelpers.createClass(Foo, [{
key: "test",
value: function test() {
var _bar2 = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("bar");
var _bar2 = /*#__PURE__*/Symbol("bar");
var Nested = /*#__PURE__*/function () {
function Nested() {
babelHelpers.classCallCheck(this, Nested);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
var _foo = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("foo");
var _foo = /*#__PURE__*/Symbol("foo");
var Foo = /*#__PURE__*/function () {
"use strict";

Expand All @@ -12,7 +12,7 @@ var Foo = /*#__PURE__*/function () {
babelHelpers.createClass(Foo, [{
key: "test",
value: function test() {
var _foo2 = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("foo");
var _foo2 = /*#__PURE__*/Symbol("foo");
var Nested = /*#__PURE__*/function () {
function Nested() {
babelHelpers.classCallCheck(this, Nested);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
var _foo = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("foo");
var _foo = /*#__PURE__*/Symbol("foo");
var Foo = /*#__PURE__*/function () {
"use strict";

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

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
var _x = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("x");
var _m = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("m");
var _self = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("self");
var _x = /*#__PURE__*/Symbol("x");
var _m = /*#__PURE__*/Symbol("m");
var _self = /*#__PURE__*/Symbol("self");
class Foo {
static getSelf() {
return this;
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
var _a = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("a");
var _a = /*#__PURE__*/Symbol("a");
class C {
static testIf(o) {
if (o !== null && o !== void 0 && babelHelpers.classPrivateFieldLooseBase(o, _a)[_a].b.c.d) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
var _x = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("x");
var _self = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("self");
var _x = /*#__PURE__*/Symbol("x");
var _self = /*#__PURE__*/Symbol("self");
class Foo {
static getSelf() {
return this;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
var _x = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("x");
var _self = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("self");
var _x = /*#__PURE__*/Symbol("x");
var _self = /*#__PURE__*/Symbol("self");
class Foo {
static getSelf() {
return this;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
var _x = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("x");
var _m = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("m");
var _self = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("self");
var _x = /*#__PURE__*/Symbol("x");
var _m = /*#__PURE__*/Symbol("m");
var _self = /*#__PURE__*/Symbol("self");
class Foo {
static getSelf() {
return this;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
var _x = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("x");
var _m = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("m");
var _self = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("self");
var _x = /*#__PURE__*/Symbol("x");
var _m = /*#__PURE__*/Symbol("m");
var _self = /*#__PURE__*/Symbol("self");
class Foo {
static getSelf() {
return this;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
var _m = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("m");
var _m = /*#__PURE__*/Symbol("m");
class Foo {
constructor() {
Object.defineProperty(this, _m, {
Expand Down
Loading