py: Use preprocessor to detect error reporting level (terse/detailed).
Instead of compiler-level if-logic. This is necessary to know what error strings are included in the build at the preprocessor stage, so that string compression can be implemented.
This commit is contained in:
committed by
Damien George
parent
312c699491
commit
a9a745e4b4
@@ -95,17 +95,17 @@ STATIC mp_obj_t namedtuple_make_new(const mp_obj_type_t *type_in, size_t n_args,
|
||||
const mp_obj_namedtuple_type_t *type = (const mp_obj_namedtuple_type_t *)type_in;
|
||||
size_t num_fields = type->n_fields;
|
||||
if (n_args + n_kw != num_fields) {
|
||||
if (MICROPY_ERROR_REPORTING == MICROPY_ERROR_REPORTING_TERSE) {
|
||||
mp_arg_error_terse_mismatch();
|
||||
} else if (MICROPY_ERROR_REPORTING == MICROPY_ERROR_REPORTING_NORMAL) {
|
||||
mp_raise_msg_varg(&mp_type_TypeError,
|
||||
"function takes %d positional arguments but %d were given",
|
||||
num_fields, n_args + n_kw);
|
||||
} else if (MICROPY_ERROR_REPORTING == MICROPY_ERROR_REPORTING_DETAILED) {
|
||||
mp_raise_msg_varg(&mp_type_TypeError,
|
||||
"%q() takes %d positional arguments but %d were given",
|
||||
type->base.name, num_fields, n_args + n_kw);
|
||||
}
|
||||
#if MICROPY_ERROR_REPORTING == MICROPY_ERROR_REPORTING_TERSE
|
||||
mp_arg_error_terse_mismatch();
|
||||
#elif MICROPY_ERROR_REPORTING == MICROPY_ERROR_REPORTING_NORMAL
|
||||
mp_raise_msg_varg(&mp_type_TypeError,
|
||||
"function takes %d positional arguments but %d were given",
|
||||
num_fields, n_args + n_kw);
|
||||
#elif MICROPY_ERROR_REPORTING == MICROPY_ERROR_REPORTING_DETAILED
|
||||
mp_raise_msg_varg(&mp_type_TypeError,
|
||||
"%q() takes %d positional arguments but %d were given",
|
||||
type->base.name, num_fields, n_args + n_kw);
|
||||
#endif
|
||||
}
|
||||
|
||||
// Create a tuple and set the type to this namedtuple
|
||||
@@ -121,19 +121,19 @@ STATIC mp_obj_t namedtuple_make_new(const mp_obj_type_t *type_in, size_t n_args,
|
||||
qstr kw = mp_obj_str_get_qstr(args[i]);
|
||||
size_t id = mp_obj_namedtuple_find_field(type, kw);
|
||||
if (id == (size_t)-1) {
|
||||
if (MICROPY_ERROR_REPORTING == MICROPY_ERROR_REPORTING_TERSE) {
|
||||
mp_arg_error_terse_mismatch();
|
||||
} else {
|
||||
mp_raise_msg_varg(&mp_type_TypeError, "unexpected keyword argument '%q'", kw);
|
||||
}
|
||||
#if MICROPY_ERROR_REPORTING == MICROPY_ERROR_REPORTING_TERSE
|
||||
mp_arg_error_terse_mismatch();
|
||||
#else
|
||||
mp_raise_msg_varg(&mp_type_TypeError, "unexpected keyword argument '%q'", kw);
|
||||
#endif
|
||||
}
|
||||
if (tuple->items[id] != MP_OBJ_NULL) {
|
||||
if (MICROPY_ERROR_REPORTING == MICROPY_ERROR_REPORTING_TERSE) {
|
||||
mp_arg_error_terse_mismatch();
|
||||
} else {
|
||||
mp_raise_msg_varg(&mp_type_TypeError,
|
||||
"function got multiple values for argument '%q'", kw);
|
||||
}
|
||||
#if MICROPY_ERROR_REPORTING == MICROPY_ERROR_REPORTING_TERSE
|
||||
mp_arg_error_terse_mismatch();
|
||||
#else
|
||||
mp_raise_msg_varg(&mp_type_TypeError,
|
||||
"function got multiple values for argument '%q'", kw);
|
||||
#endif
|
||||
}
|
||||
tuple->items[id] = args[i + 1];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user