Skip to main content

ferro_babe/
error.rs

1use rust_asm::error::ClassReadError;
2use thiserror::Error;
3
4#[derive(Debug, Error)]
5pub enum FerroBabeError {
6    #[error("class input is too short: expected at least {required} bytes, found {actual}")]
7    InputTooShort { required: usize, actual: usize },
8
9    #[error("input is not a Java class file: found magic 0x{found:08x}")]
10    InvalidMagic { found: u32 },
11
12    #[error(
13        "unsupported Java class-file version {major}.{minor}; FerroBabe supports 45.0 through 70.65535"
14    )]
15    UnsupportedVersion { major: u16, minor: u16 },
16
17    #[error("class input could not be read: {source}")]
18    InputRead {
19        #[source]
20        source: std::io::Error,
21    },
22
23    #[error("class-file decoding failed: {source}")]
24    Decode {
25        #[source]
26        source: ClassReadError,
27    },
28
29    #[error("formatted output could not be written")]
30    Format {
31        #[source]
32        source: std::fmt::Error,
33    },
34
35    #[error("a partial class-file result cannot be formatted")]
36    IncompleteDisassembly,
37}