radix_wasm_instrument/utils/
errors.rs1use alloc::string::String;
2use anyhow::{anyhow, Error};
3use core::ops::Range;
4use wasmparser::BinaryReaderError;
5
6#[derive(Clone, Debug)]
8pub enum ModuleInfoError {
9 WasmParserError(BinaryReaderError),
10 SectionAlreadyExists(u8),
11 SectionNotSupported(String),
12 TranslatorError(TranslatorError),
13 SectionRangeExceedsWasmLength { range: Range<usize>, wasm_len: usize },
14 TypeDoesNotExist(u32),
15 FunctionDoesNotExist(u32),
16 NoMemorySection,
17 ExportAlreadyExists(String),
18 CodeAndFuncSectionCntMismatch(u32, u32),
19}
20
21impl core::fmt::Display for ModuleInfoError {
22 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
23 match self {
24 ModuleInfoError::WasmParserError(err) => {
25 write!(f, "WasmParserError(BinaryReaderError {{ {} }})", err)
26 },
27 _ => write!(f, "{:?}", self),
28 }
29 }
30}
31
32impl From<BinaryReaderError> for ModuleInfoError {
33 fn from(err: BinaryReaderError) -> ModuleInfoError {
34 ModuleInfoError::WasmParserError(err)
35 }
36}
37
38impl From<TranslatorError> for ModuleInfoError {
39 fn from(err: TranslatorError) -> ModuleInfoError {
40 ModuleInfoError::TranslatorError(err)
41 }
42}
43
44#[derive(Clone, Debug)]
46pub enum TranslatorError {
47 WasmParserError(BinaryReaderError),
48 NoMutationsApplicable,
49 Error(String),
50}
51
52impl From<BinaryReaderError> for TranslatorError {
53 fn from(err: BinaryReaderError) -> TranslatorError {
54 TranslatorError::WasmParserError(err)
55 }
56}
57
58impl From<ModuleInfoError> for Error {
60 fn from(err: ModuleInfoError) -> Error {
61 anyhow!("{:?}", err)
62 }
63}
64
65impl From<TranslatorError> for Error {
67 fn from(err: TranslatorError) -> Error {
68 anyhow!("{:?}", err)
69 }
70}