From 34311bd0fb9f74fa889fb2d07a0ad74751fe56ae Mon Sep 17 00:00:00 2001 From: Rerumu Date: Fri, 17 Jun 2022 22:11:31 -0400 Subject: [PATCH] Allow `Builder` re-use --- codegen-luajit/src/translator.rs | 6 ++++-- codegen-luau/src/translator.rs | 6 ++++-- wasm-ast/src/builder.rs | 4 ++-- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/codegen-luajit/src/translator.rs b/codegen-luajit/src/translator.rs index 4bfec65..acd7090 100644 --- a/codegen-luajit/src/translator.rs +++ b/codegen-luajit/src/translator.rs @@ -224,9 +224,11 @@ fn build_func_list(wasm: &Module, type_info: &TypeInfo) -> Vec { None => return Vec::new(), }; - let iter = list.iter().enumerate(); + let mut builder = Builder::from_type_info(type_info); - iter.map(|f| Builder::from_type_info(type_info).build_indexed(f.0, f.1)) + list.iter() + .enumerate() + .map(|f| builder.build_indexed(f.0, f.1)) .collect() } diff --git a/codegen-luau/src/translator.rs b/codegen-luau/src/translator.rs index a87c817..f57a477 100644 --- a/codegen-luau/src/translator.rs +++ b/codegen-luau/src/translator.rs @@ -223,9 +223,11 @@ fn build_func_list(wasm: &Module, type_info: &TypeInfo) -> Vec { None => return Vec::new(), }; - let iter = list.iter().enumerate(); + let mut builder = Builder::from_type_info(type_info); - iter.map(|f| Builder::from_type_info(type_info).build_indexed(f.0, f.1)) + list.iter() + .enumerate() + .map(|f| builder.build_indexed(f.0, f.1)) .collect() } diff --git a/wasm-ast/src/builder.rs b/wasm-ast/src/builder.rs index bde6992..267ad44 100644 --- a/wasm-ast/src/builder.rs +++ b/wasm-ast/src/builder.rs @@ -340,7 +340,7 @@ impl<'a> Builder<'a> { } #[must_use] - pub fn build_anonymous(mut self, list: &[Instruction]) -> FuncData { + pub fn build_anonymous(&mut self, list: &[Instruction]) -> FuncData { let data = self.build_stat_list(list, 1); FuncData { @@ -353,7 +353,7 @@ impl<'a> Builder<'a> { } #[must_use] - pub fn build_indexed(mut self, index: usize, func: &FuncBody) -> FuncData { + pub fn build_indexed(&mut self, index: usize, func: &FuncBody) -> FuncData { let arity = &self.type_info.rel_arity_of(self.type_info.len_ex() + index); let data = self.build_stat_list(func.code().elements(), arity.num_result);