Update of /cvsroot/python/python/dist/src/Python In directory slayer.i.sourceforge.net:/tmp/cvs-serv7915/Python Modified Files: exceptions.c pythonrun.c Log Message: Create two new exceptions: IndentationError and TabError. These are used for indentation related errors. This patch includes Ping's improvements for indentation-related error messages. Closes SourceForge patches #100734 and #100856. Index: exceptions.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Python/exceptions.c,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -r1.6 -r1.7 *** exceptions.c 2000/07/09 22:27:10 1.6 --- exceptions.c 2000/07/11 17:52:59 1.7 *************** *** 69,72 **** --- 69,77 ---- +-- AttributeError\n\ +-- SyntaxError\n\ + | |\n\ + | +-- IndentationError\n\ + | |\n\ + | +-- TabError\n\ + |\n\ +-- TypeError\n\ +-- AssertionError\n\ *************** *** 784,787 **** --- 789,798 ---- MemoryError__doc__[] = "Out of memory."; + static char + IndentationError__doc__[] = "Improper indentation."; + + static char + TabError__doc__[] = "Improper mixture of spaces and tabs."; + *************** *** 818,821 **** --- 829,834 ---- PyObject *PyExc_NotImplementedError; PyObject *PyExc_SyntaxError; + PyObject *PyExc_IndentationError; + PyObject *PyExc_TabError; PyObject *PyExc_SystemError; PyObject *PyExc_SystemExit; *************** *** 879,882 **** --- 892,899 ---- {"SyntaxError", &PyExc_SyntaxError, 0, SyntaxError__doc__, SyntaxError_methods, SyntaxError__classinit__}, + {"IndentationError", &PyExc_IndentationError, &PyExc_SyntaxError, + IndentationError__doc__}, + {"TabError", &PyExc_TabError, &PyExc_IndentationError, + TabError__doc__}, {"AssertionError", &PyExc_AssertionError, 0, AssertionError__doc__}, {"LookupError", &PyExc_LookupError, 0, LookupError__doc__}, Index: pythonrun.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Python/pythonrun.c,v retrieving revision 2.101 retrieving revision 2.102 diff -C2 -r2.101 -r2.102 *** pythonrun.c 2000/07/09 03:09:56 2.101 --- pythonrun.c 2000/07/11 17:53:00 2.102 *************** *** 15,18 **** --- 15,19 ---- #include "grammar.h" #include "node.h" + #include "token.h" #include "parsetok.h" #include "errcode.h" *************** *** 984,989 **** perrdetail *err; { ! PyObject *v, *w; char *msg = NULL; v = Py_BuildValue("(ziiz)", err->filename, err->lineno, err->offset, err->text); --- 985,991 ---- perrdetail *err; { ! PyObject *v, *w, *errtype; char *msg = NULL; + errtype = PyExc_SyntaxError; v = Py_BuildValue("(ziiz)", err->filename, err->lineno, err->offset, err->text); *************** *** 994,998 **** switch (err->error) { case E_SYNTAX: ! msg = "invalid syntax"; break; case E_TOKEN: --- 996,1010 ---- switch (err->error) { case E_SYNTAX: ! errtype = PyExc_IndentationError; ! if (err->expected == INDENT) ! msg = "expected an indented block"; ! else if (err->token == INDENT) ! msg = "unexpected indent"; ! else if (err->token == DEDENT) ! msg = "unexpected unindent"; ! else { ! errtype = PyExc_SyntaxError; ! msg = "invalid syntax"; ! } break; case E_TOKEN: *************** *** 1010,1014 **** msg = "unexpected EOF while parsing"; break; ! case E_INDENT: msg = "inconsistent use of tabs and spaces in indentation"; break; --- 1022,1027 ---- msg = "unexpected EOF while parsing"; break; ! case E_TABSPACE: ! errtype = PyExc_TabError; msg = "inconsistent use of tabs and spaces in indentation"; break; *************** *** 1016,1019 **** --- 1029,1040 ---- msg = "expression too long"; break; + case E_DEDENT: + errtype = PyExc_IndentationError; + msg = "unindent does not match any outer indentation level"; + break; + case E_TOODEEP: + errtype = PyExc_IndentationError; + msg = "too many levels of indentation"; + break; default: fprintf(stderr, "error=%d\n", err->error); *************** *** 1023,1027 **** w = Py_BuildValue("(sO)", msg, v); Py_XDECREF(v); ! PyErr_SetObject(PyExc_SyntaxError, w); Py_XDECREF(w); } --- 1044,1048 ---- w = Py_BuildValue("(sO)", msg, v); Py_XDECREF(v); ! PyErr_SetObject(errtype, w); Py_XDECREF(w); }
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4