diff options
author | bnewbold <bnewbold@robocracy.org> | 2016-04-20 17:06:35 -0400 |
---|---|---|
committer | bnewbold <bnewbold@robocracy.org> | 2016-04-20 17:06:35 -0400 |
commit | 28e45349e4eb5867a1b75c5b93f7fa0653485edd (patch) | |
tree | 1681ec9a9dba1f83e7467d7d3055b03667e56834 | |
parent | 3864f6e60b4a944c55736756d9a14e48d860efd4 (diff) | |
download | spectrum-28e45349e4eb5867a1b75c5b93f7fa0653485edd.tar.gz spectrum-28e45349e4eb5867a1b75c5b93f7fa0653485edd.zip |
rust: unwrap single-expr parse results
-rw-r--r-- | minimal.rs | 6 |
1 files changed, 5 insertions, 1 deletions
@@ -154,7 +154,11 @@ fn scheme_parse<'a>(tokens: &Vec<&'a str>, depth: u32) -> Result<(SchemeExpr<'a> return Err("missing a close bracket"); } let rlen = ret.len(); - return Ok((SchemeExpr::SchemeList(ret), rlen)); + if depth == 0 && rlen == 1 { + return Ok((ret.pop().unwrap(), rlen)); + } else { + return Ok((SchemeExpr::SchemeList(ret), rlen)); + } } fn scheme_repr<'a>(ast: &SchemeExpr) -> Result<String, &'static str> { |