Pass mangle options to figure_out_scope before mangling in tests
authorAnthony Van de Gejuchte <anthonyvdgent@gmail.com>
Wed, 26 Oct 2016 10:34:38 +0000 (12:34 +0200)
committerAnthony Van de Gejuchte <anthonyvdgent@gmail.com>
Thu, 27 Oct 2016 20:55:49 +0000 (22:55 +0200)
test/compress/screw-ie8.js
test/mocha/screw-ie8.js [new file with mode: 0644]
test/run-tests.js

index 527aea0..0a4e232 100644 (file)
@@ -15,4 +15,116 @@ dont_screw: {
 
     input: f("\v");
     expect_exact: 'f("\\x0B");';
-}
\ No newline at end of file
+}
+
+do_screw_try_catch: {
+    options = { screw_ie8: true };
+    mangle = { screw_ie8: true };
+    beautify = { screw_ie8: true };
+    input: {
+        good = function(e){
+            return function(error){
+                try{
+                    e()
+                } catch(e) {
+                    error(e)
+                }
+            }
+        };
+    }
+    expect: {
+        good = function(n){
+            return function(t){
+                try{
+                    n()
+                } catch(n) {
+                    t(n)
+                }
+            }
+        };
+    }
+}
+
+dont_screw_try_catch: {
+    options = { screw_ie8: false };
+    mangle = { screw_ie8: false };
+    beautify = { screw_ie8: false };
+    input: {
+        bad = function(e){
+            return function(error){
+                try{
+                    e()
+                } catch(e) {
+                    error(e)
+                }
+            }
+        };
+    }
+    expect: {
+        bad = function(n){
+            return function(n){
+                try{
+                    t()
+                } catch(t) {
+                    n(t)
+                }
+            }
+        };
+    }
+}
+
+do_screw_try_catch_undefined: {
+    options = { screw_ie8: true };
+    mangle = { screw_ie8: true };
+    beautify = { screw_ie8: true };
+    input: {
+        function a(b){
+            try {
+                throw 'Stuff';
+            } catch (undefined) {
+                console.log('caught: ' + undefined);
+            }
+            console.log('undefined is ' + undefined);
+            return b === undefined;
+        };
+    }
+    expect: {
+        function a(o){
+            try{
+                throw "Stuff"
+            } catch (o) {
+                console.log("caught: "+o)
+            }
+            console.log("undefined is " + void 0);
+            return void 0===o
+        }
+    }
+}
+
+dont_screw_try_catch_undefined: {
+    options = { screw_ie8: false };
+    mangle = { screw_ie8: false };
+    beautify = { screw_ie8: false };
+    input: {
+        function a(b){
+            try {
+                throw 'Stuff';
+            } catch (undefined) {
+                console.log('caught: ' + undefined);
+            }
+            console.log('undefined is ' + undefined);
+            return b === undefined;
+        };
+    }
+    expect: {
+        function a(o){
+            try{
+                throw "Stuff"
+            } catch (n) {
+                console.log("caught: "+n)
+            }
+            console.log("undefined is " + void 0);
+            return void 0===o
+        }
+    }
+}
diff --git a/test/mocha/screw-ie8.js b/test/mocha/screw-ie8.js
new file mode 100644 (file)
index 0000000..28b092e
--- /dev/null
@@ -0,0 +1,23 @@
+var assert = require("assert");
+var uglify = require("../../");
+
+describe("screw-ie8", function () {
+    it("Should be able to minify() with undefined as catch parameter in a try...catch statement", function () {
+        assert.strictEqual(
+            uglify.minify(
+                "function a(b){\
+                    try {\
+                        throw 'Stuff';\
+                    } catch (undefined) {\
+                        console.log('caught: ' + undefined);\
+                    }\
+                    console.log('undefined is ' + undefined);\
+                    return b === undefined;\
+                };", {
+                    fromString: true
+                }
+            ).code,
+            'function a(o){try{throw"Stuff"}catch(o){console.log("caught: "+o)}return console.log("undefined is "+void 0),void 0===o}'
+        );
+    });
+});
index 4063870..8fb93c8 100755 (executable)
@@ -117,7 +117,7 @@ function run_compress_tests() {
                 input = U.mangle_properties(input, test.mangle_props);
             }
             var output = cmp.compress(input);
-            output.figure_out_scope();
+            output.figure_out_scope(test.mangle);
             if (test.mangle) {
                 output.compute_char_frequency(test.mangle);
                 output.mangle_names(test.mangle);