Skip to content

Commit de3532c

Browse files
committed
JS: fix bug where BigInts are trimmed of the suffix 'n', fixes #854
1 parent 479f3dc commit de3532c

File tree

2 files changed

+12
-15
lines changed

2 files changed

+12
-15
lines changed

js/js_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ func TestJS(t *testing.T) {
3939
{`0x0D`, `13`},
4040
{`0x0d`, `13`},
4141
{`0x0dn`, `13n`},
42+
{`0x53DCAA254718n`, `0x53DCAA254718n`},
4243
//{`123456787654321`, `0x704885f926b1`},
4344
//{`4294967295`, `0xFFFFFFFF`}, // better GZIP
4445
{`+ +x`, `+ +x`},

js/util.go

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1372,20 +1372,18 @@ func removeUnderscoresAndSuffix(b []byte) ([]byte, bool) {
13721372
return b, false
13731373
}
13741374

1375-
func decimalNumber(b []byte, prec int) []byte {
1376-
var suffix bool
1377-
b, suffix = removeUnderscoresAndSuffix(b)
1375+
func decimalNumber(num []byte, prec int) []byte {
1376+
b, suffix := removeUnderscoresAndSuffix(num)
13781377
if suffix {
13791378
return append(b, 'n')
13801379
}
13811380
return minify.Number(b, prec)
13821381
}
13831382

1384-
func binaryNumber(b []byte, prec int) []byte {
1385-
var suffix bool
1386-
b, suffix = removeUnderscoresAndSuffix(b)
1383+
func binaryNumber(num []byte, prec int) []byte {
1384+
b, suffix := removeUnderscoresAndSuffix(num)
13871385
if len(b) <= 2 || 65 < len(b) {
1388-
return b
1386+
return num
13891387
}
13901388
var n int64
13911389
for _, c := range b[2:] {
@@ -1405,11 +1403,10 @@ func binaryNumber(b []byte, prec int) []byte {
14051403
return minify.Number(b, prec)
14061404
}
14071405

1408-
func octalNumber(b []byte, prec int) []byte {
1409-
var suffix bool
1410-
b, suffix = removeUnderscoresAndSuffix(b)
1406+
func octalNumber(num []byte, prec int) []byte {
1407+
b, suffix := removeUnderscoresAndSuffix(num)
14111408
if len(b) <= 2 || 23 < len(b) {
1412-
return b
1409+
return num
14131410
}
14141411
var n int64
14151412
for _, c := range b[2:] {
@@ -1429,11 +1426,10 @@ func octalNumber(b []byte, prec int) []byte {
14291426
return minify.Number(b, prec)
14301427
}
14311428

1432-
func hexadecimalNumber(b []byte, prec int) []byte {
1433-
var suffix bool
1434-
b, suffix = removeUnderscoresAndSuffix(b)
1429+
func hexadecimalNumber(num []byte, prec int) []byte {
1430+
b, suffix := removeUnderscoresAndSuffix(num)
14351431
if len(b) <= 2 || 12 < len(b) || len(b) == 12 && ('D' < b[2] && b[2] <= 'F' || 'd' < b[2]) {
1436-
return b
1432+
return num
14371433
}
14381434
var n int64
14391435
for _, c := range b[2:] {

0 commit comments

Comments
 (0)