Array values are now pass-by-reference
This commit is contained in:
parent
3806a61756
commit
742d6706b0
@ -41,7 +41,7 @@ pub enum RuntimeError {
|
|||||||
pub enum Value {
|
pub enum Value {
|
||||||
I64(i64),
|
I64(i64),
|
||||||
String(Sid),
|
String(Sid),
|
||||||
Array(RefCell<Vec<Value>>),
|
Array(Rc<RefCell<Vec<Value>>>),
|
||||||
Void,
|
Void,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -245,7 +245,7 @@ impl Interpreter {
|
|||||||
Value::I64(size) if !size.is_negative() => size,
|
Value::I64(size) if !size.is_negative() => size,
|
||||||
val => return Err(RuntimeError::InvalidArrayIndex(val)),
|
val => return Err(RuntimeError::InvalidArrayIndex(val)),
|
||||||
};
|
};
|
||||||
Value::Array(RefCell::new(vec![Value::I64(0); size as usize]))
|
Value::Array(Rc::new(RefCell::new(vec![Value::I64(0); size as usize])))
|
||||||
}
|
}
|
||||||
Expression::String(text) => Value::String(text.clone()),
|
Expression::String(text) => Value::String(text.clone()),
|
||||||
Expression::BinOp(bo, lhs, rhs) => self.resolve_binop(bo, lhs, rhs)?,
|
Expression::BinOp(bo, lhs, rhs) => self.resolve_binop(bo, lhs, rhs)?,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user