diff --git a/libguile/discouraged.h b/libguile/discouraged.h index 1be05f0..0411069 100644 --- a/libguile/discouraged.h +++ b/libguile/discouraged.h @@ -54,6 +54,9 @@ /* SCM_BOOL_NOT returns the other boolean. * The order of ^s here is important for Borland C++ (!?!?!) + * + * XXX Should this handle %nil properly, and thus be + * defined as (scm_from_bool (scm_is_false_or_lisp_nil (x))) ? */ #define SCM_BOOL_NOT(x) (SCM_PACK (SCM_UNPACK (x) \ ^ (SCM_UNPACK (SCM_BOOL_T) \ diff --git a/libguile/goops.c b/libguile/goops.c index 1548472..b6234a6 100644 --- a/libguile/goops.c +++ b/libguile/goops.c @@ -190,11 +190,12 @@ SCM_DEFINE (scm_class_of, "class-of", 1, 0, 0, return scm_class_integer; case scm_tc3_imm24: + /* XXX What should be done with SCM_ELISP_NIL? */ if (SCM_CHARP (x)) return scm_class_char; - else if (scm_is_bool (x)) + else if (scm_is_bool_and_not_lisp_nil (x)) return scm_class_boolean; - else if (scm_is_null (x)) + else if (scm_is_null_and_not_lisp_nil (x)) return scm_class_null; else return scm_class_unknown;