diff options
author | Greg Brown <gmb60@cam.ac.uk> | 2021-01-14 14:37:27 +0000 |
---|---|---|
committer | Greg Brown <gmb60@cam.ac.uk> | 2021-01-14 14:37:27 +0000 |
commit | 24ff5f311f6c797681be1cff0fb2d0b75c0f848f (patch) | |
tree | e4cc216813f2a9c40dc496148dbd4eeed83fb87c /src/nibble/cst.rs | |
parent | 3d13ff5a0f40b750f754898ab4568d4afc0f1a9e (diff) |
Finish AutoChomp
Diffstat (limited to 'src/nibble/cst.rs')
-rw-r--r-- | src/nibble/cst.rs | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/nibble/cst.rs b/src/nibble/cst.rs index f6fa51b..2fcc99f 100644 --- a/src/nibble/cst.rs +++ b/src/nibble/cst.rs @@ -9,7 +9,7 @@ use syn::{ LitStr, Token, }; -use crate::chomp::{Name, ast}; +use crate::chomp::{ast, Name}; use super::convert::{Context, Convert, ConvertError}; @@ -332,15 +332,19 @@ impl File { let mut map = Vec::new(); for stmt in self.lets { let span = stmt.span(); - let params = stmt.args.into_iter().flat_map(|args| args.into_iter()); + let name: Name = stmt.name.into(); + let params = stmt + .args + .into_iter() + .flat_map(|args| args.into_iter()) + .map(Name::from); let mut context = Context::new(&names, params.clone()); - names.push(stmt.name.clone()); let mut expr = stmt.expr.convert(&mut context)?; - let name: Name = stmt.name.into(); + names.push(name.clone()); expr.name = Some(name.clone()); map.push(ast::Function { name, - params: params.map(|name| Some(name.into())).collect(), + params: params.map(Some).collect(), expr, span, }); |