fix mangleProperties of `undefined` & `Infinity` (#1772)
authorAlex Lam S.L <alexlamsl@gmail.com>
Mon, 3 Apr 2017 04:31:05 +0000 (12:31 +0800)
committerGitHub <noreply@github.com>
Mon, 3 Apr 2017 04:31:05 +0000 (12:31 +0800)
`NaN` already works by the happy accident of `Number.NaN`

fixes #1770

lib/propmangle.js
test/compress/issue-1770.js [new file with mode: 0644]

index cfa035d..c1e8c7e 100644 (file)
 "use strict";
 
 function find_builtins() {
-    var a = [];
+    // NaN will be included due to Number.NaN
+    var a = [
+        "Infinity",
+        "undefined",
+    ];
     [ Object, Array, Function, Number,
       String, Boolean, Error, Math,
       Date, RegExp
diff --git a/test/compress/issue-1770.js b/test/compress/issue-1770.js
new file mode 100644 (file)
index 0000000..69df896
--- /dev/null
@@ -0,0 +1,48 @@
+mangle_props: {
+    mangle_props = {}
+    input: {
+        var obj = {
+            undefined: 1,
+            NaN: 2,
+            Infinity: 3,
+            "-Infinity": 4,
+        };
+        console.log(
+            obj[void 0],
+            obj[undefined],
+            obj["undefined"],
+            obj[0/0],
+            obj[NaN],
+            obj["NaN"],
+            obj[1/0],
+            obj[Infinity],
+            obj["Infinity"],
+            obj[-1/0],
+            obj[-Infinity],
+            obj["-Infinity"]
+        );
+    }
+    expect: {
+        var obj = {
+            undefined: 1,
+            NaN: 2,
+            Infinity: 3,
+            "-Infinity": 4,
+        };
+        console.log(
+            obj[void 0],
+            obj[void 0],
+            obj["undefined"],
+            obj[0/0],
+            obj[NaN],
+            obj["NaN"],
+            obj[1/0],
+            obj[1/0],
+            obj["Infinity"],
+            obj[-1/0],
+            obj[-1/0],
+            obj["-Infinity"]
+        );
+    }
+    expect_stdout: true
+}