don't restrict unexpected EOF errors to the first line (closes #12216)
This commit is contained in:
parent
c8507bfe9c
commit
758888d437
|
@ -125,6 +125,13 @@ the \'lazy\' dog.\n\
|
|||
self.assertTrue(x is Ellipsis)
|
||||
self.assertRaises(SyntaxError, eval, ".. .")
|
||||
|
||||
def test_eof_error(self):
|
||||
samples = ("def foo(", "\ndef foo(", "def foo(\n")
|
||||
for s in samples:
|
||||
with self.assertRaises(SyntaxError) as cm:
|
||||
compile(s, "<test>", "exec")
|
||||
self.assertIn("unexpected EOF", str(cm.exception))
|
||||
|
||||
class GrammarTests(unittest.TestCase):
|
||||
|
||||
# single_input: NEWLINE | simple_stmt | compound_stmt NEWLINE
|
||||
|
|
|
@ -10,6 +10,8 @@ What's New in Python 3.3 Alpha 1?
|
|||
Core and Builtins
|
||||
-----------------
|
||||
|
||||
- Issue #12216: Allow unexpected EOF errors to happen on any line of the file.
|
||||
|
||||
- Issue #12199: The TryExcept and TryFinally and AST nodes have been unified
|
||||
into a Try node.
|
||||
|
||||
|
|
|
@ -232,7 +232,7 @@ parsetok(struct tok_state *tok, grammar *g, int start, perrdetail *err_ret,
|
|||
PyParser_Delete(ps);
|
||||
|
||||
if (n == NULL) {
|
||||
if (tok->lineno <= 1 && tok->done == E_EOF)
|
||||
if (tok->done == E_EOF)
|
||||
err_ret->error = E_EOF;
|
||||
err_ret->lineno = tok->lineno;
|
||||
if (tok->buf != NULL) {
|
||||
|
|
Loading…
Reference in New Issue