summaryrefslogtreecommitdiffstats
path: root/lib.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib.c')
-rw-r--r--lib.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/lib.c b/lib.c
index 3e439437..ef781a89 100644
--- a/lib.c
+++ b/lib.c
@@ -499,8 +499,7 @@ val throw_mismatch(val self, val obj, type_t t)
val class_check(val self, val cobj, val class_sym)
{
- type_assert (is_ptr(cobj) && cobj->t.type == COBJ &&
- (cobj->co.cls == class_sym || subtypep(cobj->co.cls, class_sym)),
+ type_assert (cobjclassp(cobj, class_sym),
(lit("~a: ~s is not of type ~s"), self, cobj, class_sym, nao));
return t;
}
@@ -7828,6 +7827,13 @@ val cobjp(val obj)
return type(obj) == COBJ ? t : nil;
}
+val cobjclassp(val obj, val cls_sym)
+{
+ return if2(is_ptr(obj) && obj->t.type == COBJ &&
+ (obj->co.cls == cls_sym || subtypep(obj->co.cls, cls_sym)),
+ one);
+}
+
mem_t *cobj_handle(val self, val cobj, val cls_sym)
{
class_check(self, cobj, cls_sym);