]> granicus.if.org Git - vim/commitdiff
updated for version 7.3.951 v7.3.951
authorBram Moolenaar <Bram@vim.org>
Wed, 15 May 2013 13:44:28 +0000 (15:44 +0200)
committerBram Moolenaar <Bram@vim.org>
Wed, 15 May 2013 13:44:28 +0000 (15:44 +0200)
Problem:    Python exceptions have problems.
Solution:   Change some IndexErrors to TypeErrors. Make “line number out of
            range” an IndexError.  Make “unable to get option value” a
            RuntimeError. Make all PyErr_SetString messages start with
            lowercase letter and use _(). (ZyX)

src/if_py_both.h
src/if_python.c
src/if_python3.c
src/testdir/test86.ok
src/testdir/test87.ok
src/version.c

index 28505403040713683c5bc31deea303529c105707..3267f814781f92d890c67a00e275c94fe8d84e35 100644 (file)
@@ -71,7 +71,8 @@ OutputSetattr(PyObject *self, char *name, PyObject *val)
 {
     if (val == NULL)
     {
-       PyErr_SetString(PyExc_AttributeError, _("can't delete OutputObject attributes"));
+       PyErr_SetString(PyExc_AttributeError,
+               _("can't delete OutputObject attributes"));
        return -1;
     }
 
@@ -919,7 +920,7 @@ ListItem(PyObject *self, Py_ssize_t index)
 
     if (index>=ListLength(self))
     {
-       PyErr_SetString(PyExc_IndexError, "list index out of range");
+       PyErr_SetString(PyExc_IndexError, _("list index out of range"));
        return NULL;
     }
     li = list_find(((ListObject *) (self))->list, (long) index);
@@ -1047,7 +1048,7 @@ ListAssItem(PyObject *self, Py_ssize_t index, PyObject *obj)
     }
     if (index>length || (index==length && obj==NULL))
     {
-       PyErr_SetString(PyExc_IndexError, "list index out of range");
+       PyErr_SetString(PyExc_IndexError, _("list index out of range"));
        return -1;
     }
 
@@ -1186,7 +1187,8 @@ ListSetattr(PyObject *self, char *name, PyObject *val)
 
     if (val == NULL)
     {
-       PyErr_SetString(PyExc_AttributeError, _("Cannot delete DictionaryObject attributes"));
+       PyErr_SetString(PyExc_AttributeError,
+               _("cannot delete vim.dictionary attributes"));
        return -1;
     }
 
@@ -1194,7 +1196,7 @@ ListSetattr(PyObject *self, char *name, PyObject *val)
     {
        if (this->list->lv_lock == VAR_FIXED)
        {
-           PyErr_SetString(PyExc_TypeError, _("Cannot modify fixed list"));
+           PyErr_SetString(PyExc_TypeError, _("cannot modify fixed list"));
            return -1;
        }
        else
@@ -1208,7 +1210,7 @@ ListSetattr(PyObject *self, char *name, PyObject *val)
     }
     else
     {
-       PyErr_SetString(PyExc_AttributeError, _("Cannot set this attribute"));
+       PyErr_SetString(PyExc_AttributeError, _("cannot set this attribute"));
        return -1;
     }
 }
@@ -1377,7 +1379,8 @@ OptionsItem(OptionsObject *this, PyObject *keyObject)
            return PyBytes_FromString((char *) stringval);
        else
        {
-           PyErr_SetString(PyExc_ValueError, "Unable to get option value");
+           PyErr_SetString(PyExc_RuntimeError,
+                   _("unable to get option value"));
            return NULL;
        }
     }
