From c63f984647cb69147359440db19d417dfecab2fa Mon Sep 17 00:00:00 2001
From: Damien George <damien.p.george@gmail.com>
Date: Thu, 27 Mar 2014 23:49:06 +0000
Subject: [PATCH] py: Thin out predefined exceptions.

Only exceptions that are actually used are left prefedined.  Hierarchy
is still there, and removed exceptions are just commented out.
---
 py/builtintables.c |  3 ---
 py/obj.h           |  3 ---
 py/objexcept.c     | 19 +++++++++++--------
 3 files changed, 11 insertions(+), 14 deletions(-)

diff --git a/py/builtintables.c b/py/builtintables.c
index fd94f7678..839d5ba81 100644
--- a/py/builtintables.c
+++ b/py/builtintables.c
@@ -84,10 +84,8 @@ STATIC const mp_builtin_elem_t builtin_object_table[] = {
     { MP_QSTR_ArithmeticError, (mp_obj_t)&mp_type_ArithmeticError },
     { MP_QSTR_AssertionError, (mp_obj_t)&mp_type_AssertionError },
     { MP_QSTR_AttributeError, (mp_obj_t)&mp_type_AttributeError },
-    { MP_QSTR_BufferError, (mp_obj_t)&mp_type_BufferError },
     { MP_QSTR_EOFError, (mp_obj_t)&mp_type_EOFError },
     { MP_QSTR_Exception, (mp_obj_t)&mp_type_Exception },
-    { MP_QSTR_FloatingPointError, (mp_obj_t)&mp_type_FloatingPointError },
     { MP_QSTR_GeneratorExit, (mp_obj_t)&mp_type_GeneratorExit },
     { MP_QSTR_IOError, (mp_obj_t)&mp_type_IOError },
     { MP_QSTR_ImportError, (mp_obj_t)&mp_type_ImportError },
@@ -105,7 +103,6 @@ STATIC const mp_builtin_elem_t builtin_object_table[] = {
     { MP_QSTR_SyntaxError, (mp_obj_t)&mp_type_SyntaxError },
     { MP_QSTR_SystemError, (mp_obj_t)&mp_type_SystemError },
     { MP_QSTR_TypeError, (mp_obj_t)&mp_type_TypeError },
-    { MP_QSTR_UnboundLocalError, (mp_obj_t)&mp_type_UnboundLocalError },
     { MP_QSTR_ValueError, (mp_obj_t)&mp_type_ValueError },
     { 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 f816b8544..af38253c5 100644
--- a/py/obj.h
+++ b/py/obj.h
@@ -203,10 +203,8 @@ extern const mp_obj_type_t mp_type_BaseException;
 extern const mp_obj_type_t mp_type_ArithmeticError;
 extern const mp_obj_type_t mp_type_AssertionError;
 extern const mp_obj_type_t mp_type_AttributeError;
-extern const mp_obj_type_t mp_type_BufferError;
 extern const mp_obj_type_t mp_type_EOFError;
 extern const mp_obj_type_t mp_type_Exception;
-extern const mp_obj_type_t mp_type_FloatingPointError;
 extern const mp_obj_type_t mp_type_GeneratorExit;
 extern const mp_obj_type_t mp_type_IOError;
 extern const mp_obj_type_t mp_type_ImportError;
@@ -224,7 +222,6 @@ 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_SystemError;
 extern const mp_obj_type_t mp_type_TypeError;
-extern const mp_obj_type_t mp_type_UnboundLocalError;
 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 facf209df..71874751b 100644
--- a/py/objexcept.c
+++ b/py/objexcept.c
@@ -112,12 +112,12 @@ MP_DEFINE_EXCEPTION(Exception, BaseException)
   MP_DEFINE_EXCEPTION(StopIteration, Exception)
   MP_DEFINE_EXCEPTION(ArithmeticError, Exception)
     MP_DEFINE_EXCEPTION_BASE(ArithmeticError)
-    MP_DEFINE_EXCEPTION(FloatingPointError, ArithmeticError)
+    //MP_DEFINE_EXCEPTION(FloatingPointError, ArithmeticError)
     MP_DEFINE_EXCEPTION(OverflowError, ArithmeticError)
     MP_DEFINE_EXCEPTION(ZeroDivisionError, ArithmeticError)
   MP_DEFINE_EXCEPTION(AssertionError, Exception)
   MP_DEFINE_EXCEPTION(AttributeError, Exception)
-  MP_DEFINE_EXCEPTION(BufferError, Exception)
+  //MP_DEFINE_EXCEPTION(BufferError, Exception)
   //MP_DEFINE_EXCEPTION(EnvironmentError, Exception)
   MP_DEFINE_EXCEPTION(EOFError, Exception)
   MP_DEFINE_EXCEPTION(ImportError, Exception)
@@ -129,11 +129,11 @@ MP_DEFINE_EXCEPTION(Exception, BaseException)
   MP_DEFINE_EXCEPTION(MemoryError, Exception)
   MP_DEFINE_EXCEPTION(NameError, Exception)
     MP_DEFINE_EXCEPTION_BASE(NameError)
-    MP_DEFINE_EXCEPTION(UnboundLocalError, NameError)
+    //MP_DEFINE_EXCEPTION(UnboundLocalError, NameError)
   MP_DEFINE_EXCEPTION(OSError, Exception)
     MP_DEFINE_EXCEPTION_BASE(OSError)
-    // Probably don't need these
-    /*MP_DEFINE_EXCEPTION(BlockingIOError, OSError)
+    /*
+    MP_DEFINE_EXCEPTION(BlockingIOError, OSError)
     MP_DEFINE_EXCEPTION(ChildProcessError, OSError)
     MP_DEFINE_EXCEPTION(ConnectionError, OSError)
       MP_DEFINE_EXCEPTION(BrokenPipeError, ConnectionError)
@@ -145,18 +145,21 @@ MP_DEFINE_EXCEPTION(Exception, BaseException)
     MP_DEFINE_EXCEPTION(NotADirectoryError, OSError)
     MP_DEFINE_EXCEPTION(PermissionError, OSError)
     MP_DEFINE_EXCEPTION(ProcessLookupError, OSError)
-    MP_DEFINE_EXCEPTION(TimeoutError, OSError)*/
+    MP_DEFINE_EXCEPTION(TimeoutError, OSError)
     MP_DEFINE_EXCEPTION(FileExistsError, OSError)
     MP_DEFINE_EXCEPTION(FileNotFoundError, OSError)
-  //MP_DEFINE_EXCEPTION(ReferenceError, Exception)
+    MP_DEFINE_EXCEPTION(ReferenceError, Exception)
+    */
   MP_DEFINE_EXCEPTION(RuntimeError, Exception)
     MP_DEFINE_EXCEPTION_BASE(RuntimeError)
     MP_DEFINE_EXCEPTION(NotImplementedError, RuntimeError)
   MP_DEFINE_EXCEPTION(SyntaxError, Exception)
     MP_DEFINE_EXCEPTION_BASE(SyntaxError)
     MP_DEFINE_EXCEPTION(IndentationError, SyntaxError)
+    /*
       MP_DEFINE_EXCEPTION_BASE(IndentationError)
-      //MP_DEFINE_EXCEPTION(TabError, IndentationError)
+      MP_DEFINE_EXCEPTION(TabError, IndentationError)
+      */
   MP_DEFINE_EXCEPTION(SystemError, Exception)
   MP_DEFINE_EXCEPTION(TypeError, Exception)
   MP_DEFINE_EXCEPTION(ValueError, Exception)
-- 
GitLab