diff options
author | Bram Moolenaar <Bram@vim.org> | 2013-05-15 15:44:28 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2013-05-15 15:44:28 +0200 |
commit | 8661b17843d95866dedfa0f4fbfec2278ee010be (patch) | |
tree | e0de67a475e37adf3254859a9b3e870970ce50ec | |
parent | 4d188da22bc42b58ed66746c8d6235616214e55f (diff) | |
download | vim-8661b17843d95866dedfa0f4fbfec2278ee010be.zip |
updated for version 7.3.951
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)
-rw-r--r-- | src/if_py_both.h | 35 | ||||
-rw-r--r-- | src/if_python.c | 4 | ||||
-rw-r--r-- | src/if_python3.c | 16 | ||||
-rw-r--r-- | src/testdir/test86.ok | 14 | ||||
-rw-r--r-- | src/testdir/test87.ok | 14 | ||||
-rw-r--r-- | src/version.c | 2 |
6 files changed, 50 insertions, 35 deletions
diff --git a/src/if_py_both.h b/src/if_py_both.h index 285054030..3267f8147 100644 --- a/src/if_py_both.h +++ b/src/if_py_both.h @@ -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; diff --git a/src/if_python.c b/src/if_python.c index edbba2133..8a459fd43 100644 --- a/src/if_python.c +++ b/src/if_python.c @@ -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 */ diff --git a/src/if_python3.c b/src/if_python3.c index 8acab9d55..02da1b0c4 100644 --- a/src/if_python3.c +++ b/src/if_python3.c @@ -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; } } diff --git a/src/testdir/test86.ok b/src/testdir/test86.ok index 481acae7d..dd08b3749 100644 --- a/src/testdir/test86.ok +++ b/src/testdir/test86.ok @@ -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:'.' diff --git a/src/testdir/test87.ok b/src/testdir/test87.ok index 3addec8b3..d7fb06b7f 100644 --- a/src/testdir/test87.ok +++ b/src/testdir/test87.ok @@ -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:'.' diff --git a/src/version.c b/src/version.c index eb7d0db92..3f09459cc 100644 --- a/src/version.c +++ b/src/version.c @@ -729,6 +729,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 951, +/**/ 950, /**/ 949, |