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}