Add bool builtin

Signed-off-by: Alek Ratzloff <alekratz@gmail.com>
This commit is contained in:
2022-01-24 19:43:30 -08:00
parent 7b9539b5e8
commit d2f041798c
2 changed files with 46 additions and 0 deletions

44
src/obj/bool.rs Normal file
View File

@@ -0,0 +1,44 @@
use crate::obj::{Obj, VTable};
use crate::syn::span::Span;
use crate::vm::{error::*, machine::Machine};
use gc::{Finalize, Trace};
pub type Bool = bool;
#[derive(Debug, Trace, Finalize)]
pub struct BoolObj {
value: Bool,
vtable: VTable,
}
impl BoolObj {
pub fn new(value: Bool) -> Self {
BoolObj {
value,
vtable: vtable! {},
}
}
#[allow(dead_code)]
pub fn value(&self) -> Bool {
self.value
}
}
impl Obj for BoolObj {
fn vtable(&self) -> &VTable {
&self.vtable
}
fn vtable_mut(&mut self) -> &mut VTable {
&mut self.vtable
}
fn call(&self, call_site: Option<Span>, _: &mut Machine) -> Result<()> {
Err(RuntimeError::CannotCall("bool value".to_string()).with_location(call_site))
}
fn as_any(&self) -> &(dyn std::any::Any + 'static) {
self
}
}

View File

@@ -1,5 +1,6 @@
#[macro_use] #[macro_use]
mod macros; mod macros;
pub mod bool;
pub mod builtin; pub mod builtin;
pub mod float; pub mod float;
pub mod int; pub mod int;
@@ -7,6 +8,7 @@ pub mod quote;
pub mod str; pub mod str;
pub mod prelude { pub mod prelude {
pub use crate::obj::bool::*;
pub use crate::obj::builtin::*; pub use crate::obj::builtin::*;
pub use crate::obj::float::*; pub use crate::obj::float::*;
pub use crate::obj::int::*; pub use crate::obj::int::*;