Skip to content

Commit

Permalink
Fix BigInt formatting negative check (#4088)
Browse files Browse the repository at this point in the history
  • Loading branch information
ryangoree committed Aug 27, 2024
1 parent 0cbca31 commit 9d6693a
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 8 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

* Fixed negative `BigInt` values being incorrectly formatted with two minus signs.
[#4082](https://github.com/rustwasm/wasm-bindgen/pull/4082)
[#4088](https://github.com/rustwasm/wasm-bindgen/pull/4088)

--------------------------------------------------------------------------------

Expand Down
16 changes: 8 additions & 8 deletions crates/js-sys/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1391,10 +1391,10 @@ impl BigInt {
/// Returns a tuple of this [`BigInt`]'s absolute value along with a
/// [`bool`] indicating whether the [`BigInt`] was negative.
fn abs(&self) -> (Self, bool) {
if self >= &BigInt::from(0) {
(self.clone(), false)
} else {
if self < &BigInt::from(0) {
(-self, true)
} else {
(self.clone(), false)
}
}
}
Expand Down Expand Up @@ -1504,31 +1504,31 @@ impl fmt::Display for BigInt {
#[inline]
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let (abs, is_neg) = self.abs();
f.pad_integral(is_neg, "", &abs.to_string_unchecked(10))
f.pad_integral(!is_neg, "", &abs.to_string_unchecked(10))
}
}

impl fmt::Binary for BigInt {
#[inline]
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let (abs, is_neg) = self.abs();
f.pad_integral(is_neg, "0b", &abs.to_string_unchecked(2))
f.pad_integral(!is_neg, "0b", &abs.to_string_unchecked(2))
}
}

impl fmt::Octal for BigInt {
#[inline]
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let (abs, is_neg) = self.abs();
f.pad_integral(is_neg, "0o", &abs.to_string_unchecked(8))
f.pad_integral(!is_neg, "0o", &abs.to_string_unchecked(8))
}
}

impl fmt::LowerHex for BigInt {
#[inline]
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let (abs, is_neg) = self.abs();
f.pad_integral(is_neg, "0x", &abs.to_string_unchecked(16))
f.pad_integral(!is_neg, "0x", &abs.to_string_unchecked(16))
}
}

Expand All @@ -1538,7 +1538,7 @@ impl fmt::UpperHex for BigInt {
let (abs, is_neg) = self.abs();
let mut s: String = abs.to_string_unchecked(16);
s.make_ascii_uppercase();
f.pad_integral(is_neg, "0x", &s)
f.pad_integral(!is_neg, "0x", &s)
}
}

Expand Down

0 comments on commit 9d6693a

Please sign in to comment.