Commit 506a0ea
authored
fix(es/minifier): avoid inexact number radix folding (#12057)
**Description:**
`Number#toString(radix)` folding currently converts integer values
through `u128`. Unsafe integers can already have rounded
representations, so this conversion can produce digits that do not match
JavaScript for non-power-of-two radices.
This PR restricts radix folding to safe integers, with a separate exact
path for supported power-of-two radices below the `u128` bound. Values
outside those limits remain for runtime evaluation.
**Related issue (if exists):**
- #12043
- #12047
- #12050
- #12048
- #12051
- #12052
- #12053
- #12054
- #12055
- #12056
- **#12057** (current)
- #12058
- #12049
- #12059
- #120601 parent aa49e36 commit 506a0ea
6 files changed
Lines changed: 63 additions & 15 deletions
File tree
- .changeset
- crates/swc_ecma_minifier
- src/compress/pure
- tests/fixture/issues/number-radix-conversion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
19 | 19 | | |
20 | 20 | | |
21 | 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 | + | |
22 | 46 | | |
23 | 47 | | |
24 | 48 | | |
| |||
668 | 692 | | |
669 | 693 | | |
670 | 694 | | |
671 | | - | |
672 | | - | |
673 | | - | |
674 | | - | |
675 | | - | |
676 | | - | |
677 | | - | |
678 | | - | |
679 | | - | |
680 | | - | |
681 | | - | |
682 | | - | |
683 | | - | |
| 695 | + | |
| 696 | + | |
| 697 | + | |
684 | 698 | | |
685 | 699 | | |
686 | 700 | | |
687 | 701 | | |
688 | | - | |
| 702 | + | |
689 | 703 | | |
690 | | - | |
| 704 | + | |
| 705 | + | |
691 | 706 | | |
692 | 707 | | |
693 | 708 | | |
| |||
Lines changed: 4 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
Lines changed: 1 addition & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
Lines changed: 11 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
Lines changed: 11 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
0 commit comments