global import breaks with Function("missing exports with name STACKTOP")

This commit is contained in:
fro 2017-07-25 14:31:17 +03:00
parent d78b8c6a13
commit a5da7d604b

View File

@ -210,6 +210,39 @@ fn single_program_different_modules() {
assert_eq!(executor.values, vec![7, 57, 42]); assert_eq!(executor.values, vec![7, 57, 42]);
} }
#[test]
fn import_global() {
// create new program
let program = ProgramInstance::new().unwrap();
// => env module is created
let env_instance = program.module("env").unwrap();
// => linear memory is created
let env_memory = env_instance.memory(ItemIndex::Internal(0)).unwrap();
// create native env module executor
let mut executor = FunctionExecutor {
memory: env_memory.clone(),
values: Vec::new(),
};
{
let functions: UserFunctions = UserFunctions {
executor: &mut executor,
functions: ::std::borrow::Cow::from(SIGNATURES),
};
let native_env_instance = Arc::new(env_native_module(env_instance, functions).unwrap());
let params = ExecutionParams::with_external("env".into(), native_env_instance);
let module = module()
.with_import(ImportEntry::new("env".into(), "STACKTOP".into(), External::Global(GlobalType::new(ValueType::I32, false))))
.build();
// load module
program.add_module("main", module, Some(&params.externals)).unwrap();
}
}
#[test] #[test]
fn env_native_export_entry_type_check() { fn env_native_export_entry_type_check() {
let program = ProgramInstance::new().unwrap(); let program = ProgramInstance::new().unwrap();