make Debug print easier to read
parent
35e62027e6
commit
24d576879b
|
@ -87,6 +87,10 @@ fn main () {
|
||||||
match input.as_str ().trim_end () {
|
match input.as_str ().trim_end () {
|
||||||
"c" => in_break = false,
|
"c" => in_break = false,
|
||||||
"q" => return,
|
"q" => return,
|
||||||
|
"registers" => {
|
||||||
|
dbg! (&vm.registers);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
"s" => {
|
"s" => {
|
||||||
match vm.step () {
|
match vm.step () {
|
||||||
None => (),
|
None => (),
|
||||||
|
|
|
@ -48,7 +48,7 @@ pub struct Breakpoint {
|
||||||
|
|
||||||
#[derive (Debug)]
|
#[derive (Debug)]
|
||||||
pub struct State <'a> {
|
pub struct State <'a> {
|
||||||
registers: Vec <Value>,
|
pub registers: Vec <Value>,
|
||||||
// Currently only used for native function calls
|
// Currently only used for native function calls
|
||||||
top: usize,
|
top: usize,
|
||||||
pub stack: Vec <StackFrame>,
|
pub stack: Vec <StackFrame>,
|
||||||
|
|
29
src/value.rs
29
src/value.rs
|
@ -15,7 +15,7 @@ pub struct BogusClosure {
|
||||||
pub upvalues: Vec <Value>,
|
pub upvalues: Vec <Value>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive (Clone, Debug, PartialEq)]
|
#[derive (Clone, PartialEq)]
|
||||||
pub enum Value {
|
pub enum Value {
|
||||||
Nil,
|
Nil,
|
||||||
Boolean (bool),
|
Boolean (bool),
|
||||||
|
@ -35,6 +35,23 @@ pub enum Value {
|
||||||
BogusClosure (Rc <RefCell <BogusClosure>>),
|
BogusClosure (Rc <RefCell <BogusClosure>>),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl fmt::Debug for Value {
|
||||||
|
fn fmt (&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||||
|
match self {
|
||||||
|
Value::Nil => write! (f, "nil"),
|
||||||
|
Value::Boolean (false) => write! (f, "false"),
|
||||||
|
Value::Boolean (true) => write! (f, "true"),
|
||||||
|
Value::Float (x) => write! (f, "{:?}", x),
|
||||||
|
Value::Integer (x) => write! (f, "{}", x),
|
||||||
|
Value::RsFunc (x) => write! (f, "function: {:?}", x),
|
||||||
|
Value::String (s) => write! (f, "{}", s),
|
||||||
|
Value::Table (t) => write! (f, "{:?}", t.borrow ()),
|
||||||
|
|
||||||
|
Value::BogusClosure (x) => write! (f, "{:?}", x.borrow ()),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl Default for Value {
|
impl Default for Value {
|
||||||
fn default () -> Self {
|
fn default () -> Self {
|
||||||
Self::Nil
|
Self::Nil
|
||||||
|
@ -213,12 +230,20 @@ impl Value {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive (Debug, Default, Eq, PartialEq)]
|
#[derive (Default, Eq, PartialEq)]
|
||||||
pub struct Table {
|
pub struct Table {
|
||||||
array: Vec <Value>,
|
array: Vec <Value>,
|
||||||
hash: HashMap <Value, Value>,
|
hash: HashMap <Value, Value>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl fmt::Debug for Table {
|
||||||
|
fn fmt (&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||||
|
write! (f, "Table {:#?}", self.hash)?;
|
||||||
|
|
||||||
|
Ok (())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl Table {
|
impl Table {
|
||||||
fn get_inner (&self, key: &Value) -> Value {
|
fn get_inner (&self, key: &Value) -> Value {
|
||||||
self.hash.get (key).cloned ().unwrap_or_default ()
|
self.hash.get (key).cloned ().unwrap_or_default ()
|
||||||
|
|
Loading…
Reference in New Issue