extern SCM scm_call_generic_0 (SCM gf);
-#define SCM_WTA_DISPATCH_0(gf, arg, pos, subr) \
- return (SCM_UNPACK (gf) \
- ? scm_call_generic_0 ((gf)) \
- : scm_wrong_type_arg ((subr), (pos), (arg)), 0)
+#define SCM_WTA_DISPATCH_0(gf, arg, pos, subr) \
+ return (SCM_UNPACK (gf) \
+ ? scm_call_generic_0 ((gf)) \
+ : (scm_wrong_type_arg ((subr), (pos), (arg)), SCM_UNSPECIFIED))
#define SCM_GASSERT0(cond, gf, arg, pos, subr) \
if (!(cond)) SCM_WTA_DISPATCH_0((gf), (arg), (pos), (subr))
extern SCM scm_call_generic_1 (SCM gf, SCM a1);
-#define SCM_WTA_DISPATCH_1(gf, a1, pos, subr) \
- return (SCM_UNPACK (gf) \
- ? scm_call_generic_1 ((gf), (a1)) \
- : scm_wrong_type_arg ((subr), (pos), (a1)), 0)
+#define SCM_WTA_DISPATCH_1(gf, a1, pos, subr) \
+ return (SCM_UNPACK (gf) \
+ ? scm_call_generic_1 ((gf), (a1)) \
+ : (scm_wrong_type_arg ((subr), (pos), (a1)), SCM_UNSPECIFIED))
#define SCM_GASSERT1(cond, gf, a1, pos, subr) \
if (!(cond)) SCM_WTA_DISPATCH_1((gf), (a1), (pos), (subr))
extern SCM scm_call_generic_2 (SCM gf, SCM a1, SCM a2);
-#define SCM_WTA_DISPATCH_2(gf, a1, a2, pos, subr) \
- return (SCM_UNPACK (gf) \
- ? scm_call_generic_2 ((gf), (a1), (a2)) \
- : scm_wrong_type_arg ((subr), (pos), \
- (pos) == SCM_ARG1 ? (a1) : (a2)), 0)
+#define SCM_WTA_DISPATCH_2(gf, a1, a2, pos, subr) \
+ return (SCM_UNPACK (gf) \
+ ? scm_call_generic_2 ((gf), (a1), (a2)) \
+ : (scm_wrong_type_arg ((subr), (pos), \
+ (pos) == SCM_ARG1 ? (a1) : (a2)), \
+ SCM_UNSPECIFIED))
#define SCM_GASSERT2(cond, gf, a1, a2, pos, subr) \
if (!(cond)) SCM_WTA_DISPATCH_2((gf), (a1), (a2), (pos), (subr))
extern SCM scm_apply_generic (SCM gf, SCM args);
-#define SCM_WTA_DISPATCH_n(gf, args, pos, subr) \
- return (SCM_UNPACK (gf) \
- ? scm_apply_generic ((gf), (args)) \
- : scm_wrong_type_arg ((subr), (pos), \
- scm_list_ref ((args), \
- SCM_MAKINUM ((pos) - 1))), 0)
+#define SCM_WTA_DISPATCH_n(gf, args, pos, subr) \
+ return (SCM_UNPACK (gf) \
+ ? scm_apply_generic ((gf), (args)) \
+ : (scm_wrong_type_arg ((subr), (pos), \
+ scm_list_ref ((args), \
+ SCM_MAKINUM ((pos) - 1))), \
+ SCM_UNSPECIFIED))
#define SCM_GASSERTn(cond, gf, args, pos, subr) \
if (!(cond)) SCM_WTA_DISPATCH_n((gf), (args), (pos), (subr))