Skip to content

Commit

Permalink
Merge #2530: Improve leaf errors
Browse files Browse the repository at this point in the history
f8de795 Remove unused pow::TryFromError type (Tobin C. Harding)
43c5eb7 Fix witness_version leaf error type (Tobin C. Harding)
2af764e hashes: Fix leaf error type (Tobin C. Harding)

Pull request description:

  In light of recent discussion go over the codebase and look for some places that the leaf errors are wrong. Does not do the whole code base, excludes `p2p` and a couple of other places.

ACKs for top commit:
  apoelstra:
    ACK f8de795
  Kixunil:
    ACK f8de795

Tree-SHA512: 2905878363869ee205cce49c58c060c712c9b7b55965ee60bb856128842968a4be86c93a194ffffdb35e215b2bea8ad33b04ee47e8e17cc784b0641ea48518e5
  • Loading branch information
apoelstra committed Mar 13, 2024
2 parents 6f6cc00 + f8de795 commit d2617f9
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 25 deletions.
12 changes: 7 additions & 5 deletions bitcoin/src/blockdata/script/witness_version.rs
Original file line number Diff line number Diff line change
Expand Up @@ -249,10 +249,14 @@ impl From<TryFromError> for TryFromInstructionError {

/// Error attempting to create a [`WitnessVersion`] from an integer.
#[derive(Clone, Debug, PartialEq, Eq)]
#[non_exhaustive]
pub struct TryFromError {
/// The invalid non-witness version integer.
pub invalid: u8,
invalid: u8,
}

impl TryFromError {
/// Returns the invalid non-witness version integer.
pub fn invalid_version(&self) -> u8 { self.invalid }
}

impl fmt::Display for TryFromError {
Expand All @@ -262,6 +266,4 @@ impl fmt::Display for TryFromError {
}

#[cfg(feature = "std")]
impl std::error::Error for TryFromError {
fn source(&self) -> Option<&(dyn std::error::Error + 'static)> { None }
}
impl std::error::Error for TryFromError {}
16 changes: 0 additions & 16 deletions bitcoin/src/pow.rs
Original file line number Diff line number Diff line change
Expand Up @@ -736,22 +736,6 @@ impl<T: Into<u128>> From<T> for U256 {
fn from(x: T) -> Self { U256(0, x.into()) }
}

/// Error from `TryFrom<signed type>` implementations, occurs when input is negative.
#[derive(Debug, Clone, PartialEq, Eq)]
#[non_exhaustive]
pub struct TryFromError(i128);

impl fmt::Display for TryFromError {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "attempt to create unsigned integer type from negative number: {}", self.0)
}
}

#[cfg(feature = "std")]
impl std::error::Error for TryFromError {
fn source(&self) -> Option<&(dyn std::error::Error + 'static)> { None }
}

impl Add for U256 {
type Output = Self;
fn add(self, rhs: Self) -> Self {
Expand Down
13 changes: 9 additions & 4 deletions hashes/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -234,22 +234,27 @@ pub trait Hash:

/// Attempted to create a hash from an invalid length slice.
#[derive(Debug, Clone, PartialEq, Eq)]
#[non_exhaustive]
pub struct FromSliceError {
expected: usize,
got: usize,
}

impl FromSliceError {
/// Returns the expected slice length.
pub fn expected_length(&self) -> usize { self.expected }

/// Returns the invalid slice length.
pub fn invalid_length(&self) -> usize { self.got }
}

impl fmt::Display for FromSliceError {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "invalid slice length {} (expected {})", self.got, self.expected)
}
}

#[cfg(feature = "std")]
impl std::error::Error for FromSliceError {
fn source(&self) -> Option<&(dyn std::error::Error + 'static)> { None }
}
impl std::error::Error for FromSliceError {}

#[cfg(test)]
mod tests {
Expand Down

0 comments on commit d2617f9

Please sign in to comment.