summaryrefslogtreecommitdiff
path: root/src/eval/mod.rs
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2021-01-06 01:32:59 +0100
committerLaurenz <laurmaedje@gmail.com>2021-01-06 01:32:59 +0100
commit7b4d4d6002a9c3da8fafd912f3c7b2da617f19c0 (patch)
treee491f5fcf33c1032c63746003ac7bef6c3c5478f /src/eval/mod.rs
parent2e77b1c836220766398e379ae0157736fb448874 (diff)
Pretty printing 🦋
- Syntax tree and value pretty printing - Better value evaluation (top-level strings and content are evaluated plainly, everything else is pretty printed)
Diffstat (limited to 'src/eval/mod.rs')
-rw-r--r--src/eval/mod.rs3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/eval/mod.rs b/src/eval/mod.rs
index 42a5555d..1c6e3d51 100644
--- a/src/eval/mod.rs
+++ b/src/eval/mod.rs
@@ -169,7 +169,7 @@ impl Eval for Spanned<&Lit> {
fn eval(self, ctx: &mut EvalContext) -> Self::Output {
match *self.v {
- Lit::Ident(ref v) => match ctx.state.scope.get(v.as_str()) {
+ Lit::Ident(ref v) => match ctx.state.scope.get(&v) {
Some(value) => value.clone(),
None => {
ctx.diag(error!(self.span, "unknown variable"));
@@ -286,6 +286,7 @@ fn add(ctx: &mut EvalContext, span: Span, lhs: Value, rhs: Value) -> Value {
// Complex data types to themselves.
(Str(a), Str(b)) => Str(a + &b),
+ (Array(a), Array(b)) => Array(concat(a, b)),
(Dict(a), Dict(b)) => Dict(concat(a, b)),
(Content(a), Content(b)) => Content(concat(a, b)),