From 057de570e69b300ca472719cb234a32e593d34ec Mon Sep 17 00:00:00 2001 From: Anthony Van de Gejuchte Date: Wed, 26 Oct 2016 12:34:38 +0200 Subject: [PATCH] Pass mangle options to figure_out_scope before mangling in tests --- test/compress/screw-ie8.js | 114 ++++++++++++++++++++++++++++++++++++- test/mocha/screw-ie8.js | 23 ++++++++ test/run-tests.js | 2 +- 3 files changed, 137 insertions(+), 2 deletions(-) create mode 100644 test/mocha/screw-ie8.js diff --git a/test/compress/screw-ie8.js b/test/compress/screw-ie8.js index 527aea04..0a4e2323 100644 --- a/test/compress/screw-ie8.js +++ b/test/compress/screw-ie8.js @@ -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 index 00000000..28b092e9 --- /dev/null +++ b/test/mocha/screw-ie8.js @@ -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}' + ); + }); +}); diff --git a/test/run-tests.js b/test/run-tests.js index 4063870a..8fb93c83 100755 --- a/test/run-tests.js +++ b/test/run-tests.js @@ -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); -- 2.34.1