summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib.c11
-rw-r--r--lib.h1
2 files changed, 11 insertions, 1 deletions
diff --git a/lib.c b/lib.c
index 57cdae51..e133c854 100644
--- a/lib.c
+++ b/lib.c
@@ -1047,6 +1047,15 @@ loc list_collect(loc ptail, val obj)
case LSTR:
replace_str(tailobj, items, t, t);
return ptail;
+ case COBJ:
+ if (tailobj->co.cls == carray_s) {
+ carray_replace(tailobj, items, t, t);
+ return ptail;
+ }
+ if (obj_struct_p(tailobj)) {
+ replace_obj(tailobj, items, t, t);
+ return ptail;
+ }
default:
uw_throwf(error_s, lit("cannot append ~s"), deref(ptail), nao);
}
@@ -7277,7 +7286,7 @@ val replace_vec(val vec_in, val items, val from, val to)
return vec_in;
}
-static val replace_obj(val obj, val items, val from, val to)
+val replace_obj(val obj, val items, val from, val to)
{
val self = lit("replace");
val lambda_set_meth = maybe_slot(obj, lambda_set_s);
diff --git a/lib.h b/lib.h
index 9bcf2b22..4558085a 100644
--- a/lib.h
+++ b/lib.h
@@ -1005,6 +1005,7 @@ val list_vec(val vector);
val copy_vec(val vec);
val sub_vec(val vec_in, val from, val to);
val replace_vec(val vec_in, val items, val from, val to);
+val replace_obj(val obj, val items, val from, val to);
val cat_vec(val list);
val lazy_stream_cons(val stream);
val lazy_str(val list, val term, val limit);