@@ -90,6 +90,7 @@ static inline void *m_realloc_dyn(void *ptr, size_t new_num_bytes) {
90
90
#define mp_type_bytes (*(mp_obj_type_t *)(mp_load_global(MP_QSTR_bytes)))
91
91
#define mp_type_tuple (*((mp_obj_base_t *)mp_const_empty_tuple)->type)
92
92
#define mp_type_list (*mp_fun_table.type_list)
93
+ #define mp_type_Exception (*mp_fun_table.type_Exception)
93
94
#define mp_type_EOFError (*(mp_obj_type_t *)(mp_load_global(MP_QSTR_EOFError)))
94
95
#define mp_type_IndexError (*(mp_obj_type_t *)(mp_load_global(MP_QSTR_IndexError)))
95
96
#define mp_type_KeyError (*(mp_obj_type_t *)(mp_load_global(MP_QSTR_KeyError)))
@@ -236,6 +237,10 @@ static inline void *mp_obj_malloc_helper_dyn(size_t num_bytes, const mp_obj_type
236
237
/******************************************************************************/
237
238
// Exceptions
238
239
240
+ #define mp_obj_exception_make_new (MP_OBJ_TYPE_GET_SLOT(&mp_type_Exception, make_new))
241
+ #define mp_obj_exception_print (MP_OBJ_TYPE_GET_SLOT(&mp_type_Exception, print))
242
+ #define mp_obj_exception_attr (MP_OBJ_TYPE_GET_SLOT(&mp_type_Exception, attr))
243
+
239
244
#define mp_obj_new_exception (o ) ((mp_obj_t)(o)) // Assumes returned object will be raised, will create instance then
240
245
#define mp_obj_new_exception_arg1 (e_type , arg ) (mp_obj_new_exception_arg1_dyn((e_type), (arg)))
241
246
@@ -263,6 +268,16 @@ static inline void mp_raise_OSError_dyn(int er) {
263
268
nlr_raise (mp_call_function_n_kw (mp_load_global (MP_QSTR_OSError ), 1 , 0 , & args [0 ]));
264
269
}
265
270
271
+ static inline void mp_obj_exception_init (mp_obj_full_type_t * exc , qstr name , const mp_obj_type_t * base ) {
272
+ exc -> base .type = & mp_type_type ;
273
+ exc -> flags = MP_TYPE_FLAG_NONE ;
274
+ exc -> name = name ;
275
+ MP_OBJ_TYPE_SET_SLOT (exc , make_new , mp_obj_exception_make_new , 0 );
276
+ MP_OBJ_TYPE_SET_SLOT (exc , print , mp_obj_exception_print , 1 );
277
+ MP_OBJ_TYPE_SET_SLOT (exc , attr , mp_obj_exception_attr , 2 );
278
+ MP_OBJ_TYPE_SET_SLOT (exc , parent , base , 3 );
279
+ }
280
+
266
281
/******************************************************************************/
267
282
// Floating point
268
283
0 commit comments