@@ -1455,13 +1458,14 @@ OptionsAssItem(OptionsObject *this, PyObject *keyObject, PyObject *valObject)
     {
        if (this->opt_type == SREQ_GLOBAL)
        {
-           PyErr_SetString(PyExc_ValueError, "Unable to unset global option");
+           PyErr_SetString(PyExc_ValueError,
+                   _("unable to unset global option"));
            return -1;
        }
        else if (!(flags & SOPT_GLOBAL))
        {
-           PyErr_SetString(PyExc_ValueError, "Unable to unset option without "
-                                               "global value");
+           PyErr_SetString(PyExc_ValueError, _("unable to unset option "
+                                               "without global value"));
            return -1;
        }
        else
@@ -1491,7 +1495,7 @@ OptionsAssItem(OptionsObject *this, PyObject *keyObject, PyObject *valObject)
            val = PyLong_AsLong(valObject);
        else
        {
-           PyErr_SetString(PyExc_ValueError, "Object must be integer");
+           PyErr_SetString(PyExc_TypeError, _("object must be integer"));
            return -1;
        }
 
@@ -1529,7 +1533,7 @@ OptionsAssItem(OptionsObject *this, PyObject *keyObject, PyObject *valObject)
        }
        else
        {
-           PyErr_SetString(PyExc_ValueError, "Object must be string");
+           PyErr_SetString(PyExc_TypeError, _("object must be string"));
            return -1;
        }
 
@@ -2766,7 +2770,7 @@ RBAppend(BufferObject *self, PyObject *args, PyInt start, PyInt end, PyInt *new_
 
     if (n < 0 || n > max)
     {
-       PyErr_SetString(PyExc_ValueError, _("line number out of range"));
+       PyErr_SetString(PyExc_IndexError, _("line number out of range"));
        return NULL;
     }
 
@@ -3135,7 +3139,7 @@ BufMapItem(PyObject *self UNUSED, PyObject *keyObject)
        bnr = PyLong_AsLong(keyObject);
     else
     {
-       PyErr_SetString(PyExc_ValueError, _("key must be integer"));
+       PyErr_SetString(PyExc_TypeError, _("key must be integer"));
        return NULL;
     }
 
@@ -3654,7 +3658,8 @@ _ConvertFromPyObject(PyObject *obj, typval_T *tv, PyObject *lookupDict)
        return convert_dl(obj, tv, pymap_to_tv, lookupDict);
     else
     {
-       PyErr_SetString(PyExc_TypeError, _("unable to convert to vim structure"));
+       PyErr_SetString(PyExc_TypeError,
+               _("unable to convert to vim structure"));
        return -1;
     }
     return 0;
index edbba21333cc2ef89db2888783fffe4f684f2a37..8a459fd43ac53669e70dacb2d10095b456628278 100644 (file)
@@ -358,6 +358,7 @@ static PyObject *imp_PyExc_KeyError;
 static PyObject *imp_PyExc_KeyboardInterrupt;
 static PyObject *imp_PyExc_TypeError;
 static PyObject *imp_PyExc_ValueError;
+static PyObject *imp_PyExc_RuntimeError;
 
 # define PyExc_AttributeError imp_PyExc_AttributeError
 # define PyExc_IndexError imp_PyExc_IndexError
@@ -365,6 +366,7 @@ static PyObject *imp_PyExc_ValueError;
 # define PyExc_KeyboardInterrupt imp_PyExc_KeyboardInterrupt
 # define PyExc_TypeError imp_PyExc_TypeError
 # define PyExc_ValueError imp_PyExc_ValueError
+# define PyExc_RuntimeError imp_PyExc_RuntimeError
 
 /*
  * Table of name to function pointer of python.
@@ -593,12 +595,14 @@ get_exceptions(void)
     imp_PyExc_KeyboardInterrupt = PyDict_GetItemString(exdict, "KeyboardInterrupt");
     imp_PyExc_TypeError = PyDict_GetItemString(exdict, "TypeError");
     imp_PyExc_ValueError = PyDict_GetItemString(exdict, "ValueError");
+    imp_PyExc_RuntimeError = PyDict_GetItemString(exdict, "RuntimeError");
     Py_XINCREF(imp_PyExc_AttributeError);
     Py_XINCREF(imp_PyExc_IndexError);
     Py_XINCREF(imp_PyExc_KeyError);
     Py_XINCREF(imp_PyExc_KeyboardInterrupt);
     Py_XINCREF(imp_PyExc_TypeError);
     Py_XINCREF(imp_PyExc_ValueError);
+    Py_XINCREF(imp_PyExc_RuntimeError);
     Py_XDECREF(exmod);
 }
 #endif /* DYNAMIC_PYTHON */
index 8acab9d555a01785a7aeb93ec166aea034760969..02da1b0c47162e800b440a5f3e89ee24a29dcd8c 100644 (file)
@@ -336,6 +336,7 @@ static PyObject *p3imp_PyExc_KeyError;
 static PyObject *p3imp_PyExc_KeyboardInterrupt;
 static PyObject *p3imp_PyExc_TypeError;
 static PyObject *p3imp_PyExc_ValueError;
+static PyObject *p3imp_PyExc_RuntimeError;
 
 # define PyExc_AttributeError p3imp_PyExc_AttributeError
 # define PyExc_IndexError p3imp_PyExc_IndexError
@@ -343,6 +344,7 @@ static PyObject *p3imp_PyExc_ValueError;
 # define PyExc_KeyboardInterrupt p3imp_PyExc_KeyboardInterrupt
 # define PyExc_TypeError p3imp_PyExc_TypeError
 # define PyExc_ValueError p3imp_PyExc_ValueError
+# define PyExc_RuntimeError p3imp_PyExc_RuntimeError
 
 /*
  * Table of name to function pointer of python.
@@ -580,12 +582,14 @@ get_py3_exceptions()
     p3imp_PyExc_KeyboardInterrupt = PyDict_GetItemString(exdict, "KeyboardInterrupt");
     p3imp_PyExc_TypeError = PyDict_GetItemString(exdict, "TypeError");
     p3imp_PyExc_ValueError = PyDict_GetItemString(exdict, "ValueError");
+    p3imp_PyExc_RuntimeError = PyDict_GetItemString(exdict, "RuntimeError");
     Py_XINCREF(p3imp_PyExc_AttributeError);
     Py_XINCREF(p3imp_PyExc_IndexError);
     Py_XINCREF(p3imp_PyExc_KeyError);
     Py_XINCREF(p3imp_PyExc_KeyboardInterrupt);
     Py_XINCREF(p3imp_PyExc_TypeError);
     Py_XINCREF(p3imp_PyExc_ValueError);
+    Py_XINCREF(p3imp_PyExc_RuntimeError);
     Py_XDECREF(exmod);
 }
 #endif /* DYNAMIC_PYTHON3 */
@@ -1132,7 +1136,7 @@ BufferSubscript(PyObject *self, PyObject* idx)
     }
     else
     {
-       PyErr_SetString(PyExc_IndexError, "Index must be int or slice");
+       PyErr_SetString(PyExc_TypeError, _("index must be int or slice"));
        return NULL;
     }
 }
