diff options
Diffstat (limited to 'crates/parser/src')
| -rw-r--r-- | crates/parser/src/lib.rs | 2 | ||||
| -rw-r--r-- | crates/parser/src/module.rs | 2 | ||||
| -rw-r--r-- | crates/parser/src/visit.rs | 15 |
3 files changed, 18 insertions, 1 deletions
diff --git a/crates/parser/src/lib.rs b/crates/parser/src/lib.rs index aa33995..f0196b6 100644 --- a/crates/parser/src/lib.rs +++ b/crates/parser/src/lib.rs @@ -83,6 +83,8 @@ impl Parser { cm_nested_names: false, cm_values: false, cm_error_context: false, + cm_fixed_size_list: false, + cm_gc: false, }; Validator::new_with_features(features.into()) } diff --git a/crates/parser/src/module.rs b/crates/parser/src/module.rs index 0e17ad9..3a3becd 100644 --- a/crates/parser/src/module.rs +++ b/crates/parser/src/module.rs @@ -125,7 +125,7 @@ impl ModuleReader { self.code_type_addrs = reader.into_iter().map(|f| Ok(f?)).collect::<Result<Vec<_>>>()?; } CodeSectionStart { count, range, .. } => { - debug!("Found code section ({} functions)", count); + debug!("Found code section ({count} functions)"); if !self.code.is_empty() { return Err(ParseError::DuplicateSection("Code section".into())); } diff --git a/crates/parser/src/visit.rs b/crates/parser/src/visit.rs index 10005c0..1635d2d 100644 --- a/crates/parser/src/visit.rs +++ b/crates/parser/src/visit.rs @@ -453,6 +453,21 @@ impl<'a, R: WasmModuleResources> wasmparser::VisitOperator<'a> for FunctionBuild self.instructions.push(Instruction::RefIsNull); } + fn visit_typed_select_multi(&mut self, _tys: Vec<wasmparser::ValType>) -> Self::Output { + self.errors.push(crate::ParseError::UnsupportedOperator( + "Typed select with multiple types is not supported".to_string(), + )); + + // self.instructions.extend(tys.into_iter().map(|ty| match ty { + // wasmparser::ValType::I32 => Instruction::Select32, + // wasmparser::ValType::F32 => Instruction::Select32, + // wasmparser::ValType::I64 => Instruction::Select64, + // wasmparser::ValType::F64 => Instruction::Select64, + // wasmparser::ValType::V128 => Instruction::Select128, + // wasmparser::ValType::Ref(_) => Instruction::SelectRef, + // })); + } + fn visit_typed_select(&mut self, ty: wasmparser::ValType) -> Self::Output { self.instructions.push(match ty { wasmparser::ValType::I32 => Instruction::Select32, |
