MCPcopy Create free account
hub / github.com/bytecodealliance/wasmtime / link_twice_bad

Function link_twice_bad

tests/all/linker.rs:46–93  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

44
45#[test]
46fn link_twice_bad() -> Result<()> {
47 let mut store = Store::<()>::default();
48 let mut linker = Linker::<()>::new(store.engine());
49
50 // functions
51 linker.func_wrap("f", "", || {})?;
52 assert!(linker.func_wrap("f", "", || {}).is_err());
53 assert!(
54 linker
55 .func_wrap("f", "", || -> Result<()> { loop {} })
56 .is_err()
57 );
58
59 // globals
60 let ty = GlobalType::new(ValType::I32, Mutability::Const);
61 let global = Global::new(&mut store, ty, Val::I32(0))?;
62 linker.define(&mut store, "g", "1", global)?;
63 assert!(linker.define(&mut store, "g", "1", global).is_err());
64
65 let ty = GlobalType::new(ValType::I32, Mutability::Var);
66 let global = Global::new(&mut store, ty, Val::I32(0))?;
67 linker.define(&mut store, "g", "2", global)?;
68 assert!(linker.define(&mut store, "g", "2", global).is_err());
69
70 let ty = GlobalType::new(ValType::I64, Mutability::Const);
71 let global = Global::new(&mut store, ty, Val::I64(0))?;
72 linker.define(&mut store, "g", "3", global)?;
73 assert!(linker.define(&mut store, "g", "3", global).is_err());
74
75 // memories
76 let ty = MemoryType::new(1, None);
77 let memory = Memory::new(&mut store, ty)?;
78 linker.define(&mut store, "m", "", memory)?;
79 assert!(linker.define(&mut store, "m", "", memory).is_err());
80 let ty = MemoryType::new(2, None);
81 let memory = Memory::new(&mut store, ty)?;
82 assert!(linker.define(&mut store, "m", "", memory).is_err());
83
84 // tables
85 let ty = TableType::new(RefType::FUNCREF, 1, None);
86 let table = Table::new(&mut store, ty, Ref::Func(None))?;
87 linker.define(&mut store, "t", "", table)?;
88 assert!(linker.define(&mut store, "t", "", table).is_err());
89 let ty = TableType::new(RefType::FUNCREF, 2, None);
90 let table = Table::new(&mut store, ty, Ref::Func(None))?;
91 assert!(linker.define(&mut store, "t", "", table).is_err());
92 Ok(())
93}
94
95#[test]
96#[cfg_attr(miri, ignore)]

Callers

nothing calls this directly

Calls 6

OkFunction · 0.85
newFunction · 0.50
FuncEnum · 0.50
engineMethod · 0.45
func_wrapMethod · 0.45
defineMethod · 0.45

Tested by

no test coverage detected