diff --git a/py/modbuiltins.c b/py/modbuiltins.c index 594f385f4c..c7323afaad 100644 --- a/py/modbuiltins.c +++ b/py/modbuiltins.c @@ -683,6 +683,9 @@ STATIC const mp_map_elem_t mp_module_builtins_globals_table[] = { { MP_OBJ_NEW_QSTR(MP_QSTR_SyntaxError), (mp_obj_t)&mp_type_SyntaxError }, { MP_OBJ_NEW_QSTR(MP_QSTR_SystemExit), (mp_obj_t)&mp_type_SystemExit }, { MP_OBJ_NEW_QSTR(MP_QSTR_TypeError), (mp_obj_t)&mp_type_TypeError }, + #if MICROPY_PY_BUILTINS_STR_UNICODE + { MP_OBJ_NEW_QSTR(MP_QSTR_UnicodeError), (mp_obj_t)&mp_type_UnicodeError }, + #endif { MP_OBJ_NEW_QSTR(MP_QSTR_ValueError), (mp_obj_t)&mp_type_ValueError }, { MP_OBJ_NEW_QSTR(MP_QSTR_ZeroDivisionError), (mp_obj_t)&mp_type_ZeroDivisionError }, // Somehow CPython managed to have OverflowError not inherit from ValueError ;-/ diff --git a/py/obj.h b/py/obj.h index 3a9a6431c2..db42e795a2 100644 --- a/py/obj.h +++ b/py/obj.h @@ -369,6 +369,7 @@ extern const mp_obj_type_t mp_type_StopIteration; extern const mp_obj_type_t mp_type_SyntaxError; extern const mp_obj_type_t mp_type_SystemExit; extern const mp_obj_type_t mp_type_TypeError; +extern const mp_obj_type_t mp_type_UnicodeError; extern const mp_obj_type_t mp_type_ValueError; extern const mp_obj_type_t mp_type_ZeroDivisionError; diff --git a/py/objexcept.c b/py/objexcept.c index 858804d0b7..824c9b0ad7 100644 --- a/py/objexcept.c +++ b/py/objexcept.c @@ -249,7 +249,11 @@ MP_DEFINE_EXCEPTION(Exception, BaseException) //MP_DEFINE_EXCEPTION(SystemError, Exception) MP_DEFINE_EXCEPTION(TypeError, Exception) MP_DEFINE_EXCEPTION(ValueError, Exception) - //TODO: Implement UnicodeErrors which take arguments +#if MICROPY_PY_BUILTINS_STR_UNICODE + MP_DEFINE_EXCEPTION_BASE(ValueError) + MP_DEFINE_EXCEPTION(UnicodeError, ValueError) + //TODO: Implement more UnicodeError subclasses which take arguments +#endif /* MP_DEFINE_EXCEPTION(Warning, Exception) MP_DEFINE_EXCEPTION_BASE(Warning) diff --git a/py/qstrdefs.h b/py/qstrdefs.h index 77514f521b..88c0d5a3ef 100644 --- a/py/qstrdefs.h +++ b/py/qstrdefs.h @@ -137,6 +137,9 @@ Q(TypeError) Q(UnboundLocalError) Q(ValueError) Q(ZeroDivisionError) +#if MICROPY_PY_BUILTINS_STR_UNICODE +Q(UnicodeError) +#endif Q(None) Q(False)