about summary refs log tree commit diff
path: root/src/interpret
diff options
context:
space:
mode:
authorMel <einebeere@gmail.com>2021-10-22 22:58:25 +0200
committerMel <einebeere@gmail.com>2021-10-22 23:03:59 +0200
commitd4b8a0708232e2c4459f0e1a3b2f2814316359e8 (patch)
tree1ca44fce7870d726dfefb53f7acbda7ac6a9f85b /src/interpret
parentc35a7ba06a47a8b26bd784df552ad4c881383898 (diff)
downloadrabbithole-d4b8a0708232e2c4459f0e1a3b2f2814316359e8.tar.zst
rabbithole-d4b8a0708232e2c4459f0e1a3b2f2814316359e8.zip
Display values without type
Diffstat (limited to 'src/interpret')
-rw-r--r--src/interpret/value.rs15
-rw-r--r--src/interpret/walker.rs2
2 files changed, 15 insertions, 2 deletions
diff --git a/src/interpret/value.rs b/src/interpret/value.rs
index 1ca0f0e..c0ac96e 100644
--- a/src/interpret/value.rs
+++ b/src/interpret/value.rs
@@ -1,6 +1,6 @@
 use crate::parse::ast::nodes::FnNode;
 use anyhow::{anyhow, Result};
-use std::{cell::RefCell, rc::Rc};
+use std::{cell::RefCell, fmt::Display, rc::Rc};
 
 type Ref<T> = RefCell<Rc<T>>;
 
@@ -149,3 +149,16 @@ impl Value {
         }
     }
 }
+
+impl Display for Value {
+    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+        match self {
+            Value::Str(v) => write!(f, "{}", v),
+            Value::Float(v) => write!(f, "{}", v),
+            Value::Int(v) => write!(f, "{}", v),
+            Value::Bool(v) => write!(f, "{}", v),
+            Value::Fn(v) => write!(f, "<fn {:?}>", v.as_ptr()),
+            Value::Void => write!(f, "<void>"),
+        }
+    }
+}
diff --git a/src/interpret/walker.rs b/src/interpret/walker.rs
index 79ef87f..e04b5a4 100644
--- a/src/interpret/walker.rs
+++ b/src/interpret/walker.rs
@@ -36,7 +36,7 @@ impl Walker {
             }
             Statement::Print(node) => {
                 let result = self.walk_expression(node)?;
-                println!("{:?}", result);
+                println!("{}", result);
                 None
             }
             Statement::Return(node) => Some(self.walk_expression(node)?),