classification
Title: syntax errors on continuation lines
Type: feature request Stage: patch review
Components: Interpreter Core Versions: Python 3.1, Python 2.7
process
Status: open Resolution:
Dependencies: Superseder:
Assigned To: Nosy List: georg.brandl, rcmiller, sonderblade (3)
Priority: normal Keywords: patch

Created on 2006-06-07 02:49 by rcmiller, last changed 2009-03-31 16:21 by georg.brandl.

Files
File name Uploaded Description Edit Remove
continuation_syntax_error.diff rcmiller, 2006-06-07 02:49 Patch for syntax errors on continuation lines
Messages (4)
msg50438 - (view) Author: Roger Miller (rcmiller) Date: 2006-06-07 02:49
This patch modifies syntax error location information
to indicate when an error is detected on a statement
continuation line, for example
     File "test.py", line 42 (continuing line 41)
The intent is to be less confusing when an error
reported on one line is actually the result of
unbalanced brackets on a previous line.  The change
adds a new 'stmt_lineno' field to the SyntaxError
exception, containing the line number on which the
statement started.

The patch is against r46701 and was developed and
tested on Fedora 4 Linux.
msg50439 - (view) Author: Georg Brandl (georg.brandl) Date: 2006-06-08 13:05
Logged In: YES 
user_id=849994

Note that you cannot give a "|" inside a tuple specification
in PyArg_ParseTuple.
msg50440 - (view) Author: Björn Lindqvist (sonderblade) Date: 2007-03-12 23:33
Works nicely:

>>> (3,
... 8,
... 4 +,
  File "<stdin>", line 3 (continuing line 1)
    4 +,
       ^
SyntaxError: invalid syntax

The patch does not apply cleanly because of changes in traceback.py, but it is easy to fix. But IMHO, the special casing that checks for the presence of the extra stmt_lineno attribute is not nice at all. I think it would be better if stmt_lineno always was included and equal to lineno in the normal case. Then traceback.py would just check if stmt_lineno differs from lineno, and if so, append the extra '(continuing line %d)' information.
msg84825 - (view) Author: Georg Brandl (georg.brandl) Date: 2009-03-31 16:21
I'm not sure if this is necessary; you could argue that the syntax error
really is on the last line, because there the parenthesis is missing.
History
Date User Action Args
2009-03-31 16:21:05georg.brandlsetmessages: + msg84825
2009-03-21 03:43:40ajaksu2setstage: patch review
type: feature request
versions: + Python 3.1, Python 2.7, - Python 2.5
2006-06-07 02:49:17rcmillercreate