py: Implement UnicodeError.
Still too shy to implement UnicodeEncodeError which was really needed for
micropython-lib case.
diff --git a/py/modbuiltins.c b/py/modbuiltins.c
index 594f385..c7323af 100644
--- a/py/modbuiltins.c
+++ b/py/modbuiltins.c
@@ -683,6 +683,9 @@
{ 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 3a9a643..db42e79 100644
--- a/py/obj.h
+++ b/py/obj.h
@@ -369,6 +369,7 @@
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 858804d..824c9b0 100644
--- a/py/objexcept.c
+++ b/py/objexcept.c
@@ -249,7 +249,11 @@
//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 77514f5..88c0d5a 100644
--- a/py/qstrdefs.h
+++ b/py/qstrdefs.h
@@ -137,6 +137,9 @@
Q(UnboundLocalError)
Q(ValueError)
Q(ZeroDivisionError)
+#if MICROPY_PY_BUILTINS_STR_UNICODE
+Q(UnicodeError)
+#endif
Q(None)
Q(False)