summaryrefslogtreecommitdiff
path: root/libguile/goops.c
diff options
context:
space:
mode:
Diffstat (limited to 'libguile/goops.c')
-rw-r--r--libguile/goops.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/libguile/goops.c b/libguile/goops.c
index ca850fa8c..97129851b 100644
--- a/libguile/goops.c
+++ b/libguile/goops.c
@@ -254,7 +254,10 @@ SCM_DEFINE (scm_class_of, "class-of", 1, 0, 0,
else
return scm_class_procedure;
case scm_tc7_program:
- return scm_class_procedure;
+ if (SCM_PROGRAM_IS_PRIMITIVE_GENERIC (x) && *SCM_SUBR_GENERIC (x))
+ return scm_class_primitive_generic;
+ else
+ return scm_class_procedure;
case scm_tc7_smob:
{