summaryrefslogtreecommitdiff
path: root/py
diff options
context:
space:
mode:
authorTerri Oda <terri@toybox.ca>2019-05-08 11:54:08 -0700
committerTerri Oda <terri@toybox.ca>2019-05-08 11:54:08 -0700
commita9b05d37d70ac38fea2cdceffc28ce354f204200 (patch)
tree8ccfc7a40db00f60181901e47113244888d47453 /py
parent1a8e50c773946a683541b9954e38f69b4b346dc2 (diff)
Make status light flash blue for incompatible mpy (fixes #1369)
Diffstat (limited to 'py')
-rw-r--r--py/modbuiltins.c1
-rw-r--r--py/obj.h1
-rw-r--r--py/objexcept.c1
-rw-r--r--py/persistentcode.c2
-rw-r--r--py/runtime.c4
-rw-r--r--py/runtime.h1
6 files changed, 9 insertions, 1 deletions
diff --git a/py/modbuiltins.c b/py/modbuiltins.c
index b4f4fca34..124dcd05a 100644
--- a/py/modbuiltins.c
+++ b/py/modbuiltins.c
@@ -722,6 +722,7 @@ STATIC const mp_rom_map_elem_t mp_module_builtins_globals_table[] = {
{ MP_ROM_QSTR(MP_QSTR_KeyError), MP_ROM_PTR(&mp_type_KeyError) },
{ MP_ROM_QSTR(MP_QSTR_LookupError), MP_ROM_PTR(&mp_type_LookupError) },
{ MP_ROM_QSTR(MP_QSTR_MemoryError), MP_ROM_PTR(&mp_type_MemoryError) },
+ { MP_ROM_QSTR(MP_QSTR_MpyError), MP_ROM_PTR(&mp_type_MpyError) },
{ MP_ROM_QSTR(MP_QSTR_NameError), MP_ROM_PTR(&mp_type_NameError) },
{ MP_ROM_QSTR(MP_QSTR_NotImplementedError), MP_ROM_PTR(&mp_type_NotImplementedError) },
{ MP_ROM_QSTR(MP_QSTR_OSError), MP_ROM_PTR(&mp_type_OSError) },
diff --git a/py/obj.h b/py/obj.h
index ab41a1b40..ae2bff190 100644
--- a/py/obj.h
+++ b/py/obj.h
@@ -599,6 +599,7 @@ extern const mp_obj_type_t mp_type_ReloadException;
extern const mp_obj_type_t mp_type_KeyError;
extern const mp_obj_type_t mp_type_LookupError;
extern const mp_obj_type_t mp_type_MemoryError;
+extern const mp_obj_type_t mp_type_MpyError;
extern const mp_obj_type_t mp_type_NameError;
extern const mp_obj_type_t mp_type_NotImplementedError;
extern const mp_obj_type_t mp_type_OSError;
diff --git a/py/objexcept.c b/py/objexcept.c
index 0e9255db7..45af4cc2d 100644
--- a/py/objexcept.c
+++ b/py/objexcept.c
@@ -298,6 +298,7 @@ MP_DEFINE_EXCEPTION(Exception, BaseException)
MP_DEFINE_EXCEPTION(NotImplementedError, RuntimeError)
MP_DEFINE_EXCEPTION(SyntaxError, Exception)
MP_DEFINE_EXCEPTION(IndentationError, SyntaxError)
+ MP_DEFINE_EXCEPTION(MpyError, Exception)
/*
MP_DEFINE_EXCEPTION(TabError, IndentationError)
*/
diff --git a/py/persistentcode.c b/py/persistentcode.c
index b44b5e38d..f6de782ed 100644
--- a/py/persistentcode.c
+++ b/py/persistentcode.c
@@ -220,7 +220,7 @@ mp_raw_code_t *mp_raw_code_load(mp_reader_t *reader) {
|| header[1] != MPY_VERSION
|| header[2] != MPY_FEATURE_FLAGS
|| header[3] > mp_small_int_bits()) {
- mp_raise_ValueError(translate("Incompatible .mpy file. Please update all .mpy files. See http://adafru.it/mpy-update for more info."));
+ mp_raise_MpyError(translate("Incompatible .mpy file. Please update all .mpy files. See http://adafru.it/mpy-update for more info."));
}
mp_raw_code_t *rc = load_raw_code(reader);
reader->close(reader->data);
diff --git a/py/runtime.c b/py/runtime.c
index 1e0100337..1a75a3870 100644
--- a/py/runtime.c
+++ b/py/runtime.c
@@ -1598,6 +1598,10 @@ NORETURN void mp_raise_NotImplementedError_varg(const compressed_string_t *fmt,
nlr_raise(exception);
}
+NORETURN void mp_raise_MpyError(const compressed_string_t *msg) {
+ mp_raise_msg(&mp_type_MpyError, msg);
+}
+
#if MICROPY_STACK_CHECK || MICROPY_ENABLE_PYSTACK
NORETURN void mp_raise_recursion_depth(void) {
mp_raise_RuntimeError(translate("maximum recursion depth exceeded"));
diff --git a/py/runtime.h b/py/runtime.h
index 2577c9dd5..c5a94b0b1 100644
--- a/py/runtime.h
+++ b/py/runtime.h
@@ -163,6 +163,7 @@ NORETURN void mp_raise_OSError_msg(const compressed_string_t *msg);
NORETURN void mp_raise_OSError_msg_varg(const compressed_string_t *fmt, ...);
NORETURN void mp_raise_NotImplementedError(const compressed_string_t *msg);
NORETURN void mp_raise_NotImplementedError_varg(const compressed_string_t *fmt, ...);
+NORETURN void mp_raise_MpyError(const compressed_string_t *msg);
NORETURN void mp_raise_recursion_depth(void);
#if MICROPY_BUILTIN_METHOD_CHECK_SELF_ARG