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)
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;
}
if (kind != VAR_LOAD &&
none_assignment_check(c, name, kind == VAR_STORE))
{
- c->c_errors++;
i = 255;
goto done;
}
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;