Merged revisions 76416-76417 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r76416 | benjamin.peterson | 2009-11-19 16:54:57 -0600 (Thu, 19 Nov 2009) | 10 lines

  improve several corner cases related with argument names in parenthesis

  - Fix #7362: give a good error message for parenthesized arguments with
    defaults.

  - Add a py3k warning for any parenthesized arguments since those are not allowed
    in Py3.  This warning is not given in tuple unpacking, since that incurs the
    tuple unpacking warning.
........
  r76417 | benjamin.peterson | 2009-11-19 16:58:01 -0600 (Thu, 19 Nov 2009) | 1 line

  add news notes for r76416
........
diff --git a/Lib/test/test_py3kwarn.py b/Lib/test/test_py3kwarn.py
index 6d8863a..55b327e 100644
--- a/Lib/test/test_py3kwarn.py
+++ b/Lib/test/test_py3kwarn.py
@@ -31,6 +31,18 @@
             exec "`2`" in {}
         self.assertWarning(None, w, expected)
 
+    def test_paren_arg_names(self):
+        expected = 'parenthesized argument names are invalid in 3.x'
+        def check(s):
+            exec s in {}
+            self.assertWarning(None, w, expected)
+        with check_warnings() as w:
+            check("def f((x)): pass")
+            check("def f((((x))), (y)): pass")
+            check("def f((x), (((y))), m=32): pass")
+            # Something like def f((a, (b))): pass will raise the tuple
+            # unpacking warning.
+
     def test_bool_assign(self):
         # So we don't screw up our globals
         def safe_exec(expr):
diff --git a/Lib/test/test_syntax.py b/Lib/test/test_syntax.py
index e978a6e..366c1e8 100644
--- a/Lib/test/test_syntax.py
+++ b/Lib/test/test_syntax.py
@@ -447,10 +447,14 @@
                 self.fail("SyntaxError is not a %s" % subclass.__name__)
             mo = re.search(errtext, str(err))
             if mo is None:
-                self.fail("SyntaxError did not contain '%r'" % (errtext,))
+                self.fail("%s did not contain '%r'" % (err, errtext,))
         else:
             self.fail("compile() did not raise SyntaxError")
 
+    def test_paren_arg_with_default(self):
+        self._check_error("def f((x)=23): pass",
+                          "parenthesized arg with default")
+
     def test_assign_call(self):
         self._check_error("f() = 1", "assign")