1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
use crate::HostImportError;
use crate::misc::PrepareError;
use marine_it_interfaces::MITInterfacesError;
use marine_it_parser::ITParserError;
use marine_module_interface::it_interface::ITInterfaceError;
use marine_wasm_backend_traits::errors::*;
use thiserror::Error as ThisError;
#[derive(Debug, ThisError)]
pub enum MError {
#[error("{0}")]
RecordResolveError(String), #[error(transparent)]
WASIPrepareError(#[from] WasiError),
#[error(transparent)]
ModuleInterfaceError(#[from] ITInterfaceError),
#[error("Execution error: {0}")]
ITInstructionError(#[from] wasmer_it::errors::InstructionError),
#[error(transparent)]
PrepareError(#[from] PrepareError),
#[error("module with name '{0}' already loaded into Marine, please specify another name")]
NonUniqueModuleName(String),
#[error("module with name '{0}' doesn't have function with name {1}")]
NoSuchFunction(String, String),
#[error("module with name '{0}' isn't loaded into Marine")]
NoSuchModule(String),
#[error(transparent)]
HostImportError(#[from] HostImportError),
#[error(transparent)]
WITParseError(#[from] ITParserError),
#[error("{0}")]
IncorrectWIT(String), #[error("Wasm backend error: {0}")]
WasmBackendError(#[from] WasmBackendError),
}
impl From<MITInterfacesError> for MError {
fn from(err: MITInterfacesError) -> Self {
MError::IncorrectWIT(format!("{}", err))
}
}
impl From<ModuleCreationError> for MError {
fn from(value: ModuleCreationError) -> Self {
Into::<WasmBackendError>::into(value).into()
}
}
impl From<ResolveError> for MError {
fn from(value: ResolveError) -> Self {
Into::<WasmBackendError>::into(value).into()
}
}
impl From<ImportError> for MError {
fn from(value: ImportError) -> Self {
Into::<WasmBackendError>::into(value).into()
}
}
impl From<InstantiationError> for MError {
fn from(value: InstantiationError) -> Self {
Into::<WasmBackendError>::into(value).into()
}
}
impl From<RuntimeError> for MError {
fn from(value: RuntimeError) -> Self {
Into::<WasmBackendError>::into(value).into()
}
}