From 41e74eb8893c0ec587f03a6cea076429ee71c95d Mon Sep 17 00:00:00 2001 From: Sergey Pepyakin Date: Fri, 1 Dec 2017 19:57:11 +0300 Subject: [PATCH] Return ValidatedModule --- src/validation/mod.rs | 25 +++++++++++++++++++++---- src/validation/module.rs | 11 +++++++++++ 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/src/validation/mod.rs b/src/validation/mod.rs index 1e339b9..04fbacd 100644 --- a/src/validation/mod.rs +++ b/src/validation/mod.rs @@ -8,6 +8,8 @@ use common::stack; use self::context::ModuleContext; use self::func::{FunctionValidationContext, Validator}; +pub use self::module::ValidatedModule; + mod context; mod module; mod func; @@ -29,7 +31,7 @@ impl From for Error { } } -pub fn validate_module(module: &Module) -> Result<(), Error> { +pub fn validate_module(module: &Module) -> Result { let context = prepare_context(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); } } - 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 { // TODO: Validate start - // TODO: Validate imports - // TODO: Validate exports + // TODO: Validate imports + // TODO: Validate exports // Copy types from module as is. let types = module diff --git a/src/validation/module.rs b/src/validation/module.rs index e69de29..649d2d3 100644 --- a/src/validation/module.rs +++ b/src/validation/module.rs @@ -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, + pub tables: Vec, + pub globals: Vec, + pub types: Vec, + pub func_type_indexes: Vec, +}