From 05ab2e693cf5bed23e14058cf9eb458441769122 Mon Sep 17 00:00:00 2001 From: Jeremy Hylton Date: Fri, 31 May 2002 14:08:29 +0000 Subject: [PATCH] Fix SF bug [ 561825 ] Confusing error for "del f()" In the error message, say del for del and assign for everything else. --- Lib/test/test_syntax.py | 34 ++++++++++++++++++++++++++++++++++ Python/compile.c | 8 ++++++-- 2 files changed, 40 insertions(+), 2 deletions(-) create mode 100644 Lib/test/test_syntax.py diff --git a/Lib/test/test_syntax.py b/Lib/test/test_syntax.py new file mode 100644 index 0000000000..6605e27d72 --- /dev/null +++ b/Lib/test/test_syntax.py @@ -0,0 +1,34 @@ +import re +import unittest + +import test_support + +class SyntaxTestCase(unittest.TestCase): + + def _check_error(self, code, errtext, + filename="", mode="exec"): + """Check that compiling code raises SyntaxError with errtext. + + errtest is a regular expression that must be present in the + test of the exception raised. + """ + try: + compile(code, filename, mode) + except SyntaxError, err: + mo = re.search(errtext, str(err)) + if mo is None: + self.fail("SyntaxError did not contain '%s'" % `errtext`) + else: + self.fail("compile() did not raise SyntaxError") + + def test_assign_call(self): + self._check_error("f() = 1", "assign") + + def test_assign_del(self): + self._check_error("del f()", "delete") + +def test_main(): + test_support.run_unittest(SyntaxTestCase) + +if __name__ == "__main__": + test_main() diff --git a/Python/compile.c b/Python/compile.c index cdb72acf84..4bbe44f7c9 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -2417,8 +2417,12 @@ com_assign_trailer(struct compiling *c, node *n, int assigning, node *augn) REQ(n, trailer); switch (TYPE(CHILD(n, 0))) { case LPAR: /* '(' [exprlist] ')' */ - com_error(c, PyExc_SyntaxError, - "can't assign to function call"); + if (assigning == OP_DELETE) + com_error(c, PyExc_SyntaxError, + "can't delete function call"); + else + com_error(c, PyExc_SyntaxError, + "can't assign to function call"); break; case DOT: /* '.' NAME */ if (assigning > OP_APPLY) -- 2.40.0