@@ -1166,7 +1170,7 @@ BufferAsSubscript(PyObject *self, PyObject* idx, PyObject* val)
     }
     else
     {
-       PyErr_SetString(PyExc_IndexError, "Index must be int or slice");
+       PyErr_SetString(PyExc_TypeError, _("index must be int or slice"));
        return -1;
     }
 }
@@ -1248,7 +1252,7 @@ RangeSubscript(PyObject *self, PyObject* idx)
     }
     else
     {
-       PyErr_SetString(PyExc_IndexError, "Index must be int or slice");
+       PyErr_SetString(PyExc_TypeError, _("index must be int or slice"));
        return NULL;
     }
 }
@@ -1275,7 +1279,7 @@ RangeAsSubscript(PyObject *self, PyObject *idx, PyObject *val)
     }
     else
     {
-       PyErr_SetString(PyExc_IndexError, "Index must be int or slice");
+       PyErr_SetString(PyExc_TypeError, _("index must be int or slice"));
        return -1;
     }
 }
@@ -1450,7 +1454,7 @@ ListSubscript(PyObject *self, PyObject* idxObject)
     }
     else
     {
-       PyErr_SetString(PyExc_IndexError, "Index must be int or slice");
+       PyErr_SetString(PyExc_TypeError, _("index must be int or slice"));
        return NULL;
     }
 }
@@ -1474,7 +1478,7 @@ ListAsSubscript(PyObject *self, PyObject *idxObject, PyObject *obj)
     }
     else
     {
-       PyErr_SetString(PyExc_IndexError, "Index must be int or slice");
+       PyErr_SetString(PyExc_TypeError, _("index must be int or slice"));
        return -1;
     }
 }
index 481acae7dcac5751f80b6bd67ed93079c59281e1..dd08b374914ff50df04584cab66b11321a19dff3 100644 (file)
@@ -102,7 +102,7 @@ bar
   B: 1:1 2:1 3:1 4:1
 >>> previewheight
   p/gopts1: 12
