]> granicus.if.org Git - python/commitdiff
update test cases for recent compiler changes: exec/import * in nested
authorJeremy Hylton <jeremy@alum.mit.edu>
Fri, 9 Feb 2001 22:56:46 +0000 (22:56 +0000)
committerJeremy Hylton <jeremy@alum.mit.edu>
Fri, 9 Feb 2001 22:56:46 +0000 (22:56 +0000)
functinos and cell vars with */** parameters

Lib/test/output/test_grammar
Lib/test/output/test_scope
Lib/test/test_grammar.py
Lib/test/test_scope.py

index 319177c22c72956a4957560d650a88e805bb0e09..c69697d208ab9237e7eb28623699310480edd1ae 100644 (file)
@@ -38,7 +38,6 @@ continue + try/finally ok
 return_stmt
 raise_stmt
 import_stmt
-SyntaxError expected for "def f(): from sys import *"
 global_stmt
 exec_stmt
 if_stmt
index 17e5cb80fa9d993c846b193ac851d3f15839efe9..0535e2664fe1b0454ce70ea993c90d3d43ea9a6e 100644 (file)
@@ -12,3 +12,4 @@ test_scope
 11. unoptimized namespaces
 12. lambdas
 13. UnboundLocal
+14. complex definitions
index 5865e8ca325ef0c0b3411c006f8d33cfb91de7bc..53ae0705915148311327c18e90a5d11289bc420e 100644 (file)
@@ -386,7 +386,6 @@ import time, sys
 from time import time
 from sys import *
 from sys import path, argv
-check_syntax("def f(): from sys import *")
 
 print 'global_stmt' # 'global' NAME (',' NAME)*
 def f():
index 4f3c1ff14399a0fdfbd1f6637bcc55fdf30f9f09..a58be007b8c1031e9588f7d6f01dff3f91abc051 100644 (file)
@@ -185,44 +185,64 @@ def check_syntax(s):
     else:
         raise TestFailed
 
-# XXX for now, it is easiest to call this a syntax error:
-# explicit is better than implicit...
-test1 = \
-"""def unoptimized_clash1(strip):
+check_syntax("""def unoptimized_clash1(strip):
     def f(s):
         from string import *
         return strip(s) # ambiguity: free or local
     return f
-"""
-check_syntax(test1)
+""")
 
-# a little harder to reject this one, but possible...
-test2 = \
-"""def unoptimized_clash2():
+check_syntax("""def unoptimized_clash2():
     from string import *
     def f(s):
         return strip(s) # ambiguity: global or local
     return f
-"""
-# check_syntax(test2)
+""")
 
-# XXX could allow this for exec with const argument, but what's the point
-test3 = \
-"""def error(y):
+check_syntax("""def unoptimized_clash2():
+    from string import *
+    def g():
+        def f(s):
+            return strip(s) # ambiguity: global or local
+        return f
+""")
+
+# XXX could allow this for exec with const argument, but what's the point 
+check_syntax("""def error(y):
     exec "a = 1"
     def f(x):
         return x + y
     return f
-"""
-check_syntax(test3)
+""")
 
-test4 = \
-"""def f(x):
+check_syntax("""def f(x):
     def g():
         return x
-    del x
-"""
-check_syntax(test4)
+    del x # can't del name
+""")
+
+check_syntax("""def f():
+    def g():
+         from string import *
+         return strip # global or local?
+""")            
+
+# and verify a few cases that should work
+
+def noproblem1():
+    from string import *
+    f = lambda x:x
+
+def noproblem2():
+    from string import *
+    def f(x):
+        return x + 1
+
+def noproblem3():
+    from string import *
+    def f(x):
+        global y
+        y = x
 
 print "12. lambdas"
 
@@ -275,3 +295,26 @@ except UnboundLocalError:
     pass
 else:
     raise TestFailed
+
+print "14. complex definitions"
+
+def makeReturner(*lst):
+    def returner():
+        return lst
+    return returner
+verify(makeReturner(1,2,3)() == (1,2,3))
+def makeReturner2(**kwargs):
+    def returner():
+        return kwargs
+    return returner
+
+verify(makeReturner2(a=11)()['a'] == 11)
+
+def makeAddPair((a, b)):
+    def addPair((c, d)):
+        return (a + c, b + d)
+    return addPair
+
+verify(makeAddPair((1, 2))((100, 200)) == (101,202))