Return ValidatedModule

This commit is contained in:
Sergey Pepyakin 2017-12-01 19:57:11 +03:00
parent 0feed2fa21
commit 41e74eb889
2 changed files with 32 additions and 4 deletions

View File

@ -8,6 +8,8 @@ use common::stack;
use self::context::ModuleContext; use self::context::ModuleContext;
use self::func::{FunctionValidationContext, Validator}; use self::func::{FunctionValidationContext, Validator};
pub use self::module::ValidatedModule;
mod context; mod context;
mod module; mod module;
mod func; mod func;
@ -29,7 +31,7 @@ impl From<stack::Error> for Error {
} }
} }
pub fn validate_module(module: &Module) -> Result<(), Error> { pub fn validate_module(module: &Module) -> Result<ValidatedModule, Error> {
let context = prepare_context(module)?; let context = prepare_context(module)?;
let function_section_len = module let function_section_len = module
@ -74,13 +76,28 @@ pub fn validate_module(module: &Module) -> Result<(), Error> {
// self.functions_labels.insert(index as u32, function_labels); // self.functions_labels.insert(index as u32, function_labels);
} }
} }
Ok(())
let ModuleContext {
types,
tables,
memories,
globals,
func_type_indexes,
} = context;
Ok(ValidatedModule {
types,
tables,
memories,
globals,
func_type_indexes,
})
} }
fn prepare_context(module: &Module) -> Result<ModuleContext, Error> { fn prepare_context(module: &Module) -> Result<ModuleContext, Error> {
// TODO: Validate start // TODO: Validate start
// TODO: Validate imports // TODO: Validate imports
// TODO: Validate exports // TODO: Validate exports
// Copy types from module as is. // Copy types from module as is.
let types = module let types = module

View File

@ -0,0 +1,11 @@
use elements::{MemoryType, TableType, GlobalType, Type};
use elements::{Opcode, BlockType, ValueType, TableElementType};
use validation::Error;
pub struct ValidatedModule {
pub memories: Vec<MemoryType>,
pub tables: Vec<TableType>,
pub globals: Vec<GlobalType>,
pub types: Vec<Type>,
pub func_type_indexes: Vec<u32>,
}