Fix concat
This commit is contained in:
parent
fb12568e33
commit
8fe3ffc8e0
@ -1,4 +1,9 @@
|
|||||||
use std::{cell::RefCell, collections::HashMap, fmt::Debug, rc::Rc};
|
use std::{
|
||||||
|
cell::RefCell,
|
||||||
|
collections::HashMap,
|
||||||
|
fmt::{Debug, Display},
|
||||||
|
rc::Rc,
|
||||||
|
};
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
ast::{BinaryOperator, UnaryOperator},
|
ast::{BinaryOperator, UnaryOperator},
|
||||||
@ -31,7 +36,7 @@ impl LuaFloat {
|
|||||||
|
|
||||||
impl Debug for LuaFloat {
|
impl Debug for LuaFloat {
|
||||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||||
self.0.fmt(f)
|
Debug::fmt(&self.0, f)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -40,7 +45,7 @@ pub struct LuaInteger(pub i64);
|
|||||||
|
|
||||||
impl Debug for LuaInteger {
|
impl Debug for LuaInteger {
|
||||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||||
self.0.fmt(f)
|
Debug::fmt(&self.0, f)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -61,7 +66,7 @@ pub struct LuaBool(pub bool);
|
|||||||
|
|
||||||
impl Debug for LuaBool {
|
impl Debug for LuaBool {
|
||||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||||
self.0.fmt(f)
|
Debug::fmt(&self.0, f)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -184,13 +189,30 @@ impl From<&str> for Value {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl Display for Value {
|
||||||
|
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||||
|
match self {
|
||||||
|
Value::String(value) => Display::fmt(value, f),
|
||||||
|
Value::Float(vmfloat) => Display::fmt(&vmfloat.lua_number().0, f),
|
||||||
|
Value::Integer(lua_integer) => Display::fmt(&lua_integer.0, f),
|
||||||
|
Value::Boolean(lua_bool) => Display::fmt(&lua_bool.0, f),
|
||||||
|
Value::RustFunction(ref_cell) => {
|
||||||
|
write!(f, "<RustFunction({})>", ref_cell.borrow().as_indexable())
|
||||||
|
}
|
||||||
|
Value::Function(closure) => write!(f, "<function({})>", closure.prototype),
|
||||||
|
Value::Nil => write!(f, "nil"),
|
||||||
|
Value::Table(_) => write!(f, "<table>"),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl Value {
|
impl Value {
|
||||||
pub fn concat(&self, other: &Value) -> Result<Value, RuntimeError> {
|
pub fn concat(&self, other: &Value) -> Result<Value, RuntimeError> {
|
||||||
match (self, other) {
|
match (self, other) {
|
||||||
(
|
(
|
||||||
Value::String(_) | Value::Integer(_) | Value::Boolean(_),
|
Value::String(_) | Value::Integer(_) | Value::Boolean(_),
|
||||||
Value::String(_) | Value::Integer(_) | Value::Boolean(_),
|
Value::String(_) | Value::Integer(_) | Value::Boolean(_),
|
||||||
) => Ok(Value::String(format!("{:?}{:?}", self, other))),
|
) => Ok(Value::String(format!("{}{}", self, other))),
|
||||||
(
|
(
|
||||||
Value::Float(_) | Value::Integer(_) | Value::Boolean(_),
|
Value::Float(_) | Value::Integer(_) | Value::Boolean(_),
|
||||||
Value::Float(_) | Value::Integer(_) | Value::Boolean(_),
|
Value::Float(_) | Value::Integer(_) | Value::Boolean(_),
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user