blob: 7d4931e0288556636f63169547db43c1b988e654 [file]
-- Test cases for parser -- Python 2 syntax.
--
-- See parse.test for a description of this file format.
[case testEmptyFile]
[out]
MypyFile:1()
[case testStringLiterals]
'bar'
u'foo'
ur'foo'
u'''bar'''
b'foo'
[out]
MypyFile:1(
ExpressionStmt:1(
StrExpr(bar))
ExpressionStmt:2(
UnicodeExpr(foo))
ExpressionStmt:3(
UnicodeExpr(foo))
ExpressionStmt:4(
UnicodeExpr(bar))
ExpressionStmt:5(
StrExpr(foo)))
[case testSimplePrint]
print 1
print 2, 3
print (4, 5)
[out]
MypyFile:1(
PrintStmt:1(
IntExpr(1)
Newline)
PrintStmt:2(
IntExpr(2)
IntExpr(3)
Newline)
PrintStmt:3(
TupleExpr:3(
IntExpr(4)
IntExpr(5))
Newline))
[case testPrintWithNoArgs]
print
[out]
MypyFile:1(
PrintStmt:1(
Newline))
[case testPrintWithTarget]
print >>foo
[out]
MypyFile:1(
PrintStmt:1(
Target(
NameExpr(foo))
Newline))
[case testPrintWithTargetAndArgs]
print >>foo, x
[out]
MypyFile:1(
PrintStmt:1(
NameExpr(x)
Target(
NameExpr(foo))
Newline))
[case testPrintWithTargetAndArgsAndTrailingComma]
print >>foo, x, y,
[out]
MypyFile:1(
PrintStmt:1(
NameExpr(x)
NameExpr(y)
Target(
NameExpr(foo))))
[case testSimpleWithTrailingComma]
print 1,
print 2, 3,
print (4, 5),
[out]
MypyFile:1(
PrintStmt:1(
IntExpr(1))
PrintStmt:2(
IntExpr(2)
IntExpr(3))
PrintStmt:3(
TupleExpr:3(
IntExpr(4)
IntExpr(5))))
[case testOctalIntLiteral]
00
01
0377
[out]
MypyFile:1(
ExpressionStmt:1(
IntExpr(0))
ExpressionStmt:2(
IntExpr(1))
ExpressionStmt:3(
IntExpr(255)))
[case testLongLiteral]
0L
123L
012L
0x123l
[out]
MypyFile:1(
ExpressionStmt:1(
IntExpr(0))
ExpressionStmt:2(
IntExpr(123))
ExpressionStmt:3(
IntExpr(10))
ExpressionStmt:4(
IntExpr(291)))
[case testTryExceptWithComma]
try:
x
except Exception, e:
y
[out]
MypyFile:1(
TryStmt:1(
Block:1(
ExpressionStmt:2(
NameExpr(x)))
NameExpr(Exception)
NameExpr(e)
Block:3(
ExpressionStmt:4(
NameExpr(y)))))
[case testTryExceptWithNestedComma]
try:
x
except (KeyError, IndexError):
y
[out]
MypyFile:1(
TryStmt:1(
Block:1(
ExpressionStmt:2(
NameExpr(x)))
TupleExpr:3(
NameExpr(KeyError)
NameExpr(IndexError))
Block:3(
ExpressionStmt:4(
NameExpr(y)))))
[case testExecStatement]
exec a
[out]
MypyFile:1(
ExecStmt:1(
NameExpr(a)))
[case testExecStatementWithIn]
exec a in globals()
[out]
MypyFile:1(
ExecStmt:1(
NameExpr(a)
CallExpr:1(
NameExpr(globals)
Args())))
[case testExecStatementWithInAnd2Expressions]
exec a in x, y
[out]
MypyFile:1(
ExecStmt:1(
NameExpr(a)
NameExpr(x)
NameExpr(y)))
[case testEllipsisInExpression_python2]
x = ... # E: Parse error before ...
[out]
[case testStrLiteralConcatenationWithMixedLiteralTypes]
u'foo' 'bar'
'bar' u'foo'
[out]
MypyFile:1(
ExpressionStmt:1(
UnicodeExpr(foobar))
ExpressionStmt:2(
UnicodeExpr(barfoo)))
[case testLegacyInequality]
1 <> 2
[out]
MypyFile:1(
ExpressionStmt:1(
ComparisonExpr:1(
!=
IntExpr(1)
IntExpr(2))))
[case testLambdaInListComprehensionInPython2]
([ 0 for x in 1, 2 if 3 ])
[out]
MypyFile:1(
ExpressionStmt:1(
ListComprehension:1(
GeneratorExpr:1(
IntExpr(0)
NameExpr(x)
TupleExpr:1(
IntExpr(1)
IntExpr(2))
IntExpr(3)))))
[case testTupleArgListInPython2]
def f(x, (y, z)): pass
[out]
MypyFile:1(
FuncDef:1(
f
Args(
Var(x)
Var(__tuple_arg_2))
Block:1(
AssignmentStmt:1(
TupleExpr:1(
NameExpr(y)
NameExpr(z))
NameExpr(__tuple_arg_2))
PassStmt:1())))
[case testTupleArgListWithTwoTupleArgsInPython2]
def f((x, y), (z, zz)): pass
[out]
MypyFile:1(
FuncDef:1(
f
Args(
Var(__tuple_arg_1)
Var(__tuple_arg_2))
Block:1(
AssignmentStmt:1(
TupleExpr:1(
NameExpr(x)
NameExpr(y))
NameExpr(__tuple_arg_1))
AssignmentStmt:1(
TupleExpr:1(
NameExpr(z)
NameExpr(zz))
NameExpr(__tuple_arg_2))
PassStmt:1())))
[case testTupleArgListWithInitializerInPython2]
def f((y, z) = (1, 2)): pass
[out]
MypyFile:1(
FuncDef:1(
f
Args(
Var(__tuple_arg_1))
Init(
AssignmentStmt:1(
NameExpr(__tuple_arg_1)
TupleExpr:1(
IntExpr(1)
IntExpr(2))))
Block:1(
AssignmentStmt:1(
TupleExpr:1(
NameExpr(y)
NameExpr(z))
NameExpr(__tuple_arg_1))
PassStmt:1())))
[case testLambdaTupleArgListInPython2]
lambda (x, y): z
[out]
MypyFile:1(
ExpressionStmt:1(
FuncExpr:1(
Args(
Var(__tuple_arg_1))
Block:1(
AssignmentStmt:1(
TupleExpr:1(
NameExpr(x)
NameExpr(y))
NameExpr(__tuple_arg_1))
ReturnStmt:1(
NameExpr(z))))))
[case testLambdaSingletonTupleArgListInPython2]
lambda (x,): z
[out]
MypyFile:1(
ExpressionStmt:1(
FuncExpr:1(
Args(
Var(__tuple_arg_1))
Block:1(
AssignmentStmt:1(
TupleExpr:1(
NameExpr(x))
NameExpr(__tuple_arg_1))
ReturnStmt:1(
NameExpr(z))))))
[case testLambdaNoTupleArgListInPython2]
lambda (x): z
[out]
MypyFile:1(
ExpressionStmt:1(
FuncExpr:1(
Args(
Var(x))
Block:1(
ReturnStmt:1(
NameExpr(z))))))
[case testInvalidExprInTupleArgListInPython2_1]
def f(x, ()): pass
[out]
main: error: Empty tuple not valid as an argument
[case testInvalidExprInTupleArgListInPython2_2]
def f(x, (y, x[1])): pass
[out]
main:1: error: Invalid item in tuple argument
[case testListLiteralAsTupleArgInPython2]
def f(x, [x]): pass
[out]
main:1: error: Parse error before [
main:1: error: Parse error before end of line
[case testTupleArgAfterStarArgInPython2]
def f(*a, (b, c)): pass
[out]
main:1: error: Invalid argument list
[case testTupleArgAfterStarStarArgInPython2]
def f(*a, (b, c)): pass
[out]
main:1: error: Invalid argument list
[case testParenthesizedArgumentInPython2]
def f(x, (y)): pass
[out]
MypyFile:1(
FuncDef:1(
f
Args(
Var(x)
Var(y))
Block:1(
PassStmt:1())))
[case testDuplicateNameInTupleArgList_python2]
def f(a, (a, b)):
pass
def g((x, (x, y))):
pass
[out]
main:1: error: Duplicate argument name "a"
main:3: error: Duplicate argument name "x"
[case testBackquotesInPython2]
`1 + 2`
[out]
MypyFile:1(
ExpressionStmt:1(
BackquoteExpr:1(
OpExpr:1(
+
IntExpr(1)
IntExpr(2)))))
[case testBackquoteSpecialCasesInPython2]
`1, 2`
[out]
MypyFile:1(
ExpressionStmt:1(
BackquoteExpr:1(
TupleExpr:1(
IntExpr(1)
IntExpr(2)))))