Skip to content

Commit 6f5b89f

Browse files
committed
JS: revert transformation of => , fixes #863
1 parent 902ae95 commit 6f5b89f

File tree

3 files changed

+27
-17
lines changed

3 files changed

+27
-17
lines changed

js/js.go

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1013,13 +1013,14 @@ func (m *jsMinifier) minifyExpr(i js.IExpr, prec js.OpPrec) {
10131013
m.minifyExpr(left, js.OpUnary)
10141014
break
10151015
}
1016-
} else if right.Op == js.AddToken || right.Op == js.SubToken || right.Op == js.MulToken || right.Op == js.DivToken || right.Op == js.ModToken || right.Op == js.ExpToken || right.Op == js.LtLtToken || right.Op == js.GtGtToken || right.Op == js.GtGtGtToken || right.Op == js.BitAndToken || right.Op == js.BitOrToken || right.Op == js.BitXorToken || right.Op == js.AndToken || right.Op == js.OrToken || right.Op == js.NullishToken {
1017-
// a=a+b => a+=b
1018-
m.minifyExpr(left, js.OpLHS)
1019-
m.write(right.Op.Bytes())
1020-
m.write(equalBytes)
1021-
m.minifyExpr(y, js.OpAssign)
1022-
break
1016+
// TODO: may break implicit "evaluation" of variables? see #863
1017+
//} else if right.Op == js.AddToken || right.Op == js.SubToken || right.Op == js.MulToken || right.Op == js.DivToken || right.Op == js.ModToken || right.Op == js.ExpToken || right.Op == js.LtLtToken || right.Op == js.GtGtToken || right.Op == js.GtGtGtToken || right.Op == js.BitAndToken || right.Op == js.BitOrToken || right.Op == js.BitXorToken {
1018+
// // a=a+b => a+=b
1019+
// m.minifyExpr(left, js.OpLHS)
1020+
// m.write(right.Op.Bytes())
1021+
// m.write(equalBytes)
1022+
// m.minifyExpr(y, js.OpAssign)
1023+
// break
10231024
}
10241025
}
10251026
}

js/js_test.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -475,10 +475,10 @@ func TestJS(t *testing.T) {
475475
{`a=false**2`, `a=(!1)**2`},
476476
{`a=(++b)**2`, `a=++b**2`},
477477
{`a=(a||b)&&c`, `a=(a||b)&&c`},
478-
{`a=a||(b&&c)`, `a||=b&&c`},
478+
//{`a=a||(b&&c)`, `a||=b&&c`},
479479
{`a=(a&&b)||c`, `a=a&&b||c`},
480-
{`a=a&&(b||c)`, `a&&=b||c`},
481-
{`a=a&&(b&&c)`, `a&&=b&&c`},
480+
//{`a=a&&(b||c)`, `a&&=b||c`},
481+
//{`a=a&&(b&&c)`, `a&&=b&&c`},
482482
{`a=c&&(a??b)`, `a=c&&(a??b)`},
483483
{`a=(a||b)??(c||d)`, `a=(a||b)??(c||d)`},
484484
{`a=(a&&b)??(c&&d)`, `a=(a&&b)??(c&&d)`},
@@ -678,10 +678,10 @@ func TestJS(t *testing.T) {
678678
//{`(a.b===null||a.b===undefined)?undefined:a.b()`, `a.b?.()`},
679679
{`a=1+a`, `++a`},
680680
{`a=a-1`, `--a`},
681-
{`a=a+5`, `a+=5`},
682-
{`a=5+a`, `a+=5`},
683-
{`a=a+b`, `a+=b`},
684-
{`a=a^b`, `a^=b`},
681+
//{`a=a+5`, `a+=5`},
682+
//{`a=5+a`, `a+=5`},
683+
//{`a=a+b`, `a+=b`},
684+
//{`a=a^b`, `a^=b`},
685685

686686
// other
687687
{`async function g(){await x+y}`, `async function g(){await x+y}`},

js/util.go

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1383,7 +1383,10 @@ func decimalNumber(num []byte, prec int) []byte {
13831383
func binaryNumber(num []byte, prec int) []byte {
13841384
b, suffix := removeUnderscoresAndSuffix(num)
13851385
if len(b) <= 2 || 65 < len(b) {
1386-
return num
1386+
if suffix {
1387+
return append(b, 'n')
1388+
}
1389+
return b
13871390
}
13881391
var n int64
13891392
for _, c := range b[2:] {
@@ -1406,7 +1409,10 @@ func binaryNumber(num []byte, prec int) []byte {
14061409
func octalNumber(num []byte, prec int) []byte {
14071410
b, suffix := removeUnderscoresAndSuffix(num)
14081411
if len(b) <= 2 || 23 < len(b) {
1409-
return num
1412+
if suffix {
1413+
return append(b, 'n')
1414+
}
1415+
return b
14101416
}
14111417
var n int64
14121418
for _, c := range b[2:] {
@@ -1429,7 +1435,10 @@ func octalNumber(num []byte, prec int) []byte {
14291435
func hexadecimalNumber(num []byte, prec int) []byte {
14301436
b, suffix := removeUnderscoresAndSuffix(num)
14311437
if len(b) <= 2 || 12 < len(b) || len(b) == 12 && ('D' < b[2] && b[2] <= 'F' || 'd' < b[2]) {
1432-
return num
1438+
if suffix {
1439+
return append(b, 'n')
1440+
}
1441+
return b
14331442
}
14341443
var n int64
14351444
for _, c := range b[2:] {

0 commit comments

Comments
 (0)