[Pkg-javascript-commits] [uglifyjs] 160/491: synchronise `mangle.properties` for `minify()` & `test/compress` (#2151)

Jonas Smedegaard dr at jones.dk
Wed Feb 14 19:51:31 UTC 2018


This is an automated email from the git hooks/post-receive script.

js pushed a commit to annotated tag debian/3.3.10-1
in repository uglifyjs.

commit dc6bcaa18eda80f31674a1f8167d7fbe997f743b
Author: Alex Lam S.L <alexlamsl at gmail.com>
Date:   Fri Jun 23 15:53:13 2017 +0800

    synchronise `mangle.properties` for `minify()` & `test/compress` (#2151)
---
 lib/compress.js             |  4 ++-
 test/compress/functions.js  |  2 +-
 test/compress/issue-1321.js | 18 ++++++-------
 test/compress/issue-1770.js | 66 ++++++++++++++++++++++-----------------------
 test/compress/issue-747.js  | 14 ++++++----
 test/compress/properties.js | 22 +++++++--------
 test/mocha/let.js           | 28 ++++++++++++-------
 test/run-tests.js           | 12 +++++----
 8 files changed, 91 insertions(+), 75 deletions(-)

diff --git a/lib/compress.js b/lib/compress.js
index c24510f..b9922e1 100644
--- a/lib/compress.js
+++ b/lib/compress.js
@@ -3114,7 +3114,9 @@ merge(Compressor.prototype, {
                     var comp = new Compressor(compressor.options);
                     ast = ast.transform(comp);
                     ast.figure_out_scope(mangle);
-                    ast.mangle_names();
+                    base54.reset();
+                    ast.compute_char_frequency(mangle);
+                    ast.mangle_names(mangle);
                     var fun;
                     ast.walk(new TreeWalker(function(node) {
                         if (fun) return true;
diff --git a/test/compress/functions.js b/test/compress/functions.js
index d2640bb..b5def8e 100644
--- a/test/compress/functions.js
+++ b/test/compress/functions.js
@@ -265,7 +265,7 @@ issue_203: {
     }
     expect: {
         var m = {};
-        var fn = Function("a", "b", "b.exports=42");
+        var fn = Function("n", "o", "o.exports=42");
         fn(null, m, m.exports);
         console.log(m.exports);
     }
diff --git a/test/compress/issue-1321.js b/test/compress/issue-1321.js
index dcbfde6..6b92291 100644
--- a/test/compress/issue-1321.js
+++ b/test/compress/issue-1321.js
@@ -10,9 +10,9 @@ issue_1321_no_debug: {
     }
     expect: {
         var x = {};
-        x.b = 1;
-        x["a"] = 2 * x.b;
-        console.log(x.b, x["a"]);
+        x.o = 1;
+        x["a"] = 2 * x.o;
+        console.log(x.o, x["a"]);
     }
     expect_stdout: true
 }
@@ -30,9 +30,9 @@ issue_1321_debug: {
     }
     expect: {
         var x = {};
-        x.a = 1;
-        x["_$foo$_"] = 2 * x.a;
-        console.log(x.a, x["_$foo$_"]);
+        x.o = 1;
+        x["_$foo$_"] = 2 * x.o;
+        console.log(x.o, x["_$foo$_"]);
     }
     expect_stdout: true
 }
@@ -49,9 +49,9 @@ issue_1321_with_quoted: {
     }
     expect: {
         var x = {};
-        x.a = 1;
-        x["b"] = 2 * x.a;
-        console.log(x.a, x["b"]);
+        x.o = 1;
+        x["x"] = 2 * x.o;
+        console.log(x.o, x["x"]);
     }
     expect_stdout: true
 }
diff --git a/test/compress/issue-1770.js b/test/compress/issue-1770.js
index 24134f8..f296a40 100644
--- a/test/compress/issue-1770.js
+++ b/test/compress/issue-1770.js
@@ -82,7 +82,7 @@ numeric_literal: {
         '    42: 2,',
         '    "42": 3,',
         '    37: 4,',
-        '    a: 5,',
+        '    o: 5,',
         '    1e42: 6,',
         '    b: 7,',
         '    "1e+42": 8',
@@ -92,7 +92,7 @@ numeric_literal: {
         '',
         'console.log(obj[42], obj["42"]);',
         '',
-        'console.log(obj[37], obj["a"], obj[37], obj["37"]);',
+        'console.log(obj[37], obj["o"], obj[37], obj["37"]);',
         '',
         'console.log(obj[1e42], obj["b"], obj["1e+42"]);',
     ]
@@ -173,32 +173,32 @@ identifier: {
     }
     expect: {
         var obj = {
-            a: 1,
-            b: 2,
-            c: 3,
-            d: 4,
-            e: 5,
-            f: 6,
-            g: 7,
-            h: 8,
-            i: 9,
-            j: 10,
-            k: 11,
-            l: 12,
-            m: 13,
-            n: 14,
-            o: 15,
-            p: 16,
-            q: 17,
-            r: 18,
-            s: 19,
-            t: 20,
-            u: 21,
-            v: 22,
-            w: 23,
-            x: 24,
-            y: 25,
-            z: 26,
+            e: 1,
+            t: 2,
+            n: 3,
+            a: 4,
+            i: 5,
+            o: 6,
+            r: 7,
+            l: 8,
+            s: 9,
+            c: 10,
+            f: 11,
+            u: 12,
+            d: 13,
+            h: 14,
+            p: 15,
+            b: 16,
+            v: 17,
+            w: 18,
+            y: 19,
+            g: 20,
+            m: 21,
+            k: 22,
+            x: 23,
+            j: 24,
+            z: 25,
+            q: 26,
             A: 27,
             B: 28,
             C: 29,
@@ -229,11 +229,11 @@ identifier: {
             Z: 54,
             $: 55,
             _: 56,
-            aa: 57,
-            ba: 58,
-            ca: 59,
-            da: 60,
-            ea: 61,
+            ee: 57,
+            te: 58,
+            ne: 59,
+            ae: 60,
+            ie: 61,
         };
     }
 }
diff --git a/test/compress/issue-747.js b/test/compress/issue-747.js
index 0a4e450..1f7079c 100644
--- a/test/compress/issue-747.js
+++ b/test/compress/issue-747.js
@@ -1,37 +1,41 @@
 dont_reuse_prop: {
     mangle_props = {
         regex: /asd/
-    };
-
+    }
     input: {
+        "aaaaaaaaaabbbbb";
         var obj = {};
         obj.a = 123;
         obj.asd = 256;
         console.log(obj.a);
     }
     expect: {
+        "aaaaaaaaaabbbbb";
         var obj = {};
         obj.a = 123;
         obj.b = 256;
         console.log(obj.a);
     }
+    expect_stdout: "123"
 }
 
 unmangleable_props_should_always_be_reserved: {
     mangle_props = {
         regex: /asd/
-    };
-
+    }
     input: {
+        "aaaaaaaaaabbbbb";
         var obj = {};
         obj.asd = 256;
         obj.a = 123;
         console.log(obj.a);
     }
     expect: {
+        "aaaaaaaaaabbbbb";
         var obj = {};
         obj.b = 256;
         obj.a = 123;
         console.log(obj.a);
     }
-}
\ No newline at end of file
+    expect_stdout: "123"
+}
diff --git a/test/compress/properties.js b/test/compress/properties.js
index a83acc1..8126d6c 100644
--- a/test/compress/properties.js
+++ b/test/compress/properties.js
@@ -135,11 +135,11 @@ mangle_properties: {
         a['run']({color: "blue", foo: "baz"});
     }
     expect: {
-        a["a"] = "bar";
-        a.b = "red";
-        x = {c: 10};
-        a.d(x.c, a.a);
-        a['d']({b: "blue", a: "baz"});
+        a["o"] = "bar";
+        a.a = "red";
+        x = {r: 10};
+        a.b(x.r, a.o);
+        a['b']({a: "blue", o: "baz"});
     }
 }
 
@@ -177,16 +177,16 @@ mangle_unquoted_properties: {
         function f1() {
             a["foo"] = "bar";
             a.color = "red";
-            a.b = 2;
-            x = {"bar": 10, c: 7};
-            a.c = 9;
+            a.o = 2;
+            x = {"bar": 10, f: 7};
+            a.f = 9;
         }
         function f2() {
             a.foo = "bar";
             a['color'] = "red";
-            x = {bar: 10, c: 7};
-            a.c = 9;
-            a.b = 3;
+            x = {bar: 10, f: 7};
+            a.f = 9;
+            a.o = 3;
         }
     }
 }
