[Pkg-javascript-commits] [uglifyjs] 202/228: exclude mangling of special property names (#1779)
Jonas Smedegaard
dr at jones.dk
Sat Apr 15 14:25:30 UTC 2017
This is an automated email from the git hooks/post-receive script.
js pushed a commit to branch master
in repository uglifyjs.
commit 951770fc689c3f69679c390d31bc9f728f3e8bda
Author: Alex Lam S.L <alexlamsl at gmail.com>
Date: Tue Apr 4 03:50:19 2017 +0800
exclude mangling of special property names (#1779)
- `null`
- `true`
- `false`
- numeric literals
---
lib/propmangle.js | 5 +-
test/compress/issue-1770.js | 125 ++++++++++++++++++++++++++++++--------------
2 files changed, 91 insertions(+), 39 deletions(-)
diff --git a/lib/propmangle.js b/lib/propmangle.js
index 4e43bb6..b622299 100644
--- a/lib/propmangle.js
+++ b/lib/propmangle.js
@@ -46,6 +46,9 @@
function find_builtins() {
// NaN will be included due to Number.NaN
var a = [
+ "null",
+ "true",
+ "false",
"Infinity",
"-Infinity",
"undefined",
@@ -159,7 +162,7 @@ function mangle_properties(ast, options) {
if (options.only_cache) {
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;
}
diff --git a/test/compress/issue-1770.js b/test/compress/issue-1770.js
index 9008c6f..24134f8 100644
--- a/test/compress/issue-1770.js
+++ b/test/compress/issue-1770.js
@@ -6,7 +6,7 @@ mangle_props: {
NaN: 2,
Infinity: 3,
"-Infinity": 4,
- "-0": 5,
+ null: 5,
};
console.log(
obj[void 0],
@@ -21,9 +21,8 @@ mangle_props: {
obj[-1/0],
obj[-Infinity],
obj["-Infinity"],
- obj[-0],
- obj[-""],
- obj["-0"]
+ obj[null],
+ obj["null"]
);
}
expect: {
@@ -32,7 +31,7 @@ mangle_props: {
NaN: 2,
Infinity: 3,
"-Infinity": 4,
- a: 5,
+ null: 5,
};
console.log(
obj[void 0],
@@ -47,12 +46,62 @@ mangle_props: {
obj[-1/0],
obj[-1/0],
obj["-Infinity"],
- obj[-0],
- obj[-""],
- obj["a"]
+ obj[null],
+ obj["null"]
);
}
- 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: {
@@ -156,35 +205,35 @@ identifier: {
D: 30,
F: 31,
G: 32,
- H: 33,
- I: 34,
- J: 35,
- K: 36,
- L: 37,
- M: 38,
- N: 39,
- O: 40,
- P: 41,
- Q: 42,
- R: 43,
- S: 44,
- T: 45,
- U: 46,
- V: 47,
- W: 48,
- X: 49,
- Y: 50,
- Z: 51,
- $: 52,
- _: 53,
- aa: 54,
- ba: 55,
- ca: 56,
- da: 57,
- ea: 58,
- fa: 59,
- ga: 60,
- ha: 61
+ false: 33,
+ null: 34,
+ true: 35,
+ H: 36,
+ I: 37,
+ J: 38,
+ K: 39,
+ L: 40,
+ M: 41,
+ N: 42,
+ O: 43,
+ P: 44,
+ Q: 45,
+ R: 46,
+ S: 47,
+ T: 48,
+ U: 49,
+ V: 50,
+ W: 51,
+ X: 52,
+ Y: 53,
+ Z: 54,
+ $: 55,
+ _: 56,
+ aa: 57,
+ ba: 58,
+ ca: 59,
+ da: 60,
+ ea: 61,
};
}
}
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-javascript/uglifyjs.git
More information about the Pkg-javascript-commits
mailing list