aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorMihai Bazon <mihai@bazon.net>2013-03-01 13:12:03 +0200
committerMihai Bazon <mihai@bazon.net>2013-03-01 13:12:03 +0200
commitdac6efb43d7112f697b863fc6783e6324e0aa4c0 (patch)
tree23c491ad7c89bbff1268d7bedef1e9b4a88ca47f /lib
parent8880f4824c2214b1a6bd6ebc954a04d38124dadb (diff)
downloadtracifyjs-dac6efb43d7112f697b863fc6783e6324e0aa4c0.tar.gz
tracifyjs-dac6efb43d7112f697b863fc6783e6324e0aa4c0.zip
Drop last `default:` if it's the last branch and empty
Close #141
Diffstat (limited to 'lib')
-rw-r--r--lib/compress.js17
1 files changed, 12 insertions, 5 deletions
diff --git a/lib/compress.js b/lib/compress.js
index f4048991..efdb49fe 100644
--- a/lib/compress.js
+++ b/lib/compress.js
@@ -1414,11 +1414,18 @@ merge(Compressor.prototype, {
body: self.expression
}).transform(compressor);
}
- var last_branch = self.body[self.body.length - 1];
- if (last_branch) {
- var stat = last_branch.body[last_branch.body.length - 1]; // last statement
- if (stat instanceof AST_Break && loop_body(compressor.loopcontrol_target(stat.label)) === self)
- last_branch.body.pop();
+ for(;;) {
+ var last_branch = self.body[self.body.length - 1];
+ if (last_branch) {
+ var stat = last_branch.body[last_branch.body.length - 1]; // last statement
+ if (stat instanceof AST_Break && loop_body(compressor.loopcontrol_target(stat.label)) === self)
+ last_branch.body.pop();
+ if (last_branch instanceof AST_Default && last_branch.body.length == 0) {
+ self.body.pop();
+ continue;
+ }
+ }
+ break;
}
var exp = self.expression.evaluate(compressor);
out: if (exp.length == 2) try {