diff --git a/test/mocha/let.js b/test/mocha/let.js
index f41fd59..2390998 100644
--- a/test/mocha/let.js
+++ b/test/mocha/let.js
@@ -2,29 +2,37 @@ var Uglify = require('../../');
 var assert = require("assert");
 
 describe("let", function() {
-    it("Should not produce `let` as a variable name in mangle", function(done) {
+    it("Should not produce reserved keywords as variable name in mangle", function(done) {
         this.timeout(10000);
 
         // Produce a lot of variables in a function and run it through mangle.
-        var s = '"use strict"; function foo() {';
-        for (var i = 0; i < 21000; ++i) {
+        var s = '"dddddeeeeelllllooooottttt"; function foo() {';
+        for (var i = 0; i < 18000; i++) {
             s += "var v" + i + "=0;";
         }
         s += '}';
         var result = Uglify.minify(s, {compress: false});
 
         // Verify that select keywords and reserved keywords not produced
-        assert.strictEqual(result.code.indexOf("var let="), -1);
-        assert.strictEqual(result.code.indexOf("var do="), -1);
-        assert.strictEqual(result.code.indexOf("var var="), -1);
+        [
+            "do",
+            "let",
+            "var",
+        ].forEach(function(name) {
+            assert.strictEqual(result.code.indexOf("var " + name + "="), -1);
+        });
 
         // Verify that the variable names that appeared immediately before
-        // and after the erroneously generated `let` variable name still exist
+        // and after the erroneously generated variable name still exist
         // to show the test generated enough symbols.
-        assert(result.code.indexOf("var ket=") >= 0);
-        assert(result.code.indexOf("var met=") >= 0);
+        [
+            "to", "eo",
+            "eet", "fet",
+            "rar", "oar",
+        ].forEach(function(name) {
+            assert.ok(result.code.indexOf("var " + name + "=") >= 0);
+        });
 
         done();
     });
 });
-
diff --git a/test/run-tests.js b/test/run-tests.js
index 71ffe72..6b8c9dd 100755
--- a/test/run-tests.js
+++ b/test/run-tests.js
@@ -86,7 +86,6 @@ function run_compress_tests() {
         log_start_file(file);
         function test_case(test) {
             log_test(test.name);
-            U.base54.reset();
             var output_options = test.beautify || {};
             var expect;
             if (test.expect) {
@@ -101,9 +100,6 @@ function run_compress_tests() {
                 quote_style: 3,
                 keep_quoted_props: true
             });
-            if (test.mangle_props) {
-                input = U.mangle_properties(input, test.mangle_props);
-            }
             var options = U.defaults(test.options, {
                 warnings: false
             });
@@ -118,10 +114,16 @@ function run_compress_tests() {
             var cmp = new U.Compressor(options, true);
             var output = cmp.compress(input);
             output.figure_out_scope(test.mangle);
-            if (test.mangle) {
+            if (test.mangle || test.mangle_props) {
+                U.base54.reset();
                 output.compute_char_frequency(test.mangle);
+            }
+            if (test.mangle) {
                 output.mangle_names(test.mangle);
             }
+            if (test.mangle_props) {
+                output = U.mangle_properties(output, test.mangle_props);
+            }
             output = make_code(output, output_options);
             if (expect != output) {
                 log("!!! failed\n---INPUT---\n{input}\n---OUTPUT---\n{output}\n---EXPECTED---\n{expected}\n\n", {

-- 
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