reg0 = ecl_apply_from_stack_frame((cl_object)&frame, fun); \
the_env->stack_top -= __n; }
+static void too_many_arguments(cl_object bytecodes, cl_object frame) ecl_attr_noreturn;
+static void odd_number_of_keywords(cl_object bytecodes) ecl_attr_noreturn;
+static void unknown_keyword(cl_object bytecodes, cl_object frame) ecl_attr_noreturn;
+
+static void
+too_many_arguments(register cl_object bytecodes, register cl_object frame)
+{
+ FEprogram_error("Too many arguments passed to "
+ "function ~A~&Argument list: ~S",
+ 2, bytecodes, cl_apply(2, @'list', frame));
+}
+
+static void
+odd_number_of_keywords(register cl_object bytecodes)
+{
+ FEprogram_error("Function ~A called with odd number "
+ "of keyword arguments.",
+ 1, bytecodes);
+}
+
+static void
+unknown_keyword(register cl_object bytecodes, register cl_object frame)
+{
+ FEprogram_error("Unknown keyword argument passed to function ~S.~&"
+ "Argument list: ~S", 2, bytecodes,
+ cl_apply(2, @'list', frame));
+}
+
/* -------------------- THE INTERPRETER -------------------- */
cl_object
*/
CASE(OP_NOMORE); {
if (ecl_unlikely(frame_index < frame->frame.size))
- FEprogram_error("Too many arguments passed to "
- "function ~A~&Argument list: ~S",
- 2, bytecodes, cl_apply(2, @'list', frame));
+ too_many_arguments(bytecodes, frame);
THREAD_NEXT;
}
/* OP_POPREST
count = frame->frame.size - frame_index;
last = first + count;
if (ecl_unlikely(count & 1)) {
- FEprogram_error("Function ~A called with odd number "
- "of keyword arguments.",
- 1, bytecodes);
+ odd_number_of_keywords(bytecodes);
}
aok = ECL_CONS_CAR(keys_list);
for (; (keys_list = ECL_CONS_CDR(keys_list), !Null(keys_list)); ) {
}
}
if (ecl_unlikely(count && (aok & 1) == 0)) {
- FEprogram_error("Unknown keyword argument "
- "passed to function ~S.~&"
- "Argument list: ~S",
- 2, bytecodes,
- cl_apply(2, @'list', frame));
+ unknown_keyword(bytecodes, frame);
}
}
}