summaryrefslogtreecommitdiff
path: root/libguile/error.c
diff options
context:
space:
mode:
Diffstat (limited to 'libguile/error.c')
-rw-r--r--libguile/error.c31
1 files changed, 25 insertions, 6 deletions
diff --git a/libguile/error.c b/libguile/error.c
index 2353faf29..78e698619 100644
--- a/libguile/error.c
+++ b/libguile/error.c
@@ -51,7 +51,7 @@
#include "genio.h"
#include "throw.h"
-#include "scm_validate.h"
+#include "validate.h"
#include "error.h"
#ifdef HAVE_STRING_H
@@ -188,7 +188,7 @@ scm_out_of_range (const char *subr, SCM bad_value)
scm_error (scm_out_of_range_key,
subr,
"Argument out of range: ~S",
- scm_cons (bad_value, SCM_EOL),
+ SCM_LIST1(bad_value),
SCM_BOOL_F);
}
@@ -198,7 +198,7 @@ scm_out_of_range_pos (const char *subr, SCM bad_value, SCM pos)
scm_error (scm_out_of_range_key,
subr,
"Argument ~S out of range: ~S",
- scm_listify (pos, bad_value, SCM_UNDEFINED),
+ SCM_LIST2(pos,bad_value),
SCM_BOOL_F);
}
@@ -210,7 +210,7 @@ scm_wrong_num_args (SCM proc)
scm_error (scm_args_number_key,
NULL,
"Wrong number of arguments to ~A",
- scm_cons (proc, SCM_EOL),
+ SCM_LIST1(proc),
SCM_BOOL_F);
}
@@ -222,11 +222,30 @@ scm_wrong_type_arg (const char *subr, int pos, SCM bad_value)
subr,
(pos == 0) ? "Wrong type argument: ~S"
: "Wrong type argument in position ~A: ~S",
- (pos == 0) ? scm_cons (bad_value, SCM_EOL)
- : scm_cons (SCM_MAKINUM (pos), scm_cons (bad_value, SCM_EOL)),
+ (pos == 0) ? SCM_LIST1(bad_value)
+ : SCM_LIST2(SCM_MAKINUM(pos), bad_value),
SCM_BOOL_F);
}
+void
+scm_wrong_type_arg_msg (const char *subr, int pos, SCM bad_value, const char *szMessage)
+{
+ SCM msg = scm_makfrom0str(szMessage);
+ if (pos == 0) {
+ scm_error (scm_arg_type_key,
+ subr, "Wrong type argument (expecting ~A): ~S",
+ SCM_LIST2(msg,bad_value),
+ SCM_BOOL_F);
+ } else {
+ scm_error (scm_arg_type_key,
+ subr,
+ "Wrong type argument in position ~A (expecting ~A): ~S",
+ SCM_LIST3(SCM_MAKINUM(pos),msg,bad_value),
+ SCM_BOOL_F);
+ }
+}
+
+
SCM_SYMBOL (scm_memory_alloc_key, "memory-allocation-error");
void
scm_memory_error (const char *subr)