error-message update

This commit is contained in:
Matthew Flatt 2012-06-23 05:56:05 +08:00
parent ff8a062bfe
commit 503b3858f5
10 changed files with 39 additions and 16 deletions

View File

@ -112,6 +112,7 @@ EXPORTS
scheme_wrong_type scheme_wrong_type
scheme_wrong_contract scheme_wrong_contract
scheme_wrong_field_type scheme_wrong_field_type
scheme_wrong_field_contract
scheme_arg_mismatch scheme_arg_mismatch
scheme_contract_error scheme_contract_error
scheme_wrong_return_arity scheme_wrong_return_arity

View File

@ -112,6 +112,7 @@ EXPORTS
scheme_wrong_type scheme_wrong_type
scheme_wrong_contract scheme_wrong_contract
scheme_wrong_field_type scheme_wrong_field_type
scheme_wrong_field_contract
scheme_arg_mismatch scheme_arg_mismatch
scheme_contract_error scheme_contract_error
scheme_wrong_return_arity scheme_wrong_return_arity

View File

@ -110,6 +110,7 @@ scheme_case_lambda_wrong_count
scheme_wrong_type scheme_wrong_type
scheme_wrong_contract scheme_wrong_contract
scheme_wrong_field_type scheme_wrong_field_type
scheme_wrong_field_contract
scheme_arg_mismatch scheme_arg_mismatch
scheme_contract_error scheme_contract_error
scheme_wrong_return_arity scheme_wrong_return_arity

View File

@ -110,6 +110,7 @@ scheme_case_lambda_wrong_count
scheme_wrong_type scheme_wrong_type
scheme_wrong_contract scheme_wrong_contract
scheme_wrong_field_type scheme_wrong_field_type
scheme_wrong_field_contract
scheme_arg_mismatch scheme_arg_mismatch
scheme_contract_error scheme_contract_error
scheme_wrong_return_arity scheme_wrong_return_arity

View File

