aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkzc <zaxxon2011@gmail.com>2016-12-21 10:52:30 -0500
committerRichard van Velzen <rvanvelzen1@gmail.com>2017-01-19 17:14:33 +0100
commitec2e5fa3a2e5cf421aebd94b93c668b18e540c69 (patch)
treea53aa39e78162035803619f0d03800384e9376f4
parentda17766ddda3b89f94706ad7e329faa66a3e3a3e (diff)
downloadtracifyjs-ec2e5fa3a2e5cf421aebd94b93c668b18e540c69.tar.gz
tracifyjs-ec2e5fa3a2e5cf421aebd94b93c668b18e540c69.zip
Have minify() and tests use figure_out_scope() as uglifyjs CLI does
Clarify docs, help and tests for --support-ie8 and screw_ie8=false
-rw-r--r--README.md9
-rwxr-xr-xbin/uglifyjs4
-rw-r--r--test/compress/screw-ie8.js8
-rwxr-xr-xtest/run-tests.js8
-rw-r--r--tools/node.js2
5 files changed, 19 insertions, 12 deletions
diff --git a/README.md b/README.md
index 1be63009..a8b55843 100644
--- a/README.md
+++ b/README.md
@@ -67,10 +67,13 @@ The available options are:
JS that was generated from some other original
code.
--screw-ie8 Use this flag if you don't wish to support
- Internet Explorer 6-8 quirks.
+ Internet Explorer 6/7/8.
By default UglifyJS will not try to be IE-proof.
- --support-ie8 Use this flag to support Internet Explorer 6-8 quirks.
- Note: may break standards compliant `catch` identifiers.
+ --support-ie8 Use this flag to support Internet Explorer 6/7/8.
+ Equivalent to setting `screw_ie8: false` in `minify()`
+ for `compress`, `mangle` and `output` options.
+ Note: `--support-ie8` may generate incorrect code
+ for `try`/`catch` in ES5 compliant browsers.
--expr Parse a single expression, rather than a
program (for parsing JSON)
-p, --prefix Skip prefix for original filenames that appear
diff --git a/bin/uglifyjs b/bin/uglifyjs
index d5025827..747fb151 100755
--- a/bin/uglifyjs
+++ b/bin/uglifyjs
@@ -26,8 +26,8 @@ mangling you need to use `-c` and `-m`.\
.describe("source-map-inline", "Write base64-encoded source map to the end of js output. Disabled by default")
.describe("source-map-include-sources", "Pass this flag if you want to include the content of source files in the source map as sourcesContent property.")
.describe("in-source-map", "Input source map, useful if you're compressing JS that was generated from some other original code.")
- .describe("screw-ie8", "Do not support Internet Explorer 6-8 quirks. This flag is enabled by default.")
- .describe("support-ie8", "Support non-standard Internet Explorer 6-8 javascript. Note: may break standards compliant `catch` identifiers.")
+ .describe("screw-ie8", "Do not support Internet Explorer 6/7/8. This flag is enabled by default.")
+ .describe("support-ie8", "Support non-standard Internet Explorer 6/7/8 javascript. Note: may generate incorrect code for try/catch in ES5 compliant browsers.")
.describe("expr", "Parse a single expression, rather than a program (for parsing JSON)")
.describe("p", "Skip prefix for original filenames that appear in source maps. \
For example -p 3 will drop 3 directories from file names and ensure they are relative paths. \
diff --git a/test/compress/screw-ie8.js b/test/compress/screw-ie8.js
index 0a4e2323..31c448fd 100644
--- a/test/compress/screw-ie8.js
+++ b/test/compress/screw-ie8.js
@@ -46,6 +46,8 @@ do_screw_try_catch: {
}
dont_screw_try_catch: {
+ // This test is known to generate incorrect code for screw_ie8=false.
+ // Update expected result in the event this bug is ever fixed.
options = { screw_ie8: false };
mangle = { screw_ie8: false };
beautify = { screw_ie8: false };
@@ -102,6 +104,8 @@ do_screw_try_catch_undefined: {
}
dont_screw_try_catch_undefined: {
+ // This test is known to generate incorrect code for screw_ie8=false.
+ // Update expected result in the event this bug is ever fixed.
options = { screw_ie8: false };
mangle = { screw_ie8: false };
beautify = { screw_ie8: false };
@@ -123,8 +127,8 @@ dont_screw_try_catch_undefined: {
} catch (n) {
console.log("caught: "+n)
}
- console.log("undefined is " + void 0);
- return void 0===o
+ console.log("undefined is " + n);
+ return o === n
}
}
}
diff --git a/test/run-tests.js b/test/run-tests.js
index 8fb93c83..a4721399 100755
--- a/test/run-tests.js
+++ b/test/run-tests.js
@@ -70,12 +70,12 @@ function test_directory(dir) {
return path.resolve(tests_dir, dir);
}
-function as_toplevel(input) {
+function as_toplevel(input, mangle_options) {
if (input instanceof U.AST_BlockStatement) input = input.body;
else if (input instanceof U.AST_Statement) input = [ input ];
else throw new Error("Unsupported input syntax");
var toplevel = new U.AST_Toplevel({ body: input });
- toplevel.figure_out_scope();
+ toplevel.figure_out_scope(mangle_options);
return toplevel;
}
@@ -103,11 +103,11 @@ function run_compress_tests() {
var output_options = test.beautify || {};
var expect;
if (test.expect) {
- expect = make_code(as_toplevel(test.expect), output_options);
+ expect = make_code(as_toplevel(test.expect, test.mangle), output_options);
} else {
expect = test.expect_exact;
}
- var input = as_toplevel(test.input);
+ var input = as_toplevel(test.input, test.mangle);
var input_code = make_code(test.input, {
beautify: true,
quote_style: 3,
diff --git a/tools/node.js b/tools/node.js
index 0b2d5197..c68faaa5 100644
--- a/tools/node.js
+++ b/tools/node.js
@@ -94,7 +94,7 @@ exports.minify = function(files, options) {
if (options.compress) {
var compress = { warnings: options.warnings };
UglifyJS.merge(compress, options.compress);
- toplevel.figure_out_scope();
+ toplevel.figure_out_scope(options.mangle);
var sq = UglifyJS.Compressor(compress);
toplevel = sq.compress(toplevel);
}