summaryrefslogtreecommitdiffstats
path: root/dc3c4073c2060d62a8578848c5d222a8b7608df1.patch
blob: 6cc4e69ef507802b857580b9dbc91ad15c48e02c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
From dc3c4073c2060d62a8578848c5d222a8b7608df1 Mon Sep 17 00:00:00 2001
From: Nicolas Grekas <nicolas.grekas@gmail.com>
Date: Mon, 16 Mar 2015 19:14:38 +0100
Subject: [PATCH] Fix #15 when ";" is missing before else/while

---
 src/JSqueeze.php                      | 1 +
 tests/uglifyjs/expected/if.js         | 3 ++-
 tests/uglifyjs/expected/ifreturn.js   | 3 ++-
 tests/uglifyjs/expected/issue10.js    | 3 ++-
 tests/uglifyjs/expected/tchwork-15.js | 2 ++
 tests/uglifyjs/test/tchwork-15.js     | 2 ++
 6 files changed, 11 insertions(+), 3 deletions(-)
 create mode 100644 tests/uglifyjs/expected/tchwork-15.js
 create mode 100644 tests/uglifyjs/test/tchwork-15.js

diff --git a/src/JSqueeze.php b/src/JSqueeze.php
index b85edeb..e6da80e 100644
--- a/src/JSqueeze.php
+++ b/src/JSqueeze.php
@@ -162,6 +162,7 @@ function squeeze($code, $singleLine = true, $keepImportantComments = true, $spec
 
         $code = substr($tree[$key]['code'], 1);
         $code = preg_replace("'\breturn !'", 'return!', $code);
+        $code = preg_replace("'\}(?=(else|while)[^\$.a-zA-Z0-9_])'", "}\r", $code);
         $code = str_replace(array_keys($this->strings), array_values($this->strings), $code);
 
         if ($singleLine) $code = strtr($code, "\n", ';');
diff --git a/tests/uglifyjs/expected/if.js b/tests/uglifyjs/expected/if.js
index c347e25..7f4fde1 100644
--- a/tests/uglifyjs/expected/if.js
+++ b/tests/uglifyjs/expected/if.js
@@ -1 +1,2 @@
-;var a=1;if(a==1){a=2}else{a=17};
+;var a=1;if(a==1){a=2}
+else{a=17};
diff --git a/tests/uglifyjs/expected/ifreturn.js b/tests/uglifyjs/expected/ifreturn.js
index ec6b59d..1a85e9c 100644
--- a/tests/uglifyjs/expected/ifreturn.js
+++ b/tests/uglifyjs/expected/ifreturn.js
@@ -1 +1,2 @@
-;function a(r){if(r==1){return 2}else{return 17};return 3};
+;function a(r){if(r==1){return 2}
+else{return 17};return 3};
diff --git a/tests/uglifyjs/expected/issue10.js b/tests/uglifyjs/expected/issue10.js
index afa9e0c..ec193b0 100644
--- a/tests/uglifyjs/expected/issue10.js
+++ b/tests/uglifyjs/expected/issue10.js
@@ -1 +1,2 @@
-;function f(){var r;if(r='a'){return r}else{return r}};f();
+;function f(){var r;if(r='a'){return r}
+else{return r}};f();
diff --git a/tests/uglifyjs/expected/tchwork-15.js b/tests/uglifyjs/expected/tchwork-15.js
new file mode 100644
index 0000000..59972e2
--- /dev/null
+++ b/tests/uglifyjs/expected/tchwork-15.js
@@ -0,0 +1,2 @@
+;if(foo)var bar=function(){}
+else baz;
diff --git a/tests/uglifyjs/test/tchwork-15.js b/tests/uglifyjs/test/tchwork-15.js
new file mode 100644
index 0000000..cbe8c16
--- /dev/null
+++ b/tests/uglifyjs/test/tchwork-15.js
@@ -0,0 +1,2 @@
+if (foo) var bar = function() {}
+else baz;