py/objstr: Fix error type for badly formatted format specifier.

Was KeyError, should be ValueError.
This commit is contained in:
Damien George 2015-08-26 15:42:25 +01:00
parent 51b9a0d0c4
commit 7ef75f9f75
2 changed files with 11 additions and 1 deletions

View File

@ -1065,7 +1065,12 @@ mp_obj_t mp_obj_str_format(mp_uint_t n_args, const mp_obj_t *args, mp_map_t *kwa
type = *s++;
}
if (*s) {
nlr_raise(mp_obj_new_exception_msg(&mp_type_KeyError, "Invalid conversion specification"));
if (MICROPY_ERROR_REPORTING == MICROPY_ERROR_REPORTING_TERSE) {
terse_str_format_value_error();
} else {
nlr_raise(mp_obj_new_exception_msg(&mp_type_ValueError,
"invalid format specifier"));
}
}
vstr_free(format_spec);
format_spec = NULL;

View File

@ -194,3 +194,8 @@ try:
'{0:s}'.format(1)
except ValueError:
print('ValueError')
try:
'{:*"1"}'.format('zz')
except ValueError:
print('ValueError')