aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMihai Bazon <mihai@bazon.net>2014-10-20 18:12:13 +0300
committerMihai Bazon <mihai@bazon.net>2014-10-20 18:12:13 +0300
commitf36a1eaa8b5203ab7e4616108c33a0b68668a8db (patch)
tree3a869f736a04317d44ea6b699ec92b52620625e6
parenta64bdda9ae42ff39543fcfe16d70c4e064780e92 (diff)
downloadtracifyjs-f36a1eaa8b5203ab7e4616108c33a0b68668a8db.tar.gz
tracifyjs-f36a1eaa8b5203ab7e4616108c33a0b68668a8db.zip
Add option to allow return outside of functions.
Close #288
-rwxr-xr-xbin/uglifyjs9
-rw-r--r--lib/parse.js3
2 files changed, 8 insertions, 4 deletions
diff --git a/bin/uglifyjs b/bin/uglifyjs
index 3a3318b2..fc33f96f 100755
--- a/bin/uglifyjs
+++ b/bin/uglifyjs
@@ -64,6 +64,7 @@ You need to pass an argument to this option to specify the name that your module
.describe("v", "Verbose")
.describe("V", "Print version number and exit.")
.describe("noerr", "Don't throw an error for unknown options in -c, -b or -m.")
+ .describe("bare-returns", "Allow return outside of functions. Useful when minifying CommonJS modules.")
.alias("p", "prefix")
.alias("o", "output")
@@ -100,6 +101,7 @@ You need to pass an argument to this option to specify the name that your module
.boolean("lint")
.boolean("V")
.boolean("noerr")
+ .boolean("bare-returns")
.wrap(80)
@@ -275,9 +277,10 @@ async.eachLimit(files, 1, function (file, cb) {
else {
try {
TOPLEVEL = UglifyJS.parse(code, {
- filename : file,
- toplevel : TOPLEVEL,
- expression : ARGS.expr,
+ filename : file,
+ toplevel : TOPLEVEL,
+ expression : ARGS.expr,
+ bare_returns : ARGS.bare_returns,
});
} catch(ex) {
if (ex instanceof UglifyJS.JS_Parse_Error) {
diff --git a/lib/parse.js b/lib/parse.js
index de982b1e..931e5f66 100644
--- a/lib/parse.js
+++ b/lib/parse.js
@@ -609,6 +609,7 @@ function parse($TEXT, options) {
toplevel : null,
expression : false,
html5_comments : true,
+ bare_returns : false,
});
var S = {
@@ -788,7 +789,7 @@ function parse($TEXT, options) {
return if_();
case "return":
- if (S.in_function == 0)
+ if (S.in_function == 0 && !options.bare_returns)
croak("'return' outside of function");
return new AST_Return({
value: ( is("punc", ";")