exclude mangling of special property names (#1779)
- `null` - `true` - `false` - numeric literals
This commit is contained in:
@@ -46,6 +46,9 @@
|
|||||||
function find_builtins() {
|
function find_builtins() {
|
||||||
// NaN will be included due to Number.NaN
|
// NaN will be included due to Number.NaN
|
||||||
var a = [
|
var a = [
|
||||||
|
"null",
|
||||||
|
"true",
|
||||||
|
"false",
|
||||||
"Infinity",
|
"Infinity",
|
||||||
"-Infinity",
|
"-Infinity",
|
||||||
"undefined",
|
"undefined",
|
||||||
@@ -159,7 +162,7 @@ function mangle_properties(ast, options) {
|
|||||||
if (options.only_cache) {
|
if (options.only_cache) {
|
||||||
return cache.props.has(name);
|
return cache.props.has(name);
|
||||||
}
|
}
|
||||||
if (/^[0-9.]+$/.test(name)) return false;
|
if (/^-?[0-9]+(\.[0-9]+)?(e[+-][0-9]+)?$/.test(name)) return false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ mangle_props: {
|
|||||||
NaN: 2,
|
NaN: 2,
|
||||||
Infinity: 3,
|
Infinity: 3,
|
||||||
"-Infinity": 4,
|
"-Infinity": 4,
|
||||||
"-0": 5,
|
null: 5,
|
||||||
};
|
};
|
||||||
console.log(
|
console.log(
|
||||||
obj[void 0],
|
obj[void 0],
|
||||||
@@ -21,9 +21,8 @@ mangle_props: {
|
|||||||
obj[-1/0],
|
obj[-1/0],
|
||||||
obj[-Infinity],
|
obj[-Infinity],
|
||||||
obj["-Infinity"],
|
obj["-Infinity"],
|
||||||
obj[-0],
|
obj[null],
|
||||||
obj[-""],
|
obj["null"]
|
||||||
obj["-0"]
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
expect: {
|
expect: {
|
||||||
@@ -32,7 +31,7 @@ mangle_props: {
|
|||||||
NaN: 2,
|
NaN: 2,
|
||||||
Infinity: 3,
|
Infinity: 3,
|
||||||
"-Infinity": 4,
|
"-Infinity": 4,
|
||||||
a: 5,
|
null: 5,
|
||||||
};
|
};
|
||||||
console.log(
|
console.log(
|
||||||
obj[void 0],
|
obj[void 0],
|
||||||
@@ -47,12 +46,62 @@ mangle_props: {
|
|||||||
obj[-1/0],
|
obj[-1/0],
|
||||||
obj[-1/0],
|
obj[-1/0],
|
||||||
obj["-Infinity"],
|
obj["-Infinity"],
|
||||||
obj[-0],
|
obj[null],
|
||||||
obj[-""],
|
obj["null"]
|
||||||
obj["a"]
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
expect_stdout: "1 1 1 2 2 2 3 3 3 4 4 4 undefined undefined 5"
|
expect_stdout: "1 1 1 2 2 2 3 3 3 4 4 4 5 5"
|
||||||
|
}
|
||||||
|
|
||||||
|
numeric_literal: {
|
||||||
|
beautify = {
|
||||||
|
beautify: true,
|
||||||
|
}
|
||||||
|
mangle_props = {}
|
||||||
|
input: {
|
||||||
|
var obj = {
|
||||||
|
0: 0,
|
||||||
|
"-0": 1,
|
||||||
|
42: 2,
|
||||||
|
"42": 3,
|
||||||
|
0x25: 4,
|
||||||
|
"0x25": 5,
|
||||||
|
1E42: 6,
|
||||||
|
"1E42": 7,
|
||||||
|
"1e+42": 8,
|
||||||
|
};
|
||||||
|
console.log(obj[-0], obj[-""], obj["-0"]);
|
||||||
|
console.log(obj[42], obj["42"]);
|
||||||
|
console.log(obj[0x25], obj["0x25"], obj[37], obj["37"]);
|
||||||
|
console.log(obj[1E42], obj["1E42"], obj["1e+42"]);
|
||||||
|
}
|
||||||
|
expect_exact: [
|
||||||
|
'var obj = {',
|
||||||
|
' 0: 0,',
|
||||||
|
' "-0": 1,',
|
||||||
|
' 42: 2,',
|
||||||
|
' "42": 3,',
|
||||||
|
' 37: 4,',
|
||||||
|
' a: 5,',
|
||||||
|
' 1e42: 6,',
|
||||||
|
' b: 7,',
|
||||||
|
' "1e+42": 8',
|
||||||
|
'};',
|
||||||
|
'',
|
||||||
|
'console.log(obj[-0], obj[-""], obj["-0"]);',
|
||||||
|
'',
|
||||||
|
'console.log(obj[42], obj["42"]);',
|
||||||
|
'',
|
||||||
|
'console.log(obj[37], obj["a"], obj[37], obj["37"]);',
|
||||||
|
'',
|
||||||
|
'console.log(obj[1e42], obj["b"], obj["1e+42"]);',
|
||||||
|
]
|
||||||
|
expect_stdout: [
|
||||||
|
"0 0 1",
|
||||||
|
"3 3",
|
||||||
|
"4 5 4 4",
|
||||||
|
"8 7 8",
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
identifier: {
|
identifier: {
|
||||||
@@ -156,35 +205,35 @@ identifier: {
|
|||||||
D: 30,
|
D: 30,
|
||||||
F: 31,
|
F: 31,
|
||||||
G: 32,
|
G: 32,
|
||||||
H: 33,
|
false: 33,
|
||||||
I: 34,
|
null: 34,
|
||||||
J: 35,
|
true: 35,
|
||||||
K: 36,
|
H: 36,
|
||||||
L: 37,
|
I: 37,
|
||||||
M: 38,
|
J: 38,
|
||||||
N: 39,
|
K: 39,
|
||||||
O: 40,
|
L: 40,
|
||||||
P: 41,
|
M: 41,
|
||||||
Q: 42,
|
N: 42,
|
||||||
R: 43,
|
O: 43,
|
||||||
S: 44,
|
P: 44,
|
||||||
T: 45,
|
Q: 45,
|
||||||
U: 46,
|
R: 46,
|
||||||
V: 47,
|
S: 47,
|
||||||
W: 48,
|
T: 48,
|
||||||
X: 49,
|
U: 49,
|
||||||
Y: 50,
|
V: 50,
|
||||||
Z: 51,
|
W: 51,
|
||||||
$: 52,
|
X: 52,
|
||||||
_: 53,
|
Y: 53,
|
||||||
aa: 54,
|
Z: 54,
|
||||||
ba: 55,
|
$: 55,
|
||||||
ca: 56,
|
_: 56,
|
||||||
da: 57,
|
aa: 57,
|
||||||
ea: 58,
|
ba: 58,
|
||||||
fa: 59,
|
ca: 59,
|
||||||
ga: 60,
|
da: 60,
|
||||||
ha: 61
|
ea: 61,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user