update test cases for recent compiler changes: exec/import * in nested

functinos and cell vars with */** parameters
This commit is contained in:
Jeremy Hylton 2001-02-09 22:56:46 +00:00
parent 6492bf71da
commit 97a01674b2
4 changed files with 65 additions and 23 deletions

View 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

View File

@ -12,3 +12,4 @@ test_scope
11. unoptimized namespaces
12. lambdas
13. UnboundLocal
14. complex definitions

View 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():

View 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))