From 66e7e1884ebd157b303f252c57e773347d23de73 Mon Sep 17 00:00:00 2001 From: Ross Andrews Date: Thu, 23 Nov 2023 12:22:30 -0600 Subject: [PATCH] Refactor for style --- forge_core/src/compiler/compiled_fn.rs | 9 +++------ forge_core/src/compiler/mod.rs | 4 +++- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/forge_core/src/compiler/compiled_fn.rs b/forge_core/src/compiler/compiled_fn.rs index 4265adf..894da6a 100644 --- a/forge_core/src/compiler/compiled_fn.rs +++ b/forge_core/src/compiler/compiled_fn.rs @@ -82,12 +82,9 @@ impl CompiledFn { } } - pub(crate) fn text(&self) -> Vec { - let preamble = self.preamble.0.clone(); - let body = self.body.0.clone(); - let outro = self.outro.0.clone(); - - [preamble, body, outro].into_iter().flatten().collect() + /// Return an iterator over all the + pub fn text(&self) -> impl Iterator { + self.preamble.0.iter().chain(self.body.0.iter()).chain(self.outro.0.iter()).map(String::as_str) } /// Emit and emit arg should just be delegated to `body` diff --git a/forge_core/src/compiler/mod.rs b/forge_core/src/compiler/mod.rs index 5b46a64..975023e 100644 --- a/forge_core/src/compiler/mod.rs +++ b/forge_core/src/compiler/mod.rs @@ -47,7 +47,9 @@ pub fn build_boot(src: &str) -> Result, CompileError> { // Now start dumping compiled objects into there. First functions: for (_, val) in state.functions.iter_mut() { asm.push(format!("{}:", val.label)); - asm.append(val.text().as_mut()); + for line in val.text() { + asm.push(String::from(line)); + } } // Strings: