summaryrefslogtreecommitdiff
path: root/crates/parser
diff options
context:
space:
mode:
Diffstat (limited to 'crates/parser')
-rw-r--r--crates/parser/src/conversion.rs394
-rw-r--r--crates/parser/src/error.rs8
-rw-r--r--crates/parser/src/lib.rs16
-rw-r--r--crates/parser/src/module.rs22
4 files changed, 207 insertions, 233 deletions
diff --git a/crates/parser/src/conversion.rs b/crates/parser/src/conversion.rs
index 7121922..d08df9b 100644
--- a/crates/parser/src/conversion.rs
+++ b/crates/parser/src/conversion.rs
@@ -67,7 +67,7 @@ pub(crate) fn convert_module_type(ty: wasmparser::Type) -> Result<FuncType> {
Ok(FuncType { params, results })
}
-pub(crate) fn convert_blocktype(blocktype: &wasmparser::BlockType) -> BlockArgs {
+pub(crate) fn convert_blocktype(blocktype: wasmparser::BlockType) -> BlockArgs {
use wasmparser::BlockType::*;
match blocktype {
Empty => BlockArgs::Empty,
@@ -76,7 +76,7 @@ pub(crate) fn convert_blocktype(blocktype: &wasmparser::BlockType) -> BlockArgs
// TODO: maybe solve this differently so we can support 128-bit values
// without having to increase the size of the WasmValue enum
- Type(ty) => BlockArgs::Type(convert_valtype(ty)),
+ Type(ty) => BlockArgs::Type(convert_valtype(&ty)),
// Wasm 2.0
FuncType(_ty) => unimplemented!(),
@@ -108,208 +108,200 @@ pub fn process_operators<'a>(
ops: impl Iterator<Item = Result<wasmparser::Operator<'a>, wasmparser::BinaryReaderError>>,
) -> Result<Box<[Instruction]>> {
let mut instructions = Vec::new();
+
for op in ops {
- match op? {
- wasmparser::Operator::BrTable { targets } => {
- instructions.push(Instruction::BrTable(targets.default()));
- instructions.extend(
- targets
- .targets()
- .collect::<Result<Vec<u32>, wasmparser::BinaryReaderError>>()?
- .into_iter()
- .map(Instruction::BrLabel),
- );
+ use wasmparser::Operator::*;
+ let res = match op? {
+ BrTable { targets } => {
+ let def = targets.default();
+ let targets = targets
+ .targets()
+ .collect::<Result<Vec<u32>, wasmparser::BinaryReaderError>>()?;
+ instructions.push(Instruction::BrTable(def, targets.len() as u32));
+ instructions.extend(targets.into_iter().map(Instruction::BrLabel));
+ continue;
}
- op => instructions.push(process_operator(&op)?),
- }
+ Unreachable => Instruction::Unreachable,
+ Nop => Instruction::Nop,
+ Block { blockty } => Instruction::Block(convert_blocktype(blockty)),
+ Loop { blockty } => Instruction::Loop(convert_blocktype(blockty)),
+ If { blockty } => Instruction::If(convert_blocktype(blockty)),
+ Else => Instruction::Else,
+ End => Instruction::End,
+ Br { relative_depth } => Instruction::Br(relative_depth),
+ BrIf { relative_depth } => Instruction::BrIf(relative_depth),
+ Return => Instruction::Return,
+ Call { function_index } => Instruction::Call(function_index),
+ CallIndirect {
+ type_index,
+ table_index,
+ ..
+ } => Instruction::CallIndirect(type_index, table_index),
+ Drop => Instruction::Drop,
+ Select => Instruction::Select,
+ LocalGet { local_index } => Instruction::LocalGet(local_index),
+ LocalSet { local_index } => Instruction::LocalSet(local_index),
+ LocalTee { local_index } => Instruction::LocalTee(local_index),
+ GlobalGet { global_index } => Instruction::GlobalGet(global_index),
+ GlobalSet { global_index } => Instruction::GlobalSet(global_index),
+ MemorySize { .. } => Instruction::MemorySize,
+ MemoryGrow { .. } => Instruction::MemoryGrow,
+ I32Load { memarg } => Instruction::I32Load(convert_memarg(memarg)),
+ I64Load { memarg } => Instruction::I64Load(convert_memarg(memarg)),
+ F32Load { memarg } => Instruction::F32Load(convert_memarg(memarg)),
+ F64Load { memarg } => Instruction::F64Load(convert_memarg(memarg)),
+ I32Load8S { memarg } => Instruction::I32Load8S(convert_memarg(memarg)),
+ I32Load8U { memarg } => Instruction::I32Load8U(convert_memarg(memarg)),
+ I32Load16S { memarg } => Instruction::I32Load16S(convert_memarg(memarg)),
+ I32Load16U { memarg } => Instruction::I32Load16U(convert_memarg(memarg)),
+ I64Load8S { memarg } => Instruction::I64Load8S(convert_memarg(memarg)),
+ I64Load8U { memarg } => Instruction::I64Load8U(convert_memarg(memarg)),
+ I64Load16S { memarg } => Instruction::I64Load16S(convert_memarg(memarg)),
+ I64Load16U { memarg } => Instruction::I64Load16U(convert_memarg(memarg)),
+ I64Load32S { memarg } => Instruction::I64Load32S(convert_memarg(memarg)),
+ I64Load32U { memarg } => Instruction::I64Load32U(convert_memarg(memarg)),
+ I32Store { memarg } => Instruction::I32Store(convert_memarg(memarg)),
+ I64Store { memarg } => Instruction::I64Store(convert_memarg(memarg)),
+ F32Store { memarg } => Instruction::F32Store(convert_memarg(memarg)),
+ F64Store { memarg } => Instruction::F64Store(convert_memarg(memarg)),
+ I32Store8 { memarg } => Instruction::I32Store8(convert_memarg(memarg)),
+ I32Store16 { memarg } => Instruction::I32Store16(convert_memarg(memarg)),
+ I64Store8 { memarg } => Instruction::I64Store8(convert_memarg(memarg)),
+ I64Store16 { memarg } => Instruction::I64Store16(convert_memarg(memarg)),
+ I64Store32 { memarg } => Instruction::I64Store32(convert_memarg(memarg)),
+ I32Eqz => Instruction::I32Eqz,
+ I32Eq => Instruction::I32Eq,
+ I32Ne => Instruction::I32Ne,
+ I32LtS => Instruction::I32LtS,
+ I32LtU => Instruction::I32LtU,
+ I32GtS => Instruction::I32GtS,
+ I32GtU => Instruction::I32GtU,
+ I32LeS => Instruction::I32LeS,
+ I32LeU => Instruction::I32LeU,
+ I32GeS => Instruction::I32GeS,
+ I32GeU => Instruction::I32GeU,
+ I64Eqz => Instruction::I64Eqz,
+ I64Eq => Instruction::I64Eq,
+ I64Ne => Instruction::I64Ne,
+ I64LtS => Instruction::I64LtS,
+ I64LtU => Instruction::I64LtU,
+ I64GtS => Instruction::I64GtS,
+ I64GtU => Instruction::I64GtU,
+ I64LeS => Instruction::I64LeS,
+ I64LeU => Instruction::I64LeU,
+ I64GeS => Instruction::I64GeS,
+ I64GeU => Instruction::I64GeU,
+ F32Eq => Instruction::F32Eq,
+ F32Ne => Instruction::F32Ne,
+ F32Lt => Instruction::F32Lt,
+ F32Gt => Instruction::F32Gt,
+ F32Le => Instruction::F32Le,
+ F32Ge => Instruction::F32Ge,
+ F64Eq => Instruction::F64Eq,
+ F64Ne => Instruction::F64Ne,
+ F64Lt => Instruction::F64Lt,
+ F64Gt => Instruction::F64Gt,
+ F64Le => Instruction::F64Le,
+ F64Ge => Instruction::F64Ge,
+ I32Clz => Instruction::I32Clz,
+ I32Ctz => Instruction::I32Ctz,
+ I32Popcnt => Instruction::I32Popcnt,
+ I32Add => Instruction::I32Add,
+ I32Sub => Instruction::I32Sub,
+ I32Mul => Instruction::I32Mul,
+ I32DivS => Instruction::I32DivS,
+ I32DivU => Instruction::I32DivU,
+ I32RemS => Instruction::I32RemS,
+ I32RemU => Instruction::I32RemU,
+ I32And => Instruction::I32And,
+ I32Or => Instruction::I32Or,
+ I32Xor => Instruction::I32Xor,
+ I32Shl => Instruction::I32Shl,
+ I32ShrS => Instruction::I32ShrS,
+ I32ShrU => Instruction::I32ShrU,
+ I32Rotl => Instruction::I32Rotl,
+ I32Rotr => Instruction::I32Rotr,
+ I64Clz => Instruction::I64Clz,
+ I64Ctz => Instruction::I64Ctz,
+ I64Popcnt => Instruction::I64Popcnt,
+ I64Add => Instruction::I64Add,
+ I64Sub => Instruction::I64Sub,
+ I64Mul => Instruction::I64Mul,
+ I64DivS => Instruction::I64DivS,
+ I64DivU => Instruction::I64DivU,
+ I64RemS => Instruction::I64RemS,
+ I64RemU => Instruction::I64RemU,
+ I64And => Instruction::I64And,
+ I64Or => Instruction::I64Or,
+ I64Xor => Instruction::I64Xor,
+ I64Shl => Instruction::I64Shl,
+ I64ShrS => Instruction::I64ShrS,
+ I64ShrU => Instruction::I64ShrU,
+ I64Rotl => Instruction::I64Rotl,
+ I64Rotr => Instruction::I64Rotr,
+ F32Abs => Instruction::F32Abs,
+ F32Neg => Instruction::F32Neg,
+ F32Ceil => Instruction::F32Ceil,
+ F32Floor => Instruction::F32Floor,
+ F32Trunc => Instruction::F32Trunc,
+ F32Nearest => Instruction::F32Nearest,
+ F32Sqrt => Instruction::F32Sqrt,
+ F32Add => Instruction::F32Add,
+ F32Sub => Instruction::F32Sub,
+ F32Mul => Instruction::F32Mul,
+ F32Div => Instruction::F32Div,
+ F32Min => Instruction::F32Min,
+ F32Max => Instruction::F32Max,
+ F32Copysign => Instruction::F32Copysign,
+ F64Abs => Instruction::F64Abs,
+ F64Neg => Instruction::F64Neg,
+ F64Ceil => Instruction::F64Ceil,
+ F64Floor => Instruction::F64Floor,
+ F64Trunc => Instruction::F64Trunc,
+ F64Nearest => Instruction::F64Nearest,
+ F64Sqrt => Instruction::F64Sqrt,
+ F64Add => Instruction::F64Add,
+ F64Sub => Instruction::F64Sub,
+ F64Mul => Instruction::F64Mul,
+ F64Div => Instruction::F64Div,
+ F64Min => Instruction::F64Min,
+ F64Max => Instruction::F64Max,
+ F64Copysign => Instruction::F64Copysign,
+ I32WrapI64 => Instruction::I32WrapI64,
+ I32TruncF32S => Instruction::I32TruncF32S,
+ I32TruncF32U => Instruction::I32TruncF32U,
+ I32TruncF64S => Instruction::I32TruncF64S,
+ I32TruncF64U => Instruction::I32TruncF64U,
+ I64ExtendI32S => Instruction::I64ExtendI32S,
+ I64ExtendI32U => Instruction::I64ExtendI32U,
+ I64TruncF32S => Instruction::I64TruncF32S,
+ I64TruncF32U => Instruction::I64TruncF32U,
+ I64TruncF64S => Instruction::I64TruncF64S,
+ I64TruncF64U => Instruction::I64TruncF64U,
+ F32ConvertI32S => Instruction::F32ConvertI32S,
+ F32ConvertI32U => Instruction::F32ConvertI32U,
+ F32ConvertI64S => Instruction::F32ConvertI64S,
+ F32ConvertI64U => Instruction::F32ConvertI64U,
+ F32DemoteF64 => Instruction::F32DemoteF64,
+ F64ConvertI32S => Instruction::F64ConvertI32S,
+ F64ConvertI32U => Instruction::F64ConvertI32U,
+ F64ConvertI64S => Instruction::F64ConvertI64S,
+ F64ConvertI64U => Instruction::F64ConvertI64U,
+ F64PromoteF32 => Instruction::F64PromoteF32,
+ I32ReinterpretF32 => Instruction::I32ReinterpretF32,
+ I64ReinterpretF64 => Instruction::I64ReinterpretF64,
+ F32ReinterpretI32 => Instruction::F32ReinterpretI32,
+ F64ReinterpretI64 => Instruction::F64ReinterpretI64,
+ op => {
+ return Err(crate::ParseError::UnsupportedOperator(format!(
+ "Unsupported instruction: {:?}",
+ op
+ )))
+ }
+ };
+
+ instructions.push(res);
}
Ok(instructions.into_boxed_slice())
}
-
-#[inline]
-pub(crate) fn process_operator(op: &wasmparser::Operator) -> Result<Instruction> {
- use wasmparser::Operator::*;
- let v = match op {
- Unreachable => Instruction::Unreachable,
- Nop => Instruction::Nop,
- Block { blockty } => Instruction::Block(convert_blocktype(blockty)),
- Loop { blockty } => Instruction::Loop(convert_blocktype(blockty)),
- If { blockty } => Instruction::If(convert_blocktype(blockty)),
- Else => Instruction::Else,
- End => Instruction::End,
- Br { relative_depth } => Instruction::Br(*relative_depth),
- BrIf { relative_depth } => Instruction::BrIf(*relative_depth),
- BrTable { targets } => Instruction::BrTable(targets.default()),
- Return => Instruction::Return,
- Call { function_index } => Instruction::Call(*function_index),
- CallIndirect {
- type_index,
- table_index,
- ..
- } => Instruction::CallIndirect(*type_index, *table_index),
- Drop => Instruction::Drop,
- Select => Instruction::Select,
- LocalGet { local_index } => Instruction::LocalGet(*local_index),
- LocalSet { local_index } => Instruction::LocalSet(*local_index),
- LocalTee { local_index } => Instruction::LocalTee(*local_index),
- GlobalGet { global_index } => Instruction::GlobalGet(*global_index),
- GlobalSet { global_index } => Instruction::GlobalSet(*global_index),
- MemorySize { .. } => Instruction::MemorySize,
- MemoryGrow { .. } => Instruction::MemoryGrow,
- I32Load { memarg } => Instruction::I32Load(convert_memarg(*memarg)),
- I64Load { memarg } => Instruction::I64Load(convert_memarg(*memarg)),
- F32Load { memarg } => Instruction::F32Load(convert_memarg(*memarg)),
- F64Load { memarg } => Instruction::F64Load(convert_memarg(*memarg)),
- I32Load8S { memarg } => Instruction::I32Load8S(convert_memarg(*memarg)),
- I32Load8U { memarg } => Instruction::I32Load8U(convert_memarg(*memarg)),
- I32Load16S { memarg } => Instruction::I32Load16S(convert_memarg(*memarg)),
- I32Load16U { memarg } => Instruction::I32Load16U(convert_memarg(*memarg)),
- I64Load8S { memarg } => Instruction::I64Load8S(convert_memarg(*memarg)),
- I64Load8U { memarg } => Instruction::I64Load8U(convert_memarg(*memarg)),
- I64Load16S { memarg } => Instruction::I64Load16S(convert_memarg(*memarg)),
- I64Load16U { memarg } => Instruction::I64Load16U(convert_memarg(*memarg)),
- I64Load32S { memarg } => Instruction::I64Load32S(convert_memarg(*memarg)),
- I64Load32U { memarg } => Instruction::I64Load32U(convert_memarg(*memarg)),
- I32Store { memarg } => Instruction::I32Store(convert_memarg(*memarg)),
- I64Store { memarg } => Instruction::I64Store(convert_memarg(*memarg)),
- F32Store { memarg } => Instruction::F32Store(convert_memarg(*memarg)),
- F64Store { memarg } => Instruction::F64Store(convert_memarg(*memarg)),
- I32Store8 { memarg } => Instruction::I32Store8(convert_memarg(*memarg)),
- I32Store16 { memarg } => Instruction::I32Store16(convert_memarg(*memarg)),
- I64Store8 { memarg } => Instruction::I64Store8(convert_memarg(*memarg)),
- I64Store16 { memarg } => Instruction::I64Store16(convert_memarg(*memarg)),
- I64Store32 { memarg } => Instruction::I64Store32(convert_memarg(*memarg)),
- I32Eqz => Instruction::I32Eqz,
- I32Eq => Instruction::I32Eq,
- I32Ne => Instruction::I32Ne,
- I32LtS => Instruction::I32LtS,
- I32LtU => Instruction::I32LtU,
- I32GtS => Instruction::I32GtS,
- I32GtU => Instruction::I32GtU,
- I32LeS => Instruction::I32LeS,
- I32LeU => Instruction::I32LeU,
- I32GeS => Instruction::I32GeS,
- I32GeU => Instruction::I32GeU,
- I64Eqz => Instruction::I64Eqz,
- I64Eq => Instruction::I64Eq,
- I64Ne => Instruction::I64Ne,
- I64LtS => Instruction::I64LtS,
- I64LtU => Instruction::I64LtU,
- I64GtS => Instruction::I64GtS,
- I64GtU => Instruction::I64GtU,
- I64LeS => Instruction::I64LeS,
- I64LeU => Instruction::I64LeU,
- I64GeS => Instruction::I64GeS,
- I64GeU => Instruction::I64GeU,
- F32Eq => Instruction::F32Eq,
- F32Ne => Instruction::F32Ne,
- F32Lt => Instruction::F32Lt,
- F32Gt => Instruction::F32Gt,
- F32Le => Instruction::F32Le,
- F32Ge => Instruction::F32Ge,
- F64Eq => Instruction::F64Eq,
- F64Ne => Instruction::F64Ne,
- F64Lt => Instruction::F64Lt,
- F64Gt => Instruction::F64Gt,
- F64Le => Instruction::F64Le,
- F64Ge => Instruction::F64Ge,
- I32Clz => Instruction::I32Clz,
- I32Ctz => Instruction::I32Ctz,
- I32Popcnt => Instruction::I32Popcnt,
- I32Add => Instruction::I32Add,
- I32Sub => Instruction::I32Sub,
- I32Mul => Instruction::I32Mul,
- I32DivS => Instruction::I32DivS,
- I32DivU => Instruction::I32DivU,
- I32RemS => Instruction::I32RemS,
- I32RemU => Instruction::I32RemU,
- I32And => Instruction::I32And,
- I32Or => Instruction::I32Or,
- I32Xor => Instruction::I32Xor,
- I32Shl => Instruction::I32Shl,
- I32ShrS => Instruction::I32ShrS,
- I32ShrU => Instruction::I32ShrU,
- I32Rotl => Instruction::I32Rotl,
- I32Rotr => Instruction::I32Rotr,
- I64Clz => Instruction::I64Clz,
- I64Ctz => Instruction::I64Ctz,
- I64Popcnt => Instruction::I64Popcnt,
- I64Add => Instruction::I64Add,
- I64Sub => Instruction::I64Sub,
- I64Mul => Instruction::I64Mul,
- I64DivS => Instruction::I64DivS,
- I64DivU => Instruction::I64DivU,
- I64RemS => Instruction::I64RemS,
- I64RemU => Instruction::I64RemU,
- I64And => Instruction::I64And,
- I64Or => Instruction::I64Or,
- I64Xor => Instruction::I64Xor,
- I64Shl => Instruction::I64Shl,
- I64ShrS => Instruction::I64ShrS,
- I64ShrU => Instruction::I64ShrU,
- I64Rotl => Instruction::I64Rotl,
- I64Rotr => Instruction::I64Rotr,
- F32Abs => Instruction::F32Abs,
- F32Neg => Instruction::F32Neg,
- F32Ceil => Instruction::F32Ceil,
- F32Floor => Instruction::F32Floor,
- F32Trunc => Instruction::F32Trunc,
- F32Nearest => Instruction::F32Nearest,
- F32Sqrt => Instruction::F32Sqrt,
- F32Add => Instruction::F32Add,
- F32Sub => Instruction::F32Sub,
- F32Mul => Instruction::F32Mul,
- F32Div => Instruction::F32Div,
- F32Min => Instruction::F32Min,
- F32Max => Instruction::F32Max,
- F32Copysign => Instruction::F32Copysign,
- F64Abs => Instruction::F64Abs,
- F64Neg => Instruction::F64Neg,
- F64Ceil => Instruction::F64Ceil,
- F64Floor => Instruction::F64Floor,
- F64Trunc => Instruction::F64Trunc,
- F64Nearest => Instruction::F64Nearest,
- F64Sqrt => Instruction::F64Sqrt,
- F64Add => Instruction::F64Add,
- F64Sub => Instruction::F64Sub,
- F64Mul => Instruction::F64Mul,
- F64Div => Instruction::F64Div,
- F64Min => Instruction::F64Min,
- F64Max => Instruction::F64Max,
- F64Copysign => Instruction::F64Copysign,
- I32WrapI64 => Instruction::I32WrapI64,
- I32TruncF32S => Instruction::I32TruncF32S,
- I32TruncF32U => Instruction::I32TruncF32U,
- I32TruncF64S => Instruction::I32TruncF64S,
- I32TruncF64U => Instruction::I32TruncF64U,
- I64ExtendI32S => Instruction::I64ExtendI32S,
- I64ExtendI32U => Instruction::I64ExtendI32U,
- I64TruncF32S => Instruction::I64TruncF32S,
- I64TruncF32U => Instruction::I64TruncF32U,
- I64TruncF64S => Instruction::I64TruncF64S,
- I64TruncF64U => Instruction::I64TruncF64U,
- F32ConvertI32S => Instruction::F32ConvertI32S,
- F32ConvertI32U => Instruction::F32ConvertI32U,
- F32ConvertI64S => Instruction::F32ConvertI64S,
- F32ConvertI64U => Instruction::F32ConvertI64U,
- F32DemoteF64 => Instruction::F32DemoteF64,
- F64ConvertI32S => Instruction::F64ConvertI32S,
- F64ConvertI32U => Instruction::F64ConvertI32U,
- F64ConvertI64S => Instruction::F64ConvertI64S,
- F64ConvertI64U => Instruction::F64ConvertI64U,
- F64PromoteF32 => Instruction::F64PromoteF32,
- I32ReinterpretF32 => Instruction::I32ReinterpretF32,
- I64ReinterpretF64 => Instruction::I64ReinterpretF64,
- F32ReinterpretI32 => Instruction::F32ReinterpretI32,
- F64ReinterpretI64 => Instruction::F64ReinterpretI64,
- _ => {
- return Err(crate::ParseError::UnsupportedOperator(format!(
- "Unsupported instruction: {:?}",
- op
- )))
- }
- };
-
- Ok(v)
-}
diff --git a/crates/parser/src/error.rs b/crates/parser/src/error.rs
index 6fa9e25..a5c807a 100644
--- a/crates/parser/src/error.rs
+++ b/crates/parser/src/error.rs
@@ -28,11 +28,9 @@ impl Debug for ParseError {
write!(f, "error parsing module: {} at offset {}", message, offset)
}
Self::InvalidEncoding(encoding) => write!(f, "invalid encoding: {:?}", encoding),
- Self::InvalidLocalCount { expected, actual } => write!(
- f,
- "invalid local count: expected {}, actual {}",
- expected, actual
- ),
+ Self::InvalidLocalCount { expected, actual } => {
+ write!(f, "invalid local count: expected {}, actual {}", expected, actual)
+ }
Self::EndNotReached => write!(f, "end of module not reached"),
Self::Other(message) => write!(f, "unknown error: {}", message),
}
diff --git a/crates/parser/src/lib.rs b/crates/parser/src/lib.rs
index fdfea49..31e8cc8 100644
--- a/crates/parser/src/lib.rs
+++ b/crates/parser/src/lib.rs
@@ -38,14 +38,10 @@ impl Parser {
}
#[cfg(feature = "std")]
- pub fn parse_module_file(
- &self,
- path: impl AsRef<crate::std::path::Path> + Clone,
- ) -> Result<TinyWasmModule> {
+ pub fn parse_module_file(&self, path: impl AsRef<crate::std::path::Path> + Clone) -> Result<TinyWasmModule> {
use alloc::format;
- let f = crate::std::fs::File::open(path.clone()).map_err(|e| {
- ParseError::Other(format!("Error opening file {:?}: {}", path.as_ref(), e))
- })?;
+ let f = crate::std::fs::File::open(path.clone())
+ .map_err(|e| ParseError::Other(format!("Error opening file {:?}: {}", path.as_ref(), e)))?;
let mut reader = crate::std::io::BufReader::new(f);
self.parse_module_stream(&mut reader)
@@ -66,9 +62,9 @@ impl Parser {
wasmparser::Chunk::NeedMoreData(hint) => {
let len = buffer.len();
buffer.extend((0..hint).map(|_| 0u8));
- let read_bytes = stream.read(&mut buffer[len..]).map_err(|e| {
- ParseError::Other(format!("Error reading from stream: {}", e))
- })?;
+ let read_bytes = stream
+ .read(&mut buffer[len..])
+ .map_err(|e| ParseError::Other(format!("Error reading from stream: {}", e)))?;
buffer.truncate(len + read_bytes);
eof = read_bytes == 0;
}
diff --git a/crates/parser/src/module.rs b/crates/parser/src/module.rs
index 2beba9e..5bdbcd8 100644
--- a/crates/parser/src/module.rs
+++ b/crates/parser/src/module.rs
@@ -58,18 +58,12 @@ impl ModuleReader {
use wasmparser::Payload::*;
match payload {
- Version {
- num,
- encoding,
- range,
- } => {
+ Version { num, encoding, range } => {
validator.version(num, encoding, &range)?;
self.version = Some(num);
match encoding {
wasmparser::Encoding::Module => {}
- wasmparser::Encoding::Component => {
- return Err(ParseError::InvalidEncoding(encoding))
- }
+ wasmparser::Encoding::Component => return Err(ParseError::InvalidEncoding(encoding)),
}
}
StartSection { func, range } => {
@@ -88,10 +82,7 @@ impl ModuleReader {
FunctionSection(reader) => {
debug!("Found function section");
validator.function_section(&reader)?;
- self.function_section = reader
- .into_iter()
- .map(|f| Ok(f?))
- .collect::<Result<Vec<_>>>()?;
+ self.function_section = reader.into_iter().map(|f| Ok(f?)).collect::<Result<Vec<_>>>()?;
}
TableSection(_reader) => {
return Err(ParseError::UnsupportedSection("Table section".into()));
@@ -135,8 +126,7 @@ impl ModuleReader {
debug!("Found code section entry");
validator.code_section_entry(&function)?;
- self.code_section
- .push(conversion::convert_module_code(function)?);
+ self.code_section.push(conversion::convert_module_code(function)?);
}
ImportSection(_reader) => {
return Err(ParseError::UnsupportedSection("Import section".into()));
@@ -166,9 +156,7 @@ impl ModuleReader {
debug!("Found custom section");
debug!("Skipping custom section: {:?}", reader.name());
}
- UnknownSection { .. } => {
- return Err(ParseError::UnsupportedSection("Unknown section".into()))
- }
+ UnknownSection { .. } => return Err(ParseError::UnsupportedSection("Unknown section".into())),
section => {
return Err(ParseError::UnsupportedSection(format!(
"Unsupported section: {:?}",