summaryrefslogtreecommitdiff
path: root/src/nibble/cst.rs
diff options
context:
space:
mode:
authorGreg Brown <gmb60@cam.ac.uk>2021-01-14 14:37:27 +0000
committerGreg Brown <gmb60@cam.ac.uk>2021-01-14 14:37:27 +0000
commit24ff5f311f6c797681be1cff0fb2d0b75c0f848f (patch)
treee4cc216813f2a9c40dc496148dbd4eeed83fb87c /src/nibble/cst.rs
parent3d13ff5a0f40b750f754898ab4568d4afc0f1a9e (diff)
Finish AutoChomp
Diffstat (limited to 'src/nibble/cst.rs')
-rw-r--r--src/nibble/cst.rs14
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,
});