diff --git a/Lib/test/test_syntax.py b/Lib/test/test_syntax.py
new file mode 100644
index 0000000..6605e27
--- /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="<testcase>", 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 cdb72ac..4bbe44f 100644
--- a/Python/compile.c
+++ b/Python/compile.c
@@ -2417,8 +2417,12 @@
 	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)
