Add a test tha call_indirect traps produce good errors (#889)

Closes #178
This commit is contained in:
Alex Crichton
2020-02-04 14:05:28 -06:00
committed by GitHub
parent a01bcff219
commit e09231e33f

View File

@@ -339,3 +339,34 @@ fn mismatched_arguments() -> Result<()> {
); );
Ok(()) Ok(())
} }
#[test]
fn call_signature_mismatch() -> Result<()> {
let store = Store::default();
let binary = wat::parse_str(
r#"
(module $a
(func $foo
i32.const 0
call_indirect)
(func $bar (param i32))
(start $foo)
(table 1 anyfunc)
(elem (i32.const 0) 1)
)
"#,
)?;
let module = Module::new(&store, &binary)?;
let err = Instance::new(&module, &[])
.err()
.unwrap()
.downcast::<Trap>()
.unwrap();
assert_eq!(
err.message(),
"wasm trap: indirect call type mismatch, source location: @0030"
);
Ok(())
}