diff options
author | Raymond Hettinger <python@rcn.com> | 2004-07-17 21:46:25 (GMT) |
---|---|---|
committer | Raymond Hettinger <python@rcn.com> | 2004-07-17 21:46:25 (GMT) |
commit | 11a70c79b90d106bfe2b4db7039c4fa12f1fc145 (patch) | |
tree | f325e4e1b681f54d8365706e8f2fbc07e474e5d2 | |
parent | 910d8f1e89c8f21b5337aa13394e5c153abf1350 (diff) | |
download | cpython-11a70c79b90d106bfe2b4db7039c4fa12f1fc145.zip cpython-11a70c79b90d106bfe2b4db7039c4fa12f1fc145.tar.gz cpython-11a70c79b90d106bfe2b4db7039c4fa12f1fc145.tar.bz2 |
Upgrade None assignment SyntaxWarning to a SyntaxError.
-rw-r--r-- | Lib/test/test_compile.py | 15 | ||||
-rw-r--r-- | Python/compile.c | 13 |
2 files changed, 21 insertions, 7 deletions
diff --git a/Lib/test/test_compile.py b/Lib/test/test_compile.py index e2b1c95..5b7b717 100644 --- a/Lib/test/test_compile.py +++ b/Lib/test/test_compile.py @@ -138,6 +138,21 @@ if 1: self.assertEqual(i, 1) self.assertEqual(j, -1) + def test_none_assignment(self): + stmts = [ + 'None = 0', + 'None += 0', + '__builtins__.None = 0', + 'def None(): pass', + 'class None: pass', + '(a, None) = 0, 0', + 'for None in range(10): pass', + 'def f(None): pass', + ] + for stmt in stmts: + stmt += "\n" + self.assertRaises(SyntaxError, compile, stmt, 'tmp', 'single') + self.assertRaises(SyntaxError, compile, stmt, 'tmp', 'exec') def test_main(): test_support.run_unittest(TestSpecifics) diff --git a/Python/compile.c b/Python/compile.c index 5549e9f..771bc2f 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -1227,10 +1227,8 @@ none_assignment_check(struct compiling *c, char *name, int assigning) msg = "assignment to None"; else msg = "deleting None"; - if (issue_warning(msg, c->c_filename, c->c_lineno) < 0) { - c->c_errors++; - return -1; - } + com_error(c, PyExc_SyntaxError, msg); + return -1; } return 0; } @@ -1247,7 +1245,6 @@ com_addop_varname(struct compiling *c, int kind, char *name) if (kind != VAR_LOAD && none_assignment_check(c, name, kind == VAR_STORE)) { - c->c_errors++; i = 255; goto done; } @@ -5483,8 +5480,10 @@ symtable_add_def(struct symtable *st, char *name, int flag) if ((flag & DEF_PARAM) && !(flag & DEF_INTUPLE) && *name == 'N' && strcmp(name, "None") == 0) { - if (symtable_warn(st, "argument named None")) - return -1; + PyErr_SetString(PyExc_SyntaxError, + "Invalid syntax. Assignment to None."); + symtable_error(st, 0); + return -1; } if (_Py_Mangle(st->st_private, name, buffer, sizeof(buffer))) name = buffer; |