function reserve_quoted_keys(ast, reserved) {
ast.walk(new TreeWalker(function(node) {
- if (node instanceof AST_ObjectProperty) {
+ if (node instanceof AST_ClassProperty) {
+ if (node.start && node.start.quote) add(node.key);
+ } else if (node instanceof AST_ObjectProperty) {
if (node.start && node.start.quote) add(node.key);
} else if (node instanceof AST_Sub) {
addStrings(node.property, add);
addStrings(node.args[0], add);
break;
}
+ } else if (node instanceof AST_ClassProperty) {
+ if (typeof node.key == "string") add(node.key);
} else if (node instanceof AST_Dot) {
add(node.property);
} else if (node instanceof AST_ObjectProperty) {
mangleStrings(node.args[0]);
break;
}
+ } else if (node instanceof AST_ClassProperty) {
+ if (typeof node.key == "string") node.key = mangle(node.key);
} else if (node instanceof AST_Dot) {
node.property = mangle(node.property);
} else if (node instanceof AST_ObjectProperty) {
}
function mangle(name) {
- if (!should_mangle(name)) {
- return name;
- }
+ if (!should_mangle(name)) return name;
var mangled = cache.get(name);
if (!mangled) {
if (debug) {
if (!mangled) do {
mangled = base54(++cname);
} while (!can_mangle(mangled));
+ if (/^#/.test(name)) mangled = "#" + mangled;
cache.set(name, mangled);
}
return mangled;
expect_stdout: "PASS"
node_version: ">=4"
}
+
+mangle_properties: {
+ mangle = {
+ properties: {
+ keep_quoted: true,
+ },
+ }
+ input: {
+ class A {
+ static #P = "PASS";
+ static get Q() {
+ return this.#P;
+ }
+ #p(n) {
+ return (this["q"] = n) * this.r;
+ }
+ set q(v) {
+ this.r = v + 1;
+ }
+ r = this.#p(6);
+ }
+ console.log(A.Q, new A().r);
+ }
+ expect: {
+ class A {
+ static #t = "PASS";
+ static get s() {
+ return this.#t;
+ }
+ #i(t) {
+ return (this["q"] = t) * this.e;
+ }
+ set q(t) {
+ this.e = t + 1;
+ }
+ e = this.#i(6);
+ }
+ console.log(A.s, new A().e);
+ }
+ expect_stdout: "PASS 42"
+ node_version: ">=14.6"
+}