diff options
author | Alex Lam S.L <alexlamsl@gmail.com> | 2017-06-27 10:31:19 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-06-27 10:31:19 +0800 |
commit | 1e4de2e6d31a50dafee4a4e4d020f22691d22292 (patch) | |
tree | 3d7b4b249ecfb6c7a4d61290136d7340b60d2842 | |
parent | 8b4dcd8f3e673209cd56ee44cc0292b4bcf60559 (diff) | |
download | tracifyjs-1e4de2e6d31a50dafee4a4e4d020f22691d22292.tar.gz tracifyjs-1e4de2e6d31a50dafee4a4e4d020f22691d22292.zip |
parse `@global_defs` as expressions (#2169)
- let parser rejects non-conformant input
- eliminate need for extraneous parenthesis
-rw-r--r-- | lib/compress.js | 9 | ||||
-rw-r--r-- | test/compress/global_defs.js | 21 | ||||
-rw-r--r-- | test/mocha/minify.js | 2 |
3 files changed, 25 insertions, 7 deletions
diff --git a/lib/compress.js b/lib/compress.js index dc82db02..0f00d091 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -92,12 +92,9 @@ function Compressor(options, false_by_default) { var global_defs = this.options["global_defs"]; if (typeof global_defs == "object") for (var key in global_defs) { if (/^@/.test(key) && HOP(global_defs, key)) { - var ast = parse(global_defs[key]); - if (ast.body.length == 1 && ast.body[0] instanceof AST_SimpleStatement) { - global_defs[key.slice(1)] = ast.body[0].body; - } else throw new Error(string_template("Can't handle expression: {value}", { - value: global_defs[key] - })); + global_defs[key.slice(1)] = parse(global_defs[key], { + expression: true + }); } } var pure_funcs = this.options["pure_funcs"]; diff --git a/test/compress/global_defs.js b/test/compress/global_defs.js index d784d335..74147ded 100644 --- a/test/compress/global_defs.js +++ b/test/compress/global_defs.js @@ -174,3 +174,24 @@ issue_1986: { console.log(42); } } + +issue_2167: { + options = { + conditionals: true, + dead_code: true, + evaluate: true, + global_defs: { + "@isDevMode": "function(){}", + }, + side_effects: true, + } + input: { + if (isDevMode()) { + greetOverlord(); + } + doWork(); + } + expect: { + doWork(); + } +} diff --git a/test/mocha/minify.js b/test/mocha/minify.js index 638e79f7..b4722ce2 100644 --- a/test/mocha/minify.js +++ b/test/mocha/minify.js @@ -212,7 +212,7 @@ describe("minify", function() { }); var err = result.error; assert.ok(err instanceof Error); - assert.strictEqual(err.stack.split(/\n/)[0], "Error: Can't handle expression: debugger"); + assert.strictEqual(err.stack.split(/\n/)[0], "SyntaxError: Unexpected token: keyword (debugger)"); }); it("should skip inherited properties", function() { var foo = Object.create({ skip: this }); |