-  inv: 'a'! ValueError
+  inv: 'a'! TypeError
   p/wopts1! KeyError
   inv: 'a'! KeyError
   wopts1! KeyError
@@ -123,7 +123,7 @@ bar
   B: 1:5 2:5 3:5 4:5
 >>> operatorfunc
   p/gopts1: ''
-  inv: 2! ValueError
+  inv: 2! TypeError
   p/wopts1! KeyError
   inv: 2! KeyError
   wopts1! KeyError
@@ -198,9 +198,9 @@ bar
   B: 1:'+2' 2:'+3' 3:'+1' 4:''
 >>> statusline
   p/gopts1: ''
-  inv: 0! ValueError
+  inv: 0! TypeError
   p/wopts1: None
-  inv: 0! ValueError
+  inv: 0! TypeError
   p/bopts1! KeyError
   inv: 0! KeyError
   bopts1! KeyError
@@ -259,7 +259,7 @@ bar
   wopts2! KeyError
   wopts3! KeyError
   p/bopts1: ''
-  inv: 1! ValueError
+  inv: 1! TypeError
   G: ''
   W: 1:'A' 2:'B' 3:'' 4:'C'
   B: 1:'A' 2:'B' 3:'' 4:'C'
@@ -288,14 +288,14 @@ bar
   B: 1:0 2:1 3:0 4:1
 >>> path
   p/gopts1: '.,/usr/include,,'
-  inv: 0! ValueError
+  inv: 0! TypeError
   p/wopts1! KeyError
   inv: 0! KeyError
   wopts1! KeyError
   wopts2! KeyError
   wopts3! KeyError
   p/bopts1: None
-  inv: 0! ValueError
+  inv: 0! TypeError
   G: '.,,'
   W: 1:'.,,' 2:',,' 3:'.,,' 4:'.'
   B: 1:'.,,' 2:',,' 3:'.,,' 4:'.'
index 3addec8b3fc71e922a30ce5e5b16ab0a8b572154..d7fb06b7f6512c96d5385ee814610ead8a831b4e 100644 (file)
@@ -91,7 +91,7 @@ bar
   B: 1:1 2:1 3:1 4:1
 >>> previewheight
   p/gopts1: 12
-  inv: 'a'! ValueError
+  inv: 'a'! TypeError
   p/wopts1! KeyError
   inv: 'a'! KeyError
   wopts1! KeyError
@@ -112,7 +112,7 @@ bar
   B: 1:5 2:5 3:5 4:5
 >>> operatorfunc
   p/gopts1: b''
-  inv: 2! ValueError
+  inv: 2! TypeError
   p/wopts1! KeyError
   inv: 2! KeyError
   wopts1! KeyError
@@ -187,9 +187,9 @@ bar
   B: 1:'+2' 2:'+3' 3:'+1' 4:''
 >>> statusline
   p/gopts1: b''
-  inv: 0! ValueError
+  inv: 0! TypeError
   p/wopts1: None
-  inv: 0! ValueError
+  inv: 0! TypeError
   p/bopts1! KeyError
   inv: 0! KeyError
   bopts1! KeyError
@@ -248,7 +248,7 @@ bar
   wopts2! KeyError
   wopts3! KeyError
   p/bopts1: b''
-  inv: 1! ValueError
+  inv: 1! TypeError
   G: ''
   W: 1:'A' 2:'B' 3:'' 4:'C'
   B: 1:'A' 2:'B' 3:'' 4:'C'
@@ -277,14 +277,14 @@ bar
   B: 1:0 2:1 3:0 4:1
 >>> path
   p/gopts1: b'.,/usr/include,,'
-  inv: 0! ValueError
+  inv: 0! TypeError
   p/wopts1! KeyError
   inv: 0! KeyError
   wopts1! KeyError
   wopts2! KeyError
   wopts3! KeyError
   p/bopts1: None
-  inv: 0! ValueError
+  inv: 0! TypeError
   G: '.,,'
   W: 1:'.,,' 2:',,' 3:'.,,' 4:'.'
   B: 1:'.,,' 2:',,' 3:'.,,' 4:'.'
index eb7d0db925f089028692b5c884f428a480d9d48a..3f09459ccc3457fc9c054ec191bd350b1d45e1af 100644 (file)
@@ -728,6 +728,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    951,
 /**/
     950,
 /**/