@@ -163,6 +163,7 @@ public void testShortCircuitAnd() throws Exception {
163163 assertEquals ("alert(a&&true);" , optimize ("alert(a && true)" ));
164164 assertEquals ("alert(a&&false);" , optimize ("alert(a && false)" ));
165165 assertEquals ("alert(!!a&&!!b);" , optimize ("alert(!!a && !!b)" ));
166+ assertEquals ("alert(c|(bits&&1));" , optimize ("alert(c | (a, bits && 1))" ));
166167
167168 // in boolean context we can simplify more
168169 assertEquals ("alert(a&&b?c:d);" , optimize ("alert(!!a && !!b ? c :d)" ));
@@ -180,6 +181,11 @@ public void testShortCircuitAndWithSideEffects() throws Exception {
180181 assertEquals ("a()&&c()?d():e();" , optimize ("a() && true && c() ? d() : e();" ));
181182 }
182183
184+ public void testSimplifyComma () throws Exception {
185+ assertEquals ("alert(!!a());" , optimize ("alert((true, !!a()))" ));
186+ assertEquals ("alert((a(),true));" , optimize ("alert((!!a(), true))" ));
187+ }
188+
183189 public void testShortCircuitOr () throws Exception {
184190 assertEquals ("alert(true);" , optimize ("alert(true || a)" ));
185191 assertEquals ("alert(a);" , optimize ("alert(false || a)" ));
@@ -188,6 +194,7 @@ public void testShortCircuitOr() throws Exception {
188194 assertEquals ("alert(a||true);" , optimize ("alert(a || true)" ));
189195 assertEquals ("alert(a||false);" , optimize ("alert(a || false)" ));
190196 assertEquals ("alert(!!a||!!b);" , optimize ("alert(!!a || !!b)" ));
197+ assertEquals ("alert(c|(bits||0));" , optimize ("alert(c | (a, bits || 0))" ));
191198
192199 // in boolean context we can simplify more
193200 assertEquals ("alert(a||b?c:d);" , optimize ("alert(!!a || !!b ? c :d)" ));
0 commit comments