linera_wasmer_compiler/translator/
error.rs1use wasmer_types::{CompileError, WasmError};
2use wasmparser::BinaryReaderError;
3
4#[macro_export]
7macro_rules! wasm_unsupported {
8 ($($arg:tt)*) => { wasmer_types::WasmError::Unsupported(format!($($arg)*)) }
9}
10
11pub fn from_binaryreadererror_wasmerror(original: BinaryReaderError) -> WasmError {
13 WasmError::InvalidWebAssembly {
14 message: original.message().into(),
15 offset: original.offset(),
16 }
17}
18
19#[allow(dead_code)]
21pub fn from_binaryreadererror_compileerror(original: BinaryReaderError) -> CompileError {
22 CompileError::Wasm(from_binaryreadererror_wasmerror(original))
24}
25
26#[cfg(test)]
27mod tests {
28 use super::*;
29 use wasmparser::BinaryReader;
30
31 #[test]
32 fn can_convert_binary_reader_error_to_wasm_error() {
33 let mut reader = BinaryReader::new(b"\0\0\0\0");
34 let binary_reader_error = reader.read_bytes(10).unwrap_err();
35 match from_binaryreadererror_wasmerror(binary_reader_error) {
36 WasmError::InvalidWebAssembly { message, offset } => {
37 assert_eq!(message, "unexpected end-of-file");
38 assert_eq!(offset, 0);
39 }
40 err => panic!("Unexpected error: {:?}", err),
41 }
42 }
43
44 #[test]
45 fn can_convert_binary_reader_error_to_compile_error() {
46 let mut reader = BinaryReader::new(b"\0\0\0\0");
47 let binary_reader_error = reader.read_bytes(10).unwrap_err();
48 match from_binaryreadererror_compileerror(binary_reader_error) {
49 CompileError::Wasm(WasmError::InvalidWebAssembly { message, offset }) => {
50 assert_eq!(message, "unexpected end-of-file");
51 assert_eq!(offset, 0);
52 }
53 err => panic!("Unexpected error: {:?}", err),
54 }
55 }
56}