@ -1655,6 +1655,17 @@ void scheme_wrong_field_type(Scheme_Object *c_name,
scheme_wrong_type(s, expected, -1, 0, a); scheme_wrong_type(s, expected, -1, 0, a);
} }
void scheme_wrong_field_contract(Scheme_Object *c_name,
const char *expected,
Scheme_Object *o)
{
const char *s;
Scheme_Object *a[1];
a[0] = o;
s = scheme_symbol_name(c_name);
scheme_wrong_contract(s, expected, -1, 0, a);
}
void scheme_arg_mismatch(const char *name, const char *msg, Scheme_Object *o) void scheme_arg_mismatch(const char *name, const char *msg, Scheme_Object *o)
{ {
char *s; char *s;

View File

@ -237,6 +237,9 @@ MZ_EXTERN void scheme_wrong_contract(const char *name, const char *expected,
MZ_EXTERN void scheme_wrong_field_type(Scheme_Object *c_name, MZ_EXTERN void scheme_wrong_field_type(Scheme_Object *c_name,
const char *expected, const char *expected,
Scheme_Object *o); Scheme_Object *o);
MZ_EXTERN void scheme_wrong_field_contract(Scheme_Object *c_name,
const char *expected,
Scheme_Object *o);
MZ_EXTERN void scheme_arg_mismatch(const char *name, const char *msg, Scheme_Object *o); MZ_EXTERN void scheme_arg_mismatch(const char *name, const char *msg, Scheme_Object *o);
MZ_EXTERN void scheme_contract_error(const char *name, const char *msg, ...); MZ_EXTERN void scheme_contract_error(const char *name, const char *msg, ...);
MZ_EXTERN void scheme_wrong_return_arity(const char *where, MZ_EXTERN void scheme_wrong_return_arity(const char *where,

View File

@ -176,6 +176,9 @@ void (*scheme_wrong_contract)(const char *name, const char *expected,
void (*scheme_wrong_field_type)(Scheme_Object *c_name, void (*scheme_wrong_field_type)(Scheme_Object *c_name,
const char *expected, const char *expected,
Scheme_Object *o); Scheme_Object *o);
void (*scheme_wrong_field_contract)(Scheme_Object *c_name,
const char *expected,
Scheme_Object *o);
void (*scheme_arg_mismatch)(const char *name, const char *msg, Scheme_Object *o); void (*scheme_arg_mismatch)(const char *name, const char *msg, Scheme_Object *o);
void (*scheme_contract_error)(const char *name, const char *msg, ...); void (*scheme_contract_error)(const char *name, const char *msg, ...);
void (*scheme_wrong_return_arity)(const char *where, void (*scheme_wrong_return_arity)(const char *where,

View File

@ -118,6 +118,7 @@
scheme_extension_table->scheme_wrong_type = scheme_wrong_type; scheme_extension_table->scheme_wrong_type = scheme_wrong_type;
scheme_extension_table->scheme_wrong_contract = scheme_wrong_contract; scheme_extension_table->scheme_wrong_contract = scheme_wrong_contract;
scheme_extension_table->scheme_wrong_field_type = scheme_wrong_field_type; scheme_extension_table->scheme_wrong_field_type = scheme_wrong_field_type;
scheme_extension_table->scheme_wrong_field_contract = scheme_wrong_field_contract;
scheme_extension_table->scheme_arg_mismatch = scheme_arg_mismatch; scheme_extension_table->scheme_arg_mismatch = scheme_arg_mismatch;
scheme_extension_table->scheme_contract_error = scheme_contract_error; scheme_extension_table->scheme_contract_error = scheme_contract_error;
scheme_extension_table->scheme_wrong_return_arity = scheme_wrong_return_arity; scheme_extension_table->scheme_wrong_return_arity = scheme_wrong_return_arity;

View File

@ -118,6 +118,7 @@
#define scheme_wrong_type (scheme_extension_table->scheme_wrong_type) #define scheme_wrong_type (scheme_extension_table->scheme_wrong_type)
#define scheme_wrong_contract (scheme_extension_table->scheme_wrong_contract) #define scheme_wrong_contract (scheme_extension_table->scheme_wrong_contract)
#define scheme_wrong_field_type (scheme_extension_table->scheme_wrong_field_type) #define scheme_wrong_field_type (scheme_extension_table->scheme_wrong_field_type)
#define scheme_wrong_field_contract (scheme_extension_table->scheme_wrong_field_contract)
#define scheme_arg_mismatch (scheme_extension_table->scheme_arg_mismatch) #define scheme_arg_mismatch (scheme_extension_table->scheme_arg_mismatch)
#define scheme_contract_error (scheme_extension_table->scheme_contract_error) #define scheme_contract_error (scheme_extension_table->scheme_contract_error)
#define scheme_wrong_return_arity (scheme_extension_table->scheme_wrong_return_arity) #define scheme_wrong_return_arity (scheme_extension_table->scheme_wrong_return_arity)

View File

@ -4995,13 +4995,13 @@ int scheme_is_location(Scheme_Object *o)
static Scheme_Object *check_location_fields(int argc, Scheme_Object **argv) static Scheme_Object *check_location_fields(int argc, Scheme_Object **argv)
{ {
if (SCHEME_TRUEP(argv[1]) && !exact_pos_integer(argv[1])) if (SCHEME_TRUEP(argv[1]) && !exact_pos_integer(argv[1]))
scheme_wrong_field_type(argv[5], "exact positive integer or #f", argv[1]); scheme_wrong_field_contract(argv[5], "(or/c exact-positive-integer? #f)", argv[1]);
if (SCHEME_TRUEP(argv[2]) && !exact_nneg_integer(argv[2])) if (SCHEME_TRUEP(argv[2]) && !exact_nneg_integer(argv[2]))
scheme_wrong_field_type(argv[5], "exact non-negative integer or #f", argv[2]); scheme_wrong_field_contract(argv[5], "(or/c exact-nonnegative-integer #f)", argv[2]);
if (SCHEME_TRUEP(argv[3]) && !exact_pos_integer(argv[3])) if (SCHEME_TRUEP(argv[3]) && !exact_pos_integer(argv[3]))
scheme_wrong_field_type(argv[5], "exact positive integer or #f", argv[3]); scheme_wrong_field_contract(argv[5], "(or/c exact-positive-integer? #f)", argv[3]);
if (SCHEME_TRUEP(argv[4]) && !exact_nneg_integer(argv[4])) if (SCHEME_TRUEP(argv[4]) && !exact_nneg_integer(argv[4]))
scheme_wrong_field_type(argv[5], "exact non-negative integer or #f", argv[4]); scheme_wrong_field_contract(argv[5], "(or/c exact-nonnegative-integer? #f)", argv[4]);
return scheme_values(5, argv); return scheme_values(5, argv);
} }
@ -5023,7 +5023,7 @@ static Scheme_Object *check_arity_at_least_fields(int argc, Scheme_Object **argv
return a; return a;
} }
scheme_wrong_field_type(argv[1], "exact non-negative integer", a); scheme_wrong_field_contract(argv[1], "exact-nonnegative-integer?", a);
return NULL; return NULL;
} }
@ -5033,31 +5033,31 @@ static Scheme_Object *check_date_fields(int argc, Scheme_Object **argv)
a = argv[0]; a = argv[0];
if (!SCHEME_INTP(a) || (SCHEME_INT_VAL(a) < 0) || (SCHEME_INT_VAL(a) > 61)) if (!SCHEME_INTP(a) || (SCHEME_INT_VAL(a) < 0) || (SCHEME_INT_VAL(a) > 61))
scheme_wrong_field_type(argv[10], "exact integer in [0, 61]", a); scheme_wrong_field_contract(argv[10], "(integer-in 0 61)", a);
a = argv[1]; a = argv[1];
if (!SCHEME_INTP(a) || (SCHEME_INT_VAL(a) < 0) || (SCHEME_INT_VAL(a) > 59)) if (!SCHEME_INTP(a) || (SCHEME_INT_VAL(a) < 0) || (SCHEME_INT_VAL(a) > 59))
scheme_wrong_field_type(argv[10], "exact integer in [0, 59]", a); scheme_wrong_field_contract(argv[10], "(integer-in 0 59)", a);
a = argv[2]; a = argv[2];
if (!SCHEME_INTP(a) || (SCHEME_INT_VAL(a) < 0) || (SCHEME_INT_VAL(a) > 23)) if (!SCHEME_INTP(a) || (SCHEME_INT_VAL(a) < 0) || (SCHEME_INT_VAL(a) > 23))
scheme_wrong_field_type(argv[10], "exact integer in [0, 23]", a); scheme_wrong_field_contract(argv[10], "(integer-in 0 23)", a);
a = argv[3]; a = argv[3];
if (!SCHEME_INTP(a) || (SCHEME_INT_VAL(a) < 1) || (SCHEME_INT_VAL(a) > 31)) if (!SCHEME_INTP(a) || (SCHEME_INT_VAL(a) < 1) || (SCHEME_INT_VAL(a) > 31))
scheme_wrong_field_type(argv[10], "exact integer in [1, 31]", a); scheme_wrong_field_contract(argv[10], "(integer-in 1 31)", a);
a = argv[4]; a = argv[4];
if (!SCHEME_INTP(a) || (SCHEME_INT_VAL(a) < 1) || (SCHEME_INT_VAL(a) > 12)) if (!SCHEME_INTP(a) || (SCHEME_INT_VAL(a) < 1) || (SCHEME_INT_VAL(a) > 12))
scheme_wrong_field_type(argv[10], "exact integer in [1, 12]", a); scheme_wrong_field_contract(argv[10], "(integer-in 1 12)", a);
a = argv[5]; a = argv[5];
if (!SCHEME_INTP(a) && !SCHEME_BIGNUMP(a)) if (!SCHEME_INTP(a) && !SCHEME_BIGNUMP(a))
scheme_wrong_field_type(argv[10], "exact integer", a); scheme_wrong_field_contract(argv[10], "exact-integer?", a);
a = argv[6]; a = argv[6];
if (!SCHEME_INTP(a) || (SCHEME_INT_VAL(a) < 0) || (SCHEME_INT_VAL(a) > 6)) if (!SCHEME_INTP(a) || (SCHEME_INT_VAL(a) < 0) || (SCHEME_INT_VAL(a) > 6))
scheme_wrong_field_type(argv[10], "exact integer in [0, 6]", a); scheme_wrong_field_contract(argv[10], "(integer-in 0 6)", a);
a = argv[7]; a = argv[7];
if (!SCHEME_INTP(a) || (SCHEME_INT_VAL(a) < 0) || (SCHEME_INT_VAL(a) > 365)) if (!SCHEME_INTP(a) || (SCHEME_INT_VAL(a) < 0) || (SCHEME_INT_VAL(a) > 365))
scheme_wrong_field_type(argv[10], "exact integer in [0, 365]", a); scheme_wrong_field_contract(argv[10], "(integer-in 0 365)", a);
a = argv[9]; a = argv[9];
if (!SCHEME_INTP(a) && !SCHEME_BIGNUMP(a)) if (!SCHEME_INTP(a) && !SCHEME_BIGNUMP(a))
scheme_wrong_field_type(argv[10], "exact integer", a); scheme_wrong_field_contract(argv[10], "exact-integer?", a);
/* Normalize dst? boolean: */ /* Normalize dst? boolean: */
memcpy(args, argv, sizeof(Scheme_Object *) * 10); memcpy(args, argv, sizeof(Scheme_Object *) * 10);
@ -5073,11 +5073,11 @@ static Scheme_Object *check_date_star_fields(int argc, Scheme_Object **argv)
a = argv[10]; a = argv[10];
if (!SCHEME_INTP(a) || (SCHEME_INT_VAL(a) < 0) if (!SCHEME_INTP(a) || (SCHEME_INT_VAL(a) < 0)
|| (SCHEME_INT_VAL(a) > 999999999)) || (SCHEME_INT_VAL(a) > 999999999))
scheme_wrong_field_type(argv[12], "exact integer in [0, 999999999]", a); scheme_wrong_field_contract(argv[12], "(integer-in 0 999999999)", a);
a = argv[11]; a = argv[11];
if (!SCHEME_CHAR_STRINGP(a)) if (!SCHEME_CHAR_STRINGP(a))
scheme_wrong_field_type(argv[12], "string", a); scheme_wrong_field_contract(argv[12], "string?", a);
memcpy(args, argv, sizeof(Scheme_Object *) * 12); memcpy(args, argv, sizeof(Scheme_Object *) * 12);
if (!SCHEME_IMMUTABLEP(argv[11])) { if (!SCHEME_IMMUTABLEP(argv[11])) {