diff options
author | Jim Mussared <jim.mussared@gmail.com> | 2019-09-26 22:52:04 +1000 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2020-04-05 14:11:51 +1000 |
commit | a9a745e4b4838749a47857f1d0c95de52dc85f58 (patch) | |
tree | 60469e58476c5a68999ad0a2e8d58dbca8a6abb8 /py/argcheck.c | |
parent | 312c699491830daacd33f032a6d6fc6cc6ff0c96 (diff) | |
download | micropython-a9a745e4b4838749a47857f1d0c95de52dc85f58.tar.gz micropython-a9a745e4b4838749a47857f1d0c95de52dc85f58.zip |
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.
Diffstat (limited to 'py/argcheck.c')
-rw-r--r-- | py/argcheck.c | 86 |
1 files changed, 43 insertions, 43 deletions
diff --git a/py/argcheck.c b/py/argcheck.c index 87e13bcffe..88c4b8bf33 100644 --- a/py/argcheck.c +++ b/py/argcheck.c @@ -38,40 +38,40 @@ void mp_arg_check_num_sig(size_t n_args, size_t n_kw, uint32_t sig) { size_t n_args_max = (sig >> 1) & 0xffff; if (n_kw && !takes_kw) { - if (MICROPY_ERROR_REPORTING == MICROPY_ERROR_REPORTING_TERSE) { - mp_arg_error_terse_mismatch(); - } else { - mp_raise_TypeError("function doesn't take keyword arguments"); - } + #if MICROPY_ERROR_REPORTING == MICROPY_ERROR_REPORTING_TERSE + mp_arg_error_terse_mismatch(); + #else + mp_raise_TypeError("function doesn't take keyword arguments"); + #endif } if (n_args_min == n_args_max) { if (n_args != n_args_min) { - if (MICROPY_ERROR_REPORTING == MICROPY_ERROR_REPORTING_TERSE) { - mp_arg_error_terse_mismatch(); - } else { - mp_raise_msg_varg(&mp_type_TypeError, - "function takes %d positional arguments but %d were given", - n_args_min, n_args); - } + #if MICROPY_ERROR_REPORTING == MICROPY_ERROR_REPORTING_TERSE + mp_arg_error_terse_mismatch(); + #else + mp_raise_msg_varg(&mp_type_TypeError, + "function takes %d positional arguments but %d were given", + n_args_min, n_args); + #endif } } else { if (n_args < n_args_min) { - if (MICROPY_ERROR_REPORTING == MICROPY_ERROR_REPORTING_TERSE) { - mp_arg_error_terse_mismatch(); - } else { - mp_raise_msg_varg(&mp_type_TypeError, - "function missing %d required positional arguments", - n_args_min - n_args); - } + #if MICROPY_ERROR_REPORTING == MICROPY_ERROR_REPORTING_TERSE + mp_arg_error_terse_mismatch(); + #else + mp_raise_msg_varg(&mp_type_TypeError, + "function missing %d required positional arguments", + n_args_min - n_args); + #endif } else if (n_args > n_args_max) { - if (MICROPY_ERROR_REPORTING == MICROPY_ERROR_REPORTING_TERSE) { - mp_arg_error_terse_mismatch(); - } else { - mp_raise_msg_varg(&mp_type_TypeError, - "function expected at most %d arguments, got %d", - n_args_max, n_args); - } + #if MICROPY_ERROR_REPORTING == MICROPY_ERROR_REPORTING_TERSE + mp_arg_error_terse_mismatch(); + #else + mp_raise_msg_varg(&mp_type_TypeError, + "function expected at most %d arguments, got %d", + n_args_max, n_args); + #endif } } } @@ -90,11 +90,11 @@ void mp_arg_parse_all(size_t n_pos, const mp_obj_t *pos, mp_map_t *kws, size_t n mp_map_elem_t *kw = mp_map_lookup(kws, MP_OBJ_NEW_QSTR(allowed[i].qst), MP_MAP_LOOKUP); if (kw == NULL) { if (allowed[i].flags & MP_ARG_REQUIRED) { - if (MICROPY_ERROR_REPORTING == MICROPY_ERROR_REPORTING_TERSE) { - mp_arg_error_terse_mismatch(); - } else { - mp_raise_msg_varg(&mp_type_TypeError, "'%q' argument required", allowed[i].qst); - } + #if MICROPY_ERROR_REPORTING == MICROPY_ERROR_REPORTING_TERSE + mp_arg_error_terse_mismatch(); + #else + mp_raise_msg_varg(&mp_type_TypeError, "'%q' argument required", allowed[i].qst); + #endif } out_vals[i] = allowed[i].defval; continue; @@ -114,20 +114,20 @@ void mp_arg_parse_all(size_t n_pos, const mp_obj_t *pos, mp_map_t *kws, size_t n } if (pos_found < n_pos) { extra_positional: - if (MICROPY_ERROR_REPORTING == MICROPY_ERROR_REPORTING_TERSE) { - mp_arg_error_terse_mismatch(); - } else { - // TODO better error message - mp_raise_TypeError("extra positional arguments given"); - } + #if MICROPY_ERROR_REPORTING == MICROPY_ERROR_REPORTING_TERSE + mp_arg_error_terse_mismatch(); + #else + // TODO better error message + mp_raise_TypeError("extra positional arguments given"); + #endif } if (kws_found < kws->used) { - if (MICROPY_ERROR_REPORTING == MICROPY_ERROR_REPORTING_TERSE) { - mp_arg_error_terse_mismatch(); - } else { - // TODO better error message - mp_raise_TypeError("extra keyword arguments given"); - } + #if MICROPY_ERROR_REPORTING == MICROPY_ERROR_REPORTING_TERSE + mp_arg_error_terse_mismatch(); + #else + // TODO better error message + mp_raise_TypeError("extra keyword arguments given"); + #endif } } |