improve error message for arith op
This commit is contained in:
parent
e67996f8af
commit
f783640240
|
@ -558,9 +558,13 @@ analyze_quote(analyze_state *state, pic_value obj)
|
||||||
return pic_list2(pic, pic_obj_value(pic->sQUOTE), pic_list_ref(pic, obj, 1));
|
return pic_list2(pic, pic_obj_value(pic->sQUOTE), pic_list_ref(pic, obj, 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
#define ARGC_ASSERT_GE(n) do { \
|
|
||||||
|
#define ARGC_ASSERT_GE(n, name) do { \
|
||||||
if (pic_length(pic, obj) < (n) + 1) { \
|
if (pic_length(pic, obj) < (n) + 1) { \
|
||||||
pic_errorf(pic, "wrong number of arguments"); \
|
pic_errorf(pic, \
|
||||||
|
#name ": wrong number of arguments (%d for equal to or more than %d)", \
|
||||||
|
pic_length(pic, obj) - 1, \
|
||||||
|
n); \
|
||||||
} \
|
} \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
|
@ -572,13 +576,14 @@ analyze_quote(analyze_state *state, pic_value obj)
|
||||||
} \
|
} \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
|
|
||||||
static pic_value
|
static pic_value
|
||||||
analyze_add(analyze_state *state, pic_value obj, bool tailpos)
|
analyze_add(analyze_state *state, pic_value obj, bool tailpos)
|
||||||
{
|
{
|
||||||
pic_state *pic = state->pic;
|
pic_state *pic = state->pic;
|
||||||
pic_value args, arg;
|
pic_value args, arg;
|
||||||
|
|
||||||
ARGC_ASSERT_GE(0);
|
ARGC_ASSERT_GE(0, "+");
|
||||||
switch (pic_length(pic, obj)) {
|
switch (pic_length(pic, obj)) {
|
||||||
case 1:
|
case 1:
|
||||||
return pic_list2(pic, pic_obj_value(pic->sQUOTE), pic_int_value(0));
|
return pic_list2(pic, pic_obj_value(pic->sQUOTE), pic_int_value(0));
|
||||||
|
@ -597,7 +602,7 @@ analyze_sub(analyze_state *state, pic_value obj)
|
||||||
pic_state *pic = state->pic;
|
pic_state *pic = state->pic;
|
||||||
pic_value args, arg;
|
pic_value args, arg;
|
||||||
|
|
||||||
ARGC_ASSERT_GE(1);
|
ARGC_ASSERT_GE(1, "-");
|
||||||
switch (pic_length(pic, obj)) {
|
switch (pic_length(pic, obj)) {
|
||||||
case 2:
|
case 2:
|
||||||
return pic_list2(pic, pic_obj_value(pic->sMINUS),
|
return pic_list2(pic, pic_obj_value(pic->sMINUS),
|
||||||
|
@ -615,7 +620,7 @@ analyze_mul(analyze_state *state, pic_value obj, bool tailpos)
|
||||||
pic_state *pic = state->pic;
|
pic_state *pic = state->pic;
|
||||||
pic_value args, arg;
|
pic_value args, arg;
|
||||||
|
|
||||||
ARGC_ASSERT_GE(0);
|
ARGC_ASSERT_GE(0, "*");
|
||||||
switch (pic_length(pic, obj)) {
|
switch (pic_length(pic, obj)) {
|
||||||
case 1:
|
case 1:
|
||||||
return pic_list2(pic, pic_obj_value(pic->sQUOTE), pic_int_value(1));
|
return pic_list2(pic, pic_obj_value(pic->sQUOTE), pic_int_value(1));
|
||||||
|
@ -634,7 +639,7 @@ analyze_div(analyze_state *state, pic_value obj)
|
||||||
pic_state *pic = state->pic;
|
pic_state *pic = state->pic;
|
||||||
pic_value args, arg;
|
pic_value args, arg;
|
||||||
|
|
||||||
ARGC_ASSERT_GE(1);
|
ARGC_ASSERT_GE(1, "/");
|
||||||
switch (pic_length(pic, obj)) {
|
switch (pic_length(pic, obj)) {
|
||||||
case 2:
|
case 2:
|
||||||
args = pic_cdr(pic, obj);
|
args = pic_cdr(pic, obj);
|
||||||
|
|
Loading…
Reference in New Issue