diff Lib/test/test_parser.py @ 76635:9f57d66689ca 3.2

Issue #9154: Fix parser module to understand function annotations.
author Mark Dickinson <mdickinson@enthought.com>
date Sun, 29 Apr 2012 18:34:40 +0100
parents 3c9232a684ae
children b7e491b9094f cee5cb877631
line wrap: on
line diff
--- a/Lib/test/test_parser.py	Sun Apr 29 09:32:30 2012 -0700
+++ b/Lib/test/test_parser.py	Sun Apr 29 18:34:40 2012 +0100
@@ -146,6 +146,27 @@
         self.check_suite("@funcattrs()\n"
                          "def f(): pass")
 
+        # keyword-only arguments
+        self.check_suite("def f(*, a): pass")
+        self.check_suite("def f(*, a = 5): pass")
+        self.check_suite("def f(*, a = 5, b): pass")
+        self.check_suite("def f(*, a, b = 5): pass")
+        self.check_suite("def f(*, a, b = 5, **kwds): pass")
+        self.check_suite("def f(*args, a): pass")
+        self.check_suite("def f(*args, a = 5): pass")
+        self.check_suite("def f(*args, a = 5, b): pass")
+        self.check_suite("def f(*args, a, b = 5): pass")
+        self.check_suite("def f(*args, a, b = 5, **kwds): pass")
+
+        # function annotations
+        self.check_suite("def f(a: int): pass")
+        self.check_suite("def f(a: int = 5): pass")
+        self.check_suite("def f(*args: list): pass")
+        self.check_suite("def f(**kwds: dict): pass")
+        self.check_suite("def f(*, a: int): pass")
+        self.check_suite("def f(*, a: int = 5): pass")
+        self.check_suite("def f() -> int: pass")
+
     def test_class_defs(self):
         self.check_suite("class foo():pass")
         self.check_suite("class foo(object):pass")