@@ -45,6 +45,7 @@ impl Gc for BasicGc {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Default)]
|
||||
pub struct BasicIntern {
|
||||
strs: HashMap<String, ObjRef<Str>>,
|
||||
syms: HashMap<String, Sym>,
|
||||
|
||||
@@ -3,11 +3,12 @@ pub mod gc;
|
||||
pub mod intern;
|
||||
pub mod ptr;
|
||||
|
||||
pub use basic::BasicGc;
|
||||
pub use basic::{BasicGc, BasicIntern};
|
||||
|
||||
pub mod prelude {
|
||||
pub use crate::mem::{
|
||||
BasicGc,
|
||||
BasicIntern,
|
||||
gc::Gc,
|
||||
intern::Intern,
|
||||
ptr::{DynRef, ObjRef},
|
||||
|
||||
@@ -121,15 +121,16 @@ impl<'i, I: Intern> AttrsBuilder<'i, I> {
|
||||
|
||||
#[test]
|
||||
fn test_attrs_new() {
|
||||
use crate::mem::BasicGc;
|
||||
use crate::mem::{BasicGc, BasicIntern};
|
||||
|
||||
let mut gc = BasicGc::default();
|
||||
let mut intern = BasicIntern::default();
|
||||
|
||||
let attrs_ref = Attrs::new(&mut gc, Default::default());
|
||||
|
||||
{
|
||||
let mut attrs = attrs_ref.borrow_mut();
|
||||
let sym = gc.add_sym("symbol");
|
||||
let sym = intern.intern_sym("symbol");
|
||||
attrs.insert(sym, attrs_ref.as_dyn());
|
||||
|
||||
assert!(
|
||||
|
||||
@@ -44,7 +44,7 @@ impl Obj for Str {
|
||||
return;
|
||||
}
|
||||
self.marked.set(true);
|
||||
todo!()
|
||||
self.attrs.borrow().mark();
|
||||
}
|
||||
|
||||
fn unmark(&self) {
|
||||
|
||||
Reference in New Issue
Block a user