annotate Lib/test/test_syntax.py @ 80661:94de77bd0b4b 2.7

Issue #16194: document imp.load_dynamic problems when read several extension modules from the same binary object file.
author Andrew Svetlov <andrew.svetlov@gmail.com>
date Thu, 29 Nov 2012 19:51:28 +0200
parents cd8d3c2d3bce
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
36418
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
1 """This module tests SyntaxErrors.
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
2
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
3 Here's an example of the sort of thing that is tested.
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
4
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
5 >>> def f(x):
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
6 ... global x
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
7 Traceback (most recent call last):
48251
2d76af7f7702 include filename and line number in SyntaxError
Benjamin Peterson <benjamin@python.org>
parents: 47860
diff changeset
8 SyntaxError: name 'x' is local and global (<doctest test.test_syntax[0]>, line 1)
36418
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
9
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
10 The tests are all raise SyntaxErrors. They were created by checking
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
11 each C call that raises SyntaxError. There are several modules that
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
12 raise these exceptions-- ast.c, compile.c, future.c, pythonrun.c, and
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
13 symtable.c.
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
14
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
15 The parser itself outlaws a lot of invalid syntax. None of these
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
16 errors are tested here at the moment. We should add some tests; since
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
17 there are infinitely many programs with invalid syntax, we would need
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
18 to be judicious in selecting some.
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
19
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
20 The compiler generates a synthetic module name for code executed by
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
21 doctest. Since all the code comes from the same module, a suffix like
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
22 [1] is appended to the module name, As a consequence, changing the
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
23 order of tests in this module means renumbering all the errors after
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
24 it. (Maybe we should enable the ellipsis option for these tests.)
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
25
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
26 In ast.c, syntax errors are raised by calling ast_error().
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
27
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
28 Errors from set_context():
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
29
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
30 >>> obj.None = 1
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
31 Traceback (most recent call last):
52956
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
32 File "<doctest test.test_syntax[1]>", line 1
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
33 SyntaxError: cannot assign to None
36418
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
34
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
35 >>> None = 1
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
36 Traceback (most recent call last):
52956
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
37 File "<doctest test.test_syntax[2]>", line 1
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
38 SyntaxError: cannot assign to None
36418
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
39
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
40 It's a syntax error to assign to the empty tuple. Why isn't it an
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
41 error to assign to the empty list? It will always raise some error at
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
42 runtime.
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
43
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
44 >>> () = 1
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
45 Traceback (most recent call last):
52956
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
46 File "<doctest test.test_syntax[3]>", line 1
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
47 SyntaxError: can't assign to ()
36418
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
48
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
49 >>> f() = 1
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
50 Traceback (most recent call last):
52956
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
51 File "<doctest test.test_syntax[4]>", line 1
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
52 SyntaxError: can't assign to function call
36418
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
53
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
54 >>> del f()
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
55 Traceback (most recent call last):
52956
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
56 File "<doctest test.test_syntax[5]>", line 1
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
57 SyntaxError: can't delete function call
36418
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
58
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
59 >>> a + 1 = 2
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
60 Traceback (most recent call last):
52956
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
61 File "<doctest test.test_syntax[6]>", line 1
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
62 SyntaxError: can't assign to operator
36418
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
63
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
64 >>> (x for x in x) = 1
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
65 Traceback (most recent call last):
52956
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
66 File "<doctest test.test_syntax[7]>", line 1
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
67 SyntaxError: can't assign to generator expression
36418
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
68
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
69 >>> 1 = 1
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
70 Traceback (most recent call last):
52956
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
71 File "<doctest test.test_syntax[8]>", line 1
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
72 SyntaxError: can't assign to literal
36418
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
73
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
74 >>> "abc" = 1
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
75 Traceback (most recent call last):
52956
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
76 File "<doctest test.test_syntax[8]>", line 1
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
77 SyntaxError: can't assign to literal
36418
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
78
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
79 >>> `1` = 1
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
80 Traceback (most recent call last):
52956
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
81 File "<doctest test.test_syntax[10]>", line 1
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
82 SyntaxError: can't assign to repr
36418
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
83
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
84 If the left-hand side of an assignment is a list or tuple, an illegal
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
85 expression inside that contain should still cause a syntax error.
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
86 This test just checks a couple of cases rather than enumerating all of
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
87 them.
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
88
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
89 >>> (a, "b", c) = (1, 2, 3)
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
90 Traceback (most recent call last):
52956
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
91 File "<doctest test.test_syntax[11]>", line 1
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
92 SyntaxError: can't assign to literal
36418
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
93
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
94 >>> [a, b, c + 1] = [1, 2, 3]
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
95 Traceback (most recent call last):
52956
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
96 File "<doctest test.test_syntax[12]>", line 1
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
97 SyntaxError: can't assign to operator
36418
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
98
38181
ab704b99e150 - Bug #1487966: Fix SystemError with conditional expression in assignment
Neal Norwitz <nnorwitz@gmail.com>
parents: 38111
diff changeset
99 >>> a if 1 else b = 1
ab704b99e150 - Bug #1487966: Fix SystemError with conditional expression in assignment
Neal Norwitz <nnorwitz@gmail.com>
parents: 38111
diff changeset
100 Traceback (most recent call last):
52956
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
101 File "<doctest test.test_syntax[13]>", line 1
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
102 SyntaxError: can't assign to conditional expression
36418
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
103
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
104 From compiler_complex_args():
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
105
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
106 >>> def f(None=1):
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
107 ... pass
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
108 Traceback (most recent call last):
52956
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
109 File "<doctest test.test_syntax[14]>", line 1
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
110 SyntaxError: cannot assign to None
36418
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
111
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
112
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
113 From ast_for_arguments():
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
114
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
115 >>> def f(x, y=1, z):
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
116 ... pass
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
117 Traceback (most recent call last):
52956
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
118 File "<doctest test.test_syntax[15]>", line 1
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
119 SyntaxError: non-default argument follows default argument
36418
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
120
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
121 >>> def f(x, None):
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
122 ... pass
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
123 Traceback (most recent call last):
52956
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
124 File "<doctest test.test_syntax[16]>", line 1
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
125 SyntaxError: cannot assign to None
36418
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
126
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
127 >>> def f(*None):
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
128 ... pass
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
129 Traceback (most recent call last):
52956
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
130 File "<doctest test.test_syntax[17]>", line 1
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
131 SyntaxError: cannot assign to None
36418
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
132
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
133 >>> def f(**None):
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
134 ... pass
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
135 Traceback (most recent call last):
52956
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
136 File "<doctest test.test_syntax[18]>", line 1
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
137 SyntaxError: cannot assign to None
36418
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
138
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
139
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
140 From ast_for_funcdef():
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
141
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
142 >>> def None(x):
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
143 ... pass
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
144 Traceback (most recent call last):
52956
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
145 File "<doctest test.test_syntax[19]>", line 1
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
146 SyntaxError: cannot assign to None
36418
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
147
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
148
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
149 From ast_for_call():
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
150
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
151 >>> def f(it, *varargs):
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
152 ... return list(it)
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
153 >>> L = range(10)
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
154 >>> f(x for x in L)
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
155 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
156 >>> f(x for x in L, 1)
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
157 Traceback (most recent call last):
52956
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
158 File "<doctest test.test_syntax[23]>", line 1
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
159 SyntaxError: Generator expression must be parenthesized if not sole argument
36418
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
160 >>> f((x for x in L), 1)
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
161 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
162
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
163 >>> f(i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11,
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
164 ... i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22,
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
165 ... i23, i24, i25, i26, i27, i28, i29, i30, i31, i32, i33,
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
166 ... i34, i35, i36, i37, i38, i39, i40, i41, i42, i43, i44,
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
167 ... i45, i46, i47, i48, i49, i50, i51, i52, i53, i54, i55,
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
168 ... i56, i57, i58, i59, i60, i61, i62, i63, i64, i65, i66,
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
169 ... i67, i68, i69, i70, i71, i72, i73, i74, i75, i76, i77,
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
170 ... i78, i79, i80, i81, i82, i83, i84, i85, i86, i87, i88,
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
171 ... i89, i90, i91, i92, i93, i94, i95, i96, i97, i98, i99,
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
172 ... i100, i101, i102, i103, i104, i105, i106, i107, i108,
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
173 ... i109, i110, i111, i112, i113, i114, i115, i116, i117,
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
174 ... i118, i119, i120, i121, i122, i123, i124, i125, i126,
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
175 ... i127, i128, i129, i130, i131, i132, i133, i134, i135,
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
176 ... i136, i137, i138, i139, i140, i141, i142, i143, i144,
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
177 ... i145, i146, i147, i148, i149, i150, i151, i152, i153,
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
178 ... i154, i155, i156, i157, i158, i159, i160, i161, i162,
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
179 ... i163, i164, i165, i166, i167, i168, i169, i170, i171,
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
180 ... i172, i173, i174, i175, i176, i177, i178, i179, i180,
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
181 ... i181, i182, i183, i184, i185, i186, i187, i188, i189,
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
182 ... i190, i191, i192, i193, i194, i195, i196, i197, i198,
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
183 ... i199, i200, i201, i202, i203, i204, i205, i206, i207,
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
184 ... i208, i209, i210, i211, i212, i213, i214, i215, i216,
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
185 ... i217, i218, i219, i220, i221, i222, i223, i224, i225,
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
186 ... i226, i227, i228, i229, i230, i231, i232, i233, i234,
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
187 ... i235, i236, i237, i238, i239, i240, i241, i242, i243,
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
188 ... i244, i245, i246, i247, i248, i249, i250, i251, i252,
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
189 ... i253, i254, i255)
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
190 Traceback (most recent call last):
52956
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
191 File "<doctest test.test_syntax[25]>", line 1
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
192 SyntaxError: more than 255 arguments
36418
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
193
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
194 The actual error cases counts positional arguments, keyword arguments,
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
195 and generator expression arguments separately. This test combines the
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
196 three.
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
197
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
198 >>> f(i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11,
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
199 ... i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22,
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
200 ... i23, i24, i25, i26, i27, i28, i29, i30, i31, i32, i33,
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
201 ... i34, i35, i36, i37, i38, i39, i40, i41, i42, i43, i44,
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
202 ... i45, i46, i47, i48, i49, i50, i51, i52, i53, i54, i55,
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
203 ... i56, i57, i58, i59, i60, i61, i62, i63, i64, i65, i66,
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
204 ... i67, i68, i69, i70, i71, i72, i73, i74, i75, i76, i77,
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
205 ... i78, i79, i80, i81, i82, i83, i84, i85, i86, i87, i88,
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
206 ... i89, i90, i91, i92, i93, i94, i95, i96, i97, i98, i99,
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
207 ... i100, i101, i102, i103, i104, i105, i106, i107, i108,
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
208 ... i109, i110, i111, i112, i113, i114, i115, i116, i117,
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
209 ... i118, i119, i120, i121, i122, i123, i124, i125, i126,
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
210 ... i127, i128, i129, i130, i131, i132, i133, i134, i135,
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
211 ... i136, i137, i138, i139, i140, i141, i142, i143, i144,
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
212 ... i145, i146, i147, i148, i149, i150, i151, i152, i153,
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
213 ... i154, i155, i156, i157, i158, i159, i160, i161, i162,
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
214 ... i163, i164, i165, i166, i167, i168, i169, i170, i171,
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
215 ... i172, i173, i174, i175, i176, i177, i178, i179, i180,
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
216 ... i181, i182, i183, i184, i185, i186, i187, i188, i189,
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
217 ... i190, i191, i192, i193, i194, i195, i196, i197, i198,
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
218 ... i199, i200, i201, i202, i203, i204, i205, i206, i207,
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
219 ... i208, i209, i210, i211, i212, i213, i214, i215, i216,
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
220 ... i217, i218, i219, i220, i221, i222, i223, i224, i225,
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
221 ... i226, i227, i228, i229, i230, i231, i232, i233, i234,
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
222 ... i235, i236, i237, i238, i239, i240, i241, i242, i243,
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
223 ... (x for x in i244), i245, i246, i247, i248, i249, i250, i251,
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
224 ... i252=1, i253=1, i254=1, i255=1)
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
225 Traceback (most recent call last):
52956
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
226 File "<doctest test.test_syntax[26]>", line 1
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
227 SyntaxError: more than 255 arguments
36418
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
228
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
229 >>> f(lambda x: x[0] = 3)
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
230 Traceback (most recent call last):
52956
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
231 File "<doctest test.test_syntax[27]>", line 1
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
232 SyntaxError: lambda cannot contain assignment
36418
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
233
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
234 The grammar accepts any test (basically, any expression) in the
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
235 keyword slot of a call site. Test a few different options.
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
236
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
237 >>> f(x()=2)
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
238 Traceback (most recent call last):
52956
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
239 File "<doctest test.test_syntax[28]>", line 1
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
240 SyntaxError: keyword can't be an expression
36418
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
241 >>> f(a or b=1)
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
242 Traceback (most recent call last):
52956
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
243 File "<doctest test.test_syntax[29]>", line 1
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
244 SyntaxError: keyword can't be an expression
36418
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
245 >>> f(x.y=1)
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
246 Traceback (most recent call last):
52956
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
247 File "<doctest test.test_syntax[30]>", line 1
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
248 SyntaxError: keyword can't be an expression
36418
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
249
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
250
54639
1b8602c38fd0 remove error checks already done in set_context()
Benjamin Peterson <benjamin@python.org>
parents: 52956
diff changeset
251 More set_context():
36418
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
252
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
253 >>> (x for x in x) += 1
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
254 Traceback (most recent call last):
52956
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
255 File "<doctest test.test_syntax[31]>", line 1
54639
1b8602c38fd0 remove error checks already done in set_context()
Benjamin Peterson <benjamin@python.org>
parents: 52956
diff changeset
256 SyntaxError: can't assign to generator expression
36418
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
257 >>> None += 1
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
258 Traceback (most recent call last):
52956
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
259 File "<doctest test.test_syntax[32]>", line 1
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
260 SyntaxError: cannot assign to None
36418
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
261 >>> f() += 1
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
262 Traceback (most recent call last):
52956
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
263 File "<doctest test.test_syntax[33]>", line 1
54639
1b8602c38fd0 remove error checks already done in set_context()
Benjamin Peterson <benjamin@python.org>
parents: 52956
diff changeset
264 SyntaxError: can't assign to function call
40042
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
265
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
266
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
267 Test continue in finally in weird combinations.
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
268
68588
cd8d3c2d3bce #11565: Fix several typos. Patch by Piotr Kasprzyk.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 68256
diff changeset
269 continue in for loop under finally should be ok.
40042
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
270
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
271 >>> def test():
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
272 ... try:
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
273 ... pass
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
274 ... finally:
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
275 ... for abc in range(10):
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
276 ... continue
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
277 ... print abc
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
278 >>> test()
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
279 9
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
280
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
281 Start simple, a continue in a finally should not be allowed.
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
282
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
283 >>> def test():
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
284 ... for abc in range(10):
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
285 ... try:
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
286 ... pass
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
287 ... finally:
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
288 ... continue
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
289 Traceback (most recent call last):
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
290 ...
52956
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
291 File "<doctest test.test_syntax[36]>", line 6
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
292 SyntaxError: 'continue' not supported inside 'finally' clause
40042
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
293
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
294 This is essentially a continue in a finally which should not be allowed.
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
295
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
296 >>> def test():
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
297 ... for abc in range(10):
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
298 ... try:
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
299 ... pass
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
300 ... finally:
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
301 ... try:
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
302 ... continue
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
303 ... except:
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
304 ... pass
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
305 Traceback (most recent call last):
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
306 ...
52956
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
307 File "<doctest test.test_syntax[37]>", line 6
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
308 SyntaxError: 'continue' not supported inside 'finally' clause
40042
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
309
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
310 >>> def foo():
39611
17f1df1553c9 Patch #1542451: disallow continue anywhere under a finally
Neal Norwitz <nnorwitz@gmail.com>
parents: 38218
diff changeset
311 ... try:
17f1df1553c9 Patch #1542451: disallow continue anywhere under a finally
Neal Norwitz <nnorwitz@gmail.com>
parents: 38218
diff changeset
312 ... pass
17f1df1553c9 Patch #1542451: disallow continue anywhere under a finally
Neal Norwitz <nnorwitz@gmail.com>
parents: 38218
diff changeset
313 ... finally:
17f1df1553c9 Patch #1542451: disallow continue anywhere under a finally
Neal Norwitz <nnorwitz@gmail.com>
parents: 38218
diff changeset
314 ... continue
40042
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
315 Traceback (most recent call last):
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
316 ...
52956
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
317 File "<doctest test.test_syntax[38]>", line 5
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
318 SyntaxError: 'continue' not supported inside 'finally' clause
40042
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
319
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
320 >>> def foo():
39611
17f1df1553c9 Patch #1542451: disallow continue anywhere under a finally
Neal Norwitz <nnorwitz@gmail.com>
parents: 38218
diff changeset
321 ... for a in ():
17f1df1553c9 Patch #1542451: disallow continue anywhere under a finally
Neal Norwitz <nnorwitz@gmail.com>
parents: 38218
diff changeset
322 ... try:
17f1df1553c9 Patch #1542451: disallow continue anywhere under a finally
Neal Norwitz <nnorwitz@gmail.com>
parents: 38218
diff changeset
323 ... pass
17f1df1553c9 Patch #1542451: disallow continue anywhere under a finally
Neal Norwitz <nnorwitz@gmail.com>
parents: 38218
diff changeset
324 ... finally:
17f1df1553c9 Patch #1542451: disallow continue anywhere under a finally
Neal Norwitz <nnorwitz@gmail.com>
parents: 38218
diff changeset
325 ... continue
40042
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
326 Traceback (most recent call last):
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
327 ...
52956
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
328 File "<doctest test.test_syntax[39]>", line 6
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
329 SyntaxError: 'continue' not supported inside 'finally' clause
40042
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
330
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
331 >>> def foo():
39611
17f1df1553c9 Patch #1542451: disallow continue anywhere under a finally
Neal Norwitz <nnorwitz@gmail.com>
parents: 38218
diff changeset
332 ... for a in ():
17f1df1553c9 Patch #1542451: disallow continue anywhere under a finally
Neal Norwitz <nnorwitz@gmail.com>
parents: 38218
diff changeset
333 ... try:
17f1df1553c9 Patch #1542451: disallow continue anywhere under a finally
Neal Norwitz <nnorwitz@gmail.com>
parents: 38218
diff changeset
334 ... pass
17f1df1553c9 Patch #1542451: disallow continue anywhere under a finally
Neal Norwitz <nnorwitz@gmail.com>
parents: 38218
diff changeset
335 ... finally:
17f1df1553c9 Patch #1542451: disallow continue anywhere under a finally
Neal Norwitz <nnorwitz@gmail.com>
parents: 38218
diff changeset
336 ... try:
17f1df1553c9 Patch #1542451: disallow continue anywhere under a finally
Neal Norwitz <nnorwitz@gmail.com>
parents: 38218
diff changeset
337 ... continue
17f1df1553c9 Patch #1542451: disallow continue anywhere under a finally
Neal Norwitz <nnorwitz@gmail.com>
parents: 38218
diff changeset
338 ... finally:
17f1df1553c9 Patch #1542451: disallow continue anywhere under a finally
Neal Norwitz <nnorwitz@gmail.com>
parents: 38218
diff changeset
339 ... pass
40042
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
340 Traceback (most recent call last):
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
341 ...
52956
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
342 File "<doctest test.test_syntax[40]>", line 7
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
343 SyntaxError: 'continue' not supported inside 'finally' clause
40042
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
344
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
345 >>> def foo():
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
346 ... for a in ():
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
347 ... try: pass
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
348 ... finally:
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
349 ... try:
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
350 ... pass
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
351 ... except:
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
352 ... continue
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
353 Traceback (most recent call last):
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
354 ...
52956
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
355 File "<doctest test.test_syntax[41]>", line 8
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
356 SyntaxError: 'continue' not supported inside 'finally' clause
40042
ed88d6b7c1f9 Patch #1542451: fix crash with continue in nested try/finally
Georg Brandl <georg@python.org>
parents: 38218
diff changeset
357
40044
9e0431fd674a Fix #1569998: no break inside try statement (outside loop) allowed.
Georg Brandl <georg@python.org>
parents: 40042
diff changeset
358 There is one test for a break that is not in a loop. The compiler
9e0431fd674a Fix #1569998: no break inside try statement (outside loop) allowed.
Georg Brandl <georg@python.org>
parents: 40042
diff changeset
359 uses a single data structure to keep track of try-finally and loops,
9e0431fd674a Fix #1569998: no break inside try statement (outside loop) allowed.
Georg Brandl <georg@python.org>
parents: 40042
diff changeset
360 so we need to be sure that a break is actually inside a loop. If it
9e0431fd674a Fix #1569998: no break inside try statement (outside loop) allowed.
Georg Brandl <georg@python.org>
parents: 40042
diff changeset
361 isn't, there should be a syntax error.
9e0431fd674a Fix #1569998: no break inside try statement (outside loop) allowed.
Georg Brandl <georg@python.org>
parents: 40042
diff changeset
362
9e0431fd674a Fix #1569998: no break inside try statement (outside loop) allowed.
Georg Brandl <georg@python.org>
parents: 40042
diff changeset
363 >>> try:
9e0431fd674a Fix #1569998: no break inside try statement (outside loop) allowed.
Georg Brandl <georg@python.org>
parents: 40042
diff changeset
364 ... print 1
9e0431fd674a Fix #1569998: no break inside try statement (outside loop) allowed.
Georg Brandl <georg@python.org>
parents: 40042
diff changeset
365 ... break
9e0431fd674a Fix #1569998: no break inside try statement (outside loop) allowed.
Georg Brandl <georg@python.org>
parents: 40042
diff changeset
366 ... print 2
9e0431fd674a Fix #1569998: no break inside try statement (outside loop) allowed.
Georg Brandl <georg@python.org>
parents: 40042
diff changeset
367 ... finally:
9e0431fd674a Fix #1569998: no break inside try statement (outside loop) allowed.
Georg Brandl <georg@python.org>
parents: 40042
diff changeset
368 ... print 3
9e0431fd674a Fix #1569998: no break inside try statement (outside loop) allowed.
Georg Brandl <georg@python.org>
parents: 40042
diff changeset
369 Traceback (most recent call last):
9e0431fd674a Fix #1569998: no break inside try statement (outside loop) allowed.
Georg Brandl <georg@python.org>
parents: 40042
diff changeset
370 ...
52956
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
371 File "<doctest test.test_syntax[42]>", line 3
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
372 SyntaxError: 'break' outside loop
40233
9acc1775d571 Backport 52504:
Neal Norwitz <nnorwitz@gmail.com>
parents: 40044
diff changeset
373
9acc1775d571 Backport 52504:
Neal Norwitz <nnorwitz@gmail.com>
parents: 40044
diff changeset
374 This should probably raise a better error than a SystemError (or none at all).
9acc1775d571 Backport 52504:
Neal Norwitz <nnorwitz@gmail.com>
parents: 40044
diff changeset
375 In 2.5 there was a missing exception and an assert was triggered in a debug
9acc1775d571 Backport 52504:
Neal Norwitz <nnorwitz@gmail.com>
parents: 40044
diff changeset
376 build. The number of blocks must be greater than CO_MAXBLOCKS. SF #1565514
9acc1775d571 Backport 52504:
Neal Norwitz <nnorwitz@gmail.com>
parents: 40044
diff changeset
377
9acc1775d571 Backport 52504:
Neal Norwitz <nnorwitz@gmail.com>
parents: 40044
diff changeset
378 >>> while 1:
9acc1775d571 Backport 52504:
Neal Norwitz <nnorwitz@gmail.com>
parents: 40044
diff changeset
379 ... while 2:
9acc1775d571 Backport 52504:
Neal Norwitz <nnorwitz@gmail.com>
parents: 40044
diff changeset
380 ... while 3:
9acc1775d571 Backport 52504:
Neal Norwitz <nnorwitz@gmail.com>
parents: 40044
diff changeset
381 ... while 4:
9acc1775d571 Backport 52504:
Neal Norwitz <nnorwitz@gmail.com>
parents: 40044
diff changeset
382 ... while 5:
9acc1775d571 Backport 52504:
Neal Norwitz <nnorwitz@gmail.com>
parents: 40044
diff changeset
383 ... while 6:
9acc1775d571 Backport 52504:
Neal Norwitz <nnorwitz@gmail.com>
parents: 40044
diff changeset
384 ... while 8:
9acc1775d571 Backport 52504:
Neal Norwitz <nnorwitz@gmail.com>
parents: 40044
diff changeset
385 ... while 9:
9acc1775d571 Backport 52504:
Neal Norwitz <nnorwitz@gmail.com>
parents: 40044
diff changeset
386 ... while 10:
9acc1775d571 Backport 52504:
Neal Norwitz <nnorwitz@gmail.com>
parents: 40044
diff changeset
387 ... while 11:
9acc1775d571 Backport 52504:
Neal Norwitz <nnorwitz@gmail.com>
parents: 40044
diff changeset
388 ... while 12:
9acc1775d571 Backport 52504:
Neal Norwitz <nnorwitz@gmail.com>
parents: 40044
diff changeset
389 ... while 13:
9acc1775d571 Backport 52504:
Neal Norwitz <nnorwitz@gmail.com>
parents: 40044
diff changeset
390 ... while 14:
9acc1775d571 Backport 52504:
Neal Norwitz <nnorwitz@gmail.com>
parents: 40044
diff changeset
391 ... while 15:
9acc1775d571 Backport 52504:
Neal Norwitz <nnorwitz@gmail.com>
parents: 40044
diff changeset
392 ... while 16:
9acc1775d571 Backport 52504:
Neal Norwitz <nnorwitz@gmail.com>
parents: 40044
diff changeset
393 ... while 17:
9acc1775d571 Backport 52504:
Neal Norwitz <nnorwitz@gmail.com>
parents: 40044
diff changeset
394 ... while 18:
9acc1775d571 Backport 52504:
Neal Norwitz <nnorwitz@gmail.com>
parents: 40044
diff changeset
395 ... while 19:
9acc1775d571 Backport 52504:
Neal Norwitz <nnorwitz@gmail.com>
parents: 40044
diff changeset
396 ... while 20:
9acc1775d571 Backport 52504:
Neal Norwitz <nnorwitz@gmail.com>
parents: 40044
diff changeset
397 ... while 21:
9acc1775d571 Backport 52504:
Neal Norwitz <nnorwitz@gmail.com>
parents: 40044
diff changeset
398 ... while 22:
9acc1775d571 Backport 52504:
Neal Norwitz <nnorwitz@gmail.com>
parents: 40044
diff changeset
399 ... break
9acc1775d571 Backport 52504:
Neal Norwitz <nnorwitz@gmail.com>
parents: 40044
diff changeset
400 Traceback (most recent call last):
9acc1775d571 Backport 52504:
Neal Norwitz <nnorwitz@gmail.com>
parents: 40044
diff changeset
401 ...
9acc1775d571 Backport 52504:
Neal Norwitz <nnorwitz@gmail.com>
parents: 40044
diff changeset
402 SystemError: too many statically nested blocks
9acc1775d571 Backport 52504:
Neal Norwitz <nnorwitz@gmail.com>
parents: 40044
diff changeset
403
41206
d835809f45ec Patch #1642547: Fix an error/crash when encountering syntax errors in complex if statements.
Collin Winter <collinw@gmail.com>
parents: 40233
diff changeset
404 This tests assignment-context; there was a bug in Python 2.5 where compiling
d835809f45ec Patch #1642547: Fix an error/crash when encountering syntax errors in complex if statements.
Collin Winter <collinw@gmail.com>
parents: 40233
diff changeset
405 a complex 'if' (one with 'elif') would fail to notice an invalid suite,
d835809f45ec Patch #1642547: Fix an error/crash when encountering syntax errors in complex if statements.
Collin Winter <collinw@gmail.com>
parents: 40233
diff changeset
406 leading to spurious errors.
d835809f45ec Patch #1642547: Fix an error/crash when encountering syntax errors in complex if statements.
Collin Winter <collinw@gmail.com>
parents: 40233
diff changeset
407
d835809f45ec Patch #1642547: Fix an error/crash when encountering syntax errors in complex if statements.
Collin Winter <collinw@gmail.com>
parents: 40233
diff changeset
408 >>> if 1:
d835809f45ec Patch #1642547: Fix an error/crash when encountering syntax errors in complex if statements.
Collin Winter <collinw@gmail.com>
parents: 40233
diff changeset
409 ... x() = 1
d835809f45ec Patch #1642547: Fix an error/crash when encountering syntax errors in complex if statements.
Collin Winter <collinw@gmail.com>
parents: 40233
diff changeset
410 ... elif 1:
d835809f45ec Patch #1642547: Fix an error/crash when encountering syntax errors in complex if statements.
Collin Winter <collinw@gmail.com>
parents: 40233
diff changeset
411 ... pass
d835809f45ec Patch #1642547: Fix an error/crash when encountering syntax errors in complex if statements.
Collin Winter <collinw@gmail.com>
parents: 40233
diff changeset
412 Traceback (most recent call last):
41533
7ded787e6311 Whitespace normalization
Neal Norwitz <nnorwitz@gmail.com>
parents: 41206
diff changeset
413 ...
52956
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
414 File "<doctest test.test_syntax[44]>", line 2
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
415 SyntaxError: can't assign to function call
41206
d835809f45ec Patch #1642547: Fix an error/crash when encountering syntax errors in complex if statements.
Collin Winter <collinw@gmail.com>
parents: 40233
diff changeset
416
d835809f45ec Patch #1642547: Fix an error/crash when encountering syntax errors in complex if statements.
Collin Winter <collinw@gmail.com>
parents: 40233
diff changeset
417 >>> if 1:
d835809f45ec Patch #1642547: Fix an error/crash when encountering syntax errors in complex if statements.
Collin Winter <collinw@gmail.com>
parents: 40233
diff changeset
418 ... pass
d835809f45ec Patch #1642547: Fix an error/crash when encountering syntax errors in complex if statements.
Collin Winter <collinw@gmail.com>
parents: 40233
diff changeset
419 ... elif 1:
d835809f45ec Patch #1642547: Fix an error/crash when encountering syntax errors in complex if statements.
Collin Winter <collinw@gmail.com>
parents: 40233
diff changeset
420 ... x() = 1
d835809f45ec Patch #1642547: Fix an error/crash when encountering syntax errors in complex if statements.
Collin Winter <collinw@gmail.com>
parents: 40233
diff changeset
421 Traceback (most recent call last):
41533
7ded787e6311 Whitespace normalization
Neal Norwitz <nnorwitz@gmail.com>
parents: 41206
diff changeset
422 ...
52956
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
423 File "<doctest test.test_syntax[45]>", line 4
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
424 SyntaxError: can't assign to function call
41206
d835809f45ec Patch #1642547: Fix an error/crash when encountering syntax errors in complex if statements.
Collin Winter <collinw@gmail.com>
parents: 40233
diff changeset
425
d835809f45ec Patch #1642547: Fix an error/crash when encountering syntax errors in complex if statements.
Collin Winter <collinw@gmail.com>
parents: 40233
diff changeset
426 >>> if 1:
d835809f45ec Patch #1642547: Fix an error/crash when encountering syntax errors in complex if statements.
Collin Winter <collinw@gmail.com>
parents: 40233
diff changeset
427 ... x() = 1
d835809f45ec Patch #1642547: Fix an error/crash when encountering syntax errors in complex if statements.
Collin Winter <collinw@gmail.com>
parents: 40233
diff changeset
428 ... elif 1:
d835809f45ec Patch #1642547: Fix an error/crash when encountering syntax errors in complex if statements.
Collin Winter <collinw@gmail.com>
parents: 40233
diff changeset
429 ... pass
d835809f45ec Patch #1642547: Fix an error/crash when encountering syntax errors in complex if statements.
Collin Winter <collinw@gmail.com>
parents: 40233
diff changeset
430 ... else:
d835809f45ec Patch #1642547: Fix an error/crash when encountering syntax errors in complex if statements.
Collin Winter <collinw@gmail.com>
parents: 40233
diff changeset
431 ... pass
d835809f45ec Patch #1642547: Fix an error/crash when encountering syntax errors in complex if statements.
Collin Winter <collinw@gmail.com>
parents: 40233
diff changeset
432 Traceback (most recent call last):
41533
7ded787e6311 Whitespace normalization
Neal Norwitz <nnorwitz@gmail.com>
parents: 41206
diff changeset
433 ...
52956
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
434 File "<doctest test.test_syntax[46]>", line 2
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
435 SyntaxError: can't assign to function call
41206
d835809f45ec Patch #1642547: Fix an error/crash when encountering syntax errors in complex if statements.
Collin Winter <collinw@gmail.com>
parents: 40233
diff changeset
436
d835809f45ec Patch #1642547: Fix an error/crash when encountering syntax errors in complex if statements.
Collin Winter <collinw@gmail.com>
parents: 40233
diff changeset
437 >>> if 1:
d835809f45ec Patch #1642547: Fix an error/crash when encountering syntax errors in complex if statements.
Collin Winter <collinw@gmail.com>
parents: 40233
diff changeset
438 ... pass
d835809f45ec Patch #1642547: Fix an error/crash when encountering syntax errors in complex if statements.
Collin Winter <collinw@gmail.com>
parents: 40233
diff changeset
439 ... elif 1:
d835809f45ec Patch #1642547: Fix an error/crash when encountering syntax errors in complex if statements.
Collin Winter <collinw@gmail.com>
parents: 40233
diff changeset
440 ... x() = 1
d835809f45ec Patch #1642547: Fix an error/crash when encountering syntax errors in complex if statements.
Collin Winter <collinw@gmail.com>
parents: 40233
diff changeset
441 ... else:
d835809f45ec Patch #1642547: Fix an error/crash when encountering syntax errors in complex if statements.
Collin Winter <collinw@gmail.com>
parents: 40233
diff changeset
442 ... pass
d835809f45ec Patch #1642547: Fix an error/crash when encountering syntax errors in complex if statements.
Collin Winter <collinw@gmail.com>
parents: 40233
diff changeset
443 Traceback (most recent call last):
41533
7ded787e6311 Whitespace normalization
Neal Norwitz <nnorwitz@gmail.com>
parents: 41206
diff changeset
444 ...
52956
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
445 File "<doctest test.test_syntax[47]>", line 4
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
446 SyntaxError: can't assign to function call
41206
d835809f45ec Patch #1642547: Fix an error/crash when encountering syntax errors in complex if statements.
Collin Winter <collinw@gmail.com>
parents: 40233
diff changeset
447
d835809f45ec Patch #1642547: Fix an error/crash when encountering syntax errors in complex if statements.
Collin Winter <collinw@gmail.com>
parents: 40233
diff changeset
448 >>> if 1:
d835809f45ec Patch #1642547: Fix an error/crash when encountering syntax errors in complex if statements.
Collin Winter <collinw@gmail.com>
parents: 40233
diff changeset
449 ... pass
d835809f45ec Patch #1642547: Fix an error/crash when encountering syntax errors in complex if statements.
Collin Winter <collinw@gmail.com>
parents: 40233
diff changeset
450 ... elif 1:
d835809f45ec Patch #1642547: Fix an error/crash when encountering syntax errors in complex if statements.
Collin Winter <collinw@gmail.com>
parents: 40233
diff changeset
451 ... pass
d835809f45ec Patch #1642547: Fix an error/crash when encountering syntax errors in complex if statements.
Collin Winter <collinw@gmail.com>
parents: 40233
diff changeset
452 ... else:
d835809f45ec Patch #1642547: Fix an error/crash when encountering syntax errors in complex if statements.
Collin Winter <collinw@gmail.com>
parents: 40233
diff changeset
453 ... x() = 1
d835809f45ec Patch #1642547: Fix an error/crash when encountering syntax errors in complex if statements.
Collin Winter <collinw@gmail.com>
parents: 40233
diff changeset
454 Traceback (most recent call last):
41533
7ded787e6311 Whitespace normalization
Neal Norwitz <nnorwitz@gmail.com>
parents: 41206
diff changeset
455 ...
52956
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
456 File "<doctest test.test_syntax[48]>", line 6
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
457 SyntaxError: can't assign to function call
41206
d835809f45ec Patch #1642547: Fix an error/crash when encountering syntax errors in complex if statements.
Collin Winter <collinw@gmail.com>
parents: 40233
diff changeset
458
47860
80109d4044cd #3219 repeated keyword arguments aren't allowed in function calls anymore
Benjamin Peterson <benjamin@python.org>
parents: 41532
diff changeset
459 >>> f(a=23, a=234)
80109d4044cd #3219 repeated keyword arguments aren't allowed in function calls anymore
Benjamin Peterson <benjamin@python.org>
parents: 41532
diff changeset
460 Traceback (most recent call last):
80109d4044cd #3219 repeated keyword arguments aren't allowed in function calls anymore
Benjamin Peterson <benjamin@python.org>
parents: 41532
diff changeset
461 ...
52956
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
462 File "<doctest test.test_syntax[49]>", line 1
b50f11b8cad7 fix syntax tests after formatting change
Benjamin Peterson <benjamin@python.org>
parents: 49696
diff changeset
463 SyntaxError: keyword argument repeated
47860
80109d4044cd #3219 repeated keyword arguments aren't allowed in function calls anymore
Benjamin Peterson <benjamin@python.org>
parents: 41532
diff changeset
464
54742
3eb8510808c9 give a better error message when deleting ()
Benjamin Peterson <benjamin@python.org>
parents: 54639
diff changeset
465 >>> del ()
3eb8510808c9 give a better error message when deleting ()
Benjamin Peterson <benjamin@python.org>
parents: 54639
diff changeset
466 Traceback (most recent call last):
3eb8510808c9 give a better error message when deleting ()
Benjamin Peterson <benjamin@python.org>
parents: 54639
diff changeset
467 ...
3eb8510808c9 give a better error message when deleting ()
Benjamin Peterson <benjamin@python.org>
parents: 54639
diff changeset
468 File "<doctest test.test_syntax[50]>", line 1
3eb8510808c9 give a better error message when deleting ()
Benjamin Peterson <benjamin@python.org>
parents: 54639
diff changeset
469 SyntaxError: can't delete ()
3eb8510808c9 give a better error message when deleting ()
Benjamin Peterson <benjamin@python.org>
parents: 54639
diff changeset
470
62469
cb1ab8e91581 prevent assignment to set literals
Benjamin Peterson <benjamin@python.org>
parents: 59783
diff changeset
471 >>> {1, 2, 3} = 42
cb1ab8e91581 prevent assignment to set literals
Benjamin Peterson <benjamin@python.org>
parents: 59783
diff changeset
472 Traceback (most recent call last):
cb1ab8e91581 prevent assignment to set literals
Benjamin Peterson <benjamin@python.org>
parents: 59783
diff changeset
473 ...
cb1ab8e91581 prevent assignment to set literals
Benjamin Peterson <benjamin@python.org>
parents: 59783
diff changeset
474 File "<doctest test.test_syntax[50]>", line 1
cb1ab8e91581 prevent assignment to set literals
Benjamin Peterson <benjamin@python.org>
parents: 59783
diff changeset
475 SyntaxError: can't assign to literal
cb1ab8e91581 prevent assignment to set literals
Benjamin Peterson <benjamin@python.org>
parents: 59783
diff changeset
476
64186
549a40ca2074 Merged revisions 84209, 84214 via svnmerge from
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 62469
diff changeset
477 Corner-case that used to crash:
549a40ca2074 Merged revisions 84209, 84214 via svnmerge from
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 62469
diff changeset
478
549a40ca2074 Merged revisions 84209, 84214 via svnmerge from
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 62469
diff changeset
479 >>> def f(*xx, **__debug__): pass
549a40ca2074 Merged revisions 84209, 84214 via svnmerge from
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 62469
diff changeset
480 Traceback (most recent call last):
549a40ca2074 Merged revisions 84209, 84214 via svnmerge from
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 62469
diff changeset
481 SyntaxError: cannot assign to __debug__
47860
80109d4044cd #3219 repeated keyword arguments aren't allowed in function calls anymore
Benjamin Peterson <benjamin@python.org>
parents: 41532
diff changeset
482
36418
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
483 """
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
484
23589
b0658feef939 Fix SF bug [ 561825 ] Confusing error for "del f()"
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
485 import re
b0658feef939 Fix SF bug [ 561825 ] Confusing error for "del f()"
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
486 import unittest
29870
030227de8051 SF patch 763201: handling of SyntaxErrors in symbol table build
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 24364
diff changeset
487 import warnings
23589
b0658feef939 Fix SF bug [ 561825 ] Confusing error for "del f()"
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
488
24364
aa0d2d51fbde Get rid of relative imports in all unittests. Now anything that
Barry Warsaw <barry@python.org>
parents: 23589
diff changeset
489 from test import test_support
23589
b0658feef939 Fix SF bug [ 561825 ] Confusing error for "del f()"
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
490
b0658feef939 Fix SF bug [ 561825 ] Confusing error for "del f()"
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
491 class SyntaxTestCase(unittest.TestCase):
b0658feef939 Fix SF bug [ 561825 ] Confusing error for "del f()"
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
492
b0658feef939 Fix SF bug [ 561825 ] Confusing error for "del f()"
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
493 def _check_error(self, code, errtext,
38111
0e7d34aaea61 Patch #1475845: Raise IndentationError for unexpected indent.
Martin v. Löwis <martin@v.loewis.de>
parents: 36418
diff changeset
494 filename="<testcase>", mode="exec", subclass=None):
23589
b0658feef939 Fix SF bug [ 561825 ] Confusing error for "del f()"
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
495 """Check that compiling code raises SyntaxError with errtext.
b0658feef939 Fix SF bug [ 561825 ] Confusing error for "del f()"
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
496
b0658feef939 Fix SF bug [ 561825 ] Confusing error for "del f()"
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
497 errtest is a regular expression that must be present in the
38111
0e7d34aaea61 Patch #1475845: Raise IndentationError for unexpected indent.
Martin v. Löwis <martin@v.loewis.de>
parents: 36418
diff changeset
498 test of the exception raised. If subclass is specified it
0e7d34aaea61 Patch #1475845: Raise IndentationError for unexpected indent.
Martin v. Löwis <martin@v.loewis.de>
parents: 36418
diff changeset
499 is the expected subclass of SyntaxError (e.g. IndentationError).
23589
b0658feef939 Fix SF bug [ 561825 ] Confusing error for "del f()"
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
500 """
b0658feef939 Fix SF bug [ 561825 ] Confusing error for "del f()"
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
501 try:
b0658feef939 Fix SF bug [ 561825 ] Confusing error for "del f()"
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
502 compile(code, filename, mode)
b0658feef939 Fix SF bug [ 561825 ] Confusing error for "del f()"
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
503 except SyntaxError, err:
38111
0e7d34aaea61 Patch #1475845: Raise IndentationError for unexpected indent.
Martin v. Löwis <martin@v.loewis.de>
parents: 36418
diff changeset
504 if subclass and not isinstance(err, subclass):
0e7d34aaea61 Patch #1475845: Raise IndentationError for unexpected indent.
Martin v. Löwis <martin@v.loewis.de>
parents: 36418
diff changeset
505 self.fail("SyntaxError is not a %s" % subclass.__name__)
23589
b0658feef939 Fix SF bug [ 561825 ] Confusing error for "del f()"
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
506 mo = re.search(errtext, str(err))
b0658feef939 Fix SF bug [ 561825 ] Confusing error for "del f()"
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
507 if mo is None:
57370
f9f3950b5ec7 Merged revisions 76416-76417 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 48251
diff changeset
508 self.fail("%s did not contain '%r'" % (err, errtext,))
23589
b0658feef939 Fix SF bug [ 561825 ] Confusing error for "del f()"
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
509 else:
b0658feef939 Fix SF bug [ 561825 ] Confusing error for "del f()"
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
510 self.fail("compile() did not raise SyntaxError")
b0658feef939 Fix SF bug [ 561825 ] Confusing error for "del f()"
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
511
57370
f9f3950b5ec7 Merged revisions 76416-76417 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 48251
diff changeset
512 def test_paren_arg_with_default(self):
f9f3950b5ec7 Merged revisions 76416-76417 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 48251
diff changeset
513 self._check_error("def f((x)=23): pass",
f9f3950b5ec7 Merged revisions 76416-76417 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 48251
diff changeset
514 "parenthesized arg with default")
f9f3950b5ec7 Merged revisions 76416-76417 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 48251
diff changeset
515
23589
b0658feef939 Fix SF bug [ 561825 ] Confusing error for "del f()"
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
516 def test_assign_call(self):
b0658feef939 Fix SF bug [ 561825 ] Confusing error for "del f()"
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
517 self._check_error("f() = 1", "assign")
b0658feef939 Fix SF bug [ 561825 ] Confusing error for "del f()"
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
518
b0658feef939 Fix SF bug [ 561825 ] Confusing error for "del f()"
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
519 def test_assign_del(self):
b0658feef939 Fix SF bug [ 561825 ] Confusing error for "del f()"
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
520 self._check_error("del f()", "delete")
b0658feef939 Fix SF bug [ 561825 ] Confusing error for "del f()"
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
521
29870
030227de8051 SF patch 763201: handling of SyntaxErrors in symbol table build
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 24364
diff changeset
522 def test_global_err_then_warn(self):
030227de8051 SF patch 763201: handling of SyntaxErrors in symbol table build
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 24364
diff changeset
523 # Bug tickler: The SyntaxError raised for one global statement
030227de8051 SF patch 763201: handling of SyntaxErrors in symbol table build
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 24364
diff changeset
524 # shouldn't be clobbered by a SyntaxWarning issued for a later one.
030227de8051 SF patch 763201: handling of SyntaxErrors in symbol table build
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 24364
diff changeset
525 source = re.sub('(?m)^ *:', '', """\
030227de8051 SF patch 763201: handling of SyntaxErrors in symbol table build
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 24364
diff changeset
526 :def error(a):
030227de8051 SF patch 763201: handling of SyntaxErrors in symbol table build
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 24364
diff changeset
527 : global a # SyntaxError
030227de8051 SF patch 763201: handling of SyntaxErrors in symbol table build
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 24364
diff changeset
528 :def warning():
030227de8051 SF patch 763201: handling of SyntaxErrors in symbol table build
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 24364
diff changeset
529 : b = 1
030227de8051 SF patch 763201: handling of SyntaxErrors in symbol table build
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 24364
diff changeset
530 : global b # SyntaxWarning
030227de8051 SF patch 763201: handling of SyntaxErrors in symbol table build
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 24364
diff changeset
531 :""")
030227de8051 SF patch 763201: handling of SyntaxErrors in symbol table build
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 24364
diff changeset
532 warnings.filterwarnings(action='ignore', category=SyntaxWarning)
030227de8051 SF patch 763201: handling of SyntaxErrors in symbol table build
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 24364
diff changeset
533 self._check_error(source, "global")
030227de8051 SF patch 763201: handling of SyntaxErrors in symbol table build
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 24364
diff changeset
534 warnings.filters.pop(0)
030227de8051 SF patch 763201: handling of SyntaxErrors in symbol table build
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 24364
diff changeset
535
35959
fca7337710fd Improve test coverage. Hope the test_file changes work the same on windows.
Neal Norwitz <nnorwitz@gmail.com>
parents: 31515
diff changeset
536 def test_break_outside_loop(self):
fca7337710fd Improve test coverage. Hope the test_file changes work the same on windows.
Neal Norwitz <nnorwitz@gmail.com>
parents: 31515
diff changeset
537 self._check_error("break", "outside loop")
fca7337710fd Improve test coverage. Hope the test_file changes work the same on windows.
Neal Norwitz <nnorwitz@gmail.com>
parents: 31515
diff changeset
538
fca7337710fd Improve test coverage. Hope the test_file changes work the same on windows.
Neal Norwitz <nnorwitz@gmail.com>
parents: 31515
diff changeset
539 def test_delete_deref(self):
fca7337710fd Improve test coverage. Hope the test_file changes work the same on windows.
Neal Norwitz <nnorwitz@gmail.com>
parents: 31515
diff changeset
540 source = re.sub('(?m)^ *:', '', """\
fca7337710fd Improve test coverage. Hope the test_file changes work the same on windows.
Neal Norwitz <nnorwitz@gmail.com>
parents: 31515
diff changeset
541 :def foo(x):
fca7337710fd Improve test coverage. Hope the test_file changes work the same on windows.
Neal Norwitz <nnorwitz@gmail.com>
parents: 31515
diff changeset
542 : def bar():
fca7337710fd Improve test coverage. Hope the test_file changes work the same on windows.
Neal Norwitz <nnorwitz@gmail.com>
parents: 31515
diff changeset
543 : print x
fca7337710fd Improve test coverage. Hope the test_file changes work the same on windows.
Neal Norwitz <nnorwitz@gmail.com>
parents: 31515
diff changeset
544 : del x
fca7337710fd Improve test coverage. Hope the test_file changes work the same on windows.
Neal Norwitz <nnorwitz@gmail.com>
parents: 31515
diff changeset
545 :""")
fca7337710fd Improve test coverage. Hope the test_file changes work the same on windows.
Neal Norwitz <nnorwitz@gmail.com>
parents: 31515
diff changeset
546 self._check_error(source, "nested scope")
fca7337710fd Improve test coverage. Hope the test_file changes work the same on windows.
Neal Norwitz <nnorwitz@gmail.com>
parents: 31515
diff changeset
547
38111
0e7d34aaea61 Patch #1475845: Raise IndentationError for unexpected indent.
Martin v. Löwis <martin@v.loewis.de>
parents: 36418
diff changeset
548 def test_unexpected_indent(self):
0e7d34aaea61 Patch #1475845: Raise IndentationError for unexpected indent.
Martin v. Löwis <martin@v.loewis.de>
parents: 36418
diff changeset
549 self._check_error("foo()\n bar()\n", "unexpected indent",
0e7d34aaea61 Patch #1475845: Raise IndentationError for unexpected indent.
Martin v. Löwis <martin@v.loewis.de>
parents: 36418
diff changeset
550 subclass=IndentationError)
0e7d34aaea61 Patch #1475845: Raise IndentationError for unexpected indent.
Martin v. Löwis <martin@v.loewis.de>
parents: 36418
diff changeset
551
0e7d34aaea61 Patch #1475845: Raise IndentationError for unexpected indent.
Martin v. Löwis <martin@v.loewis.de>
parents: 36418
diff changeset
552 def test_no_indent(self):
0e7d34aaea61 Patch #1475845: Raise IndentationError for unexpected indent.
Martin v. Löwis <martin@v.loewis.de>
parents: 36418
diff changeset
553 self._check_error("if 1:\nfoo()", "expected an indented block",
0e7d34aaea61 Patch #1475845: Raise IndentationError for unexpected indent.
Martin v. Löwis <martin@v.loewis.de>
parents: 36418
diff changeset
554 subclass=IndentationError)
0e7d34aaea61 Patch #1475845: Raise IndentationError for unexpected indent.
Martin v. Löwis <martin@v.loewis.de>
parents: 36418
diff changeset
555
0e7d34aaea61 Patch #1475845: Raise IndentationError for unexpected indent.
Martin v. Löwis <martin@v.loewis.de>
parents: 36418
diff changeset
556 def test_bad_outdent(self):
0e7d34aaea61 Patch #1475845: Raise IndentationError for unexpected indent.
Martin v. Löwis <martin@v.loewis.de>
parents: 36418
diff changeset
557 self._check_error("if 1:\n foo()\n bar()",
0e7d34aaea61 Patch #1475845: Raise IndentationError for unexpected indent.
Martin v. Löwis <martin@v.loewis.de>
parents: 36418
diff changeset
558 "unindent does not match .* level",
0e7d34aaea61 Patch #1475845: Raise IndentationError for unexpected indent.
Martin v. Löwis <martin@v.loewis.de>
parents: 36418
diff changeset
559 subclass=IndentationError)
0e7d34aaea61 Patch #1475845: Raise IndentationError for unexpected indent.
Martin v. Löwis <martin@v.loewis.de>
parents: 36418
diff changeset
560
38218
26fb563881c9 Fix #1474677, non-keyword argument following keyword.
Neal Norwitz <nnorwitz@gmail.com>
parents: 38181
diff changeset
561 def test_kwargs_last(self):
26fb563881c9 Fix #1474677, non-keyword argument following keyword.
Neal Norwitz <nnorwitz@gmail.com>
parents: 38181
diff changeset
562 self._check_error("int(base=10, '2')", "non-keyword arg")
26fb563881c9 Fix #1474677, non-keyword argument following keyword.
Neal Norwitz <nnorwitz@gmail.com>
parents: 38181
diff changeset
563
23589
b0658feef939 Fix SF bug [ 561825 ] Confusing error for "del f()"
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
564 def test_main():
b0658feef939 Fix SF bug [ 561825 ] Confusing error for "del f()"
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
565 test_support.run_unittest(SyntaxTestCase)
36418
a625e8876407 Improved handling of syntax errors.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35959
diff changeset
566 from test import test_syntax
59783
c8c840162804 #7092 - Silence more py3k deprecation warnings, using test_support.check_py3k_warnings() helper.
Florent Xicluna <florent.xicluna@gmail.com>
parents: 58198
diff changeset
567 with test_support.check_py3k_warnings(("backquote not supported",
63572
51102abdec50 Merged revisions 79165 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 57370
diff changeset
568 SyntaxWarning)):
51102abdec50 Merged revisions 79165 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 57370
diff changeset
569 test_support.run_doctest(test_syntax, verbosity=True)
23589
b0658feef939 Fix SF bug [ 561825 ] Confusing error for "del f()"
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
570
b0658feef939 Fix SF bug [ 561825 ] Confusing error for "del f()"
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
571 if __name__ == "__main__":
b0658feef939 Fix SF bug [ 561825 ] Confusing error for "del f()"
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff changeset
572 test_main()