From d4b8a0708232e2c4459f0e1a3b2f2814316359e8 Mon Sep 17 00:00:00 2001 From: Mel Date: Fri, 22 Oct 2021 22:58:25 +0200 Subject: Display values without type --- src/interpret/value.rs | 15 ++++++++++++++- src/interpret/walker.rs | 2 +- 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 = RefCell>; @@ -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, "", v.as_ptr()), + Value::Void => write!(f, ""), + } + } +} 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)?), -- cgit 1.4.1