summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2018-11-27 07:40:29 (GMT)
committerGitHub <noreply@github.com>2018-11-27 07:40:29 (GMT)
commitb619b097923155a7034c05c4018bf06af9f994d0 (patch)
treea9f0f2a6c1b2ef8ceccd02f18612e43dd5689420
parentd1cbc6f8a00cf881ced6238c5e652054e8fdc30f (diff)
downloadcpython-b619b097923155a7034c05c4018bf06af9f994d0.zip
cpython-b619b097923155a7034c05c4018bf06af9f994d0.tar.gz
cpython-b619b097923155a7034c05c4018bf06af9f994d0.tar.bz2
bpo-31241: Fix AST node position for list and generator comprehensions. (GH-10633)
The lineno and col_offset attributes of AST nodes for list comprehensions, generator expressions and tuples are now point to the opening parenthesis or square brace. For tuples without parenthesis they point to the position of the first item.
-rw-r--r--Lib/test/test_ast.py51
-rw-r--r--Lib/test/test_exceptions.py2
-rw-r--r--Misc/NEWS.d/next/Core and Builtins/2018-11-21-14-05-51.bpo-31241.Kin10-.rst4
-rw-r--r--Python/ast.c49
-rw-r--r--Python/importlib_zipimport.h402
5 files changed, 278 insertions, 230 deletions
diff --git a/Lib/test/test_ast.py b/Lib/test/test_ast.py
index 0d51b11..db9a6ca 100644
--- a/Lib/test/test_ast.py
+++ b/Lib/test/test_ast.py
@@ -55,6 +55,9 @@ exec_tests = [
"del v",
# Assign
"v = 1",
+ "a,b = c",
+ "(a,b) = c",
+ "[a,b] = c",
# AugAssign
"v += 1",
# For
@@ -90,9 +93,8 @@ exec_tests = [
"for v in v:continue",
# for statements with naked tuples (see http://bugs.python.org/issue6704)
"for a,b in c: pass",
- "[(a,b) for a,b in c]",
- "((a,b) for a,b in c)",
- "((a,b) for (a,b) in c)",
+ "for (a,b) in c: pass",
+ "for [a,b] in c: pass",
# Multiline generator expression (test for .lineno & .col_offset)
"""(
(
@@ -130,6 +132,8 @@ exec_tests = [
"@deco1\n@deco2()\nasync def f(): pass",
# Decorated ClassDef
"@deco1\n@deco2()\nclass C: pass",
+ # Decorator with generator argument
+ "@deco(a for a in b)\ndef f(): pass",
]
# These are compiled through "single"
@@ -168,12 +172,24 @@ eval_tests = [
"[a for b in c if d]",
# GeneratorExp
"(a for b in c if d)",
+ # Comprehensions with multiple for targets
+ "[(a,b) for a,b in c]",
+ "[(a,b) for (a,b) in c]",
+ "[(a,b) for [a,b] in c]",
+ "{(a,b) for a,b in c}",
+ "{(a,b) for (a,b) in c}",
+ "{(a,b) for [a,b] in c}",
+ "((a,b) for a,b in c)",
+ "((a,b) for (a,b) in c)",
+ "((a,b) for [a,b] in c)",
# Yield - yield expressions can't work outside a function
#
# Compare
"1 < 2 < 3",
# Call
"f(1,2,c=3,*d,**e)",
+ # Call with a generator argument
+ "f(a for a in b)",
# Num
"10",
# Str
@@ -1266,6 +1282,9 @@ exec_results = [
('Module', [('FunctionDef', (1, 0), 'f', ('arguments', [], None, [], [], None, []), [('Return', (1, 8), ('Constant', (1, 15), 1))], [], None)]),
('Module', [('Delete', (1, 0), [('Name', (1, 4), 'v', ('Del',))])]),
('Module', [('Assign', (1, 0), [('Name', (1, 0), 'v', ('Store',))], ('Constant', (1, 4), 1))]),
+('Module', [('Assign', (1, 0), [('Tuple', (1, 0), [('Name', (1, 0), 'a', ('Store',)), ('Name', (1, 2), 'b', ('Store',))], ('Store',))], ('Name', (1, 6), 'c', ('Load',)))]),
+('Module', [('Assign', (1, 0), [('Tuple', (1, 0), [('Name', (1, 1), 'a', ('Store',)), ('Name', (1, 3), 'b', ('Store',))], ('Store',))], ('Name', (1, 8), 'c', ('Load',)))]),
+('Module', [('Assign', (1, 0), [('List', (1, 0), [('Name', (1, 1), 'a', ('Store',)), ('Name', (1, 3), 'b', ('Store',))], ('Store',))], ('Name', (1, 8), 'c', ('Load',)))]),
('Module', [('AugAssign', (1, 0), ('Name', (1, 0), 'v', ('Store',)), ('Add',), ('Constant', (1, 5), 1))]),
('Module', [('For', (1, 0), ('Name', (1, 4), 'v', ('Store',)), ('Name', (1, 9), 'v', ('Load',)), [('Pass', (1, 11))], [])]),
('Module', [('While', (1, 0), ('Name', (1, 6), 'v', ('Load',)), [('Pass', (1, 8))], [])]),
@@ -1284,10 +1303,9 @@ exec_results = [
('Module', [('For', (1, 0), ('Name', (1, 4), 'v', ('Store',)), ('Name', (1, 9), 'v', ('Load',)), [('Break', (1, 11))], [])]),
('Module', [('For', (1, 0), ('Name', (1, 4), 'v', ('Store',)), ('Name', (1, 9), 'v', ('Load',)), [('Continue', (1, 11))], [])]),
('Module', [('For', (1, 0), ('Tuple', (1, 4), [('Name', (1, 4), 'a', ('Store',)), ('Name', (1, 6), 'b', ('Store',))], ('Store',)), ('Name', (1, 11), 'c', ('Load',)), [('Pass', (1, 14))], [])]),
-('Module', [('Expr', (1, 0), ('ListComp', (1, 1), ('Tuple', (1, 2), [('Name', (1, 2), 'a', ('Load',)), ('Name', (1, 4), 'b', ('Load',))], ('Load',)), [('comprehension', ('Tuple', (1, 11), [('Name', (1, 11), 'a', ('Store',)), ('Name', (1, 13), 'b', ('Store',))], ('Store',)), ('Name', (1, 18), 'c', ('Load',)), [], 0)]))]),
-('Module', [('Expr', (1, 0), ('GeneratorExp', (1, 1), ('Tuple', (1, 2), [('Name', (1, 2), 'a', ('Load',)), ('Name', (1, 4), 'b', ('Load',))], ('Load',)), [('comprehension', ('Tuple', (1, 11), [('Name', (1, 11), 'a', ('Store',)), ('Name', (1, 13), 'b', ('Store',))], ('Store',)), ('Name', (1, 18), 'c', ('Load',)), [], 0)]))]),
-('Module', [('Expr', (1, 0), ('GeneratorExp', (1, 1), ('Tuple', (1, 2), [('Name', (1, 2), 'a', ('Load',)), ('Name', (1, 4), 'b', ('Load',))], ('Load',)), [('comprehension', ('Tuple', (1, 12), [('Name', (1, 12), 'a', ('Store',)), ('Name', (1, 14), 'b', ('Store',))], ('Store',)), ('Name', (1, 20), 'c', ('Load',)), [], 0)]))]),
-('Module', [('Expr', (1, 0), ('GeneratorExp', (2, 4), ('Tuple', (3, 4), [('Name', (3, 4), 'Aa', ('Load',)), ('Name', (5, 7), 'Bb', ('Load',))], ('Load',)), [('comprehension', ('Tuple', (8, 4), [('Name', (8, 4), 'Aa', ('Store',)), ('Name', (10, 4), 'Bb', ('Store',))], ('Store',)), ('Name', (10, 10), 'Cc', ('Load',)), [], 0)]))]),
+('Module', [('For', (1, 0), ('Tuple', (1, 4), [('Name', (1, 5), 'a', ('Store',)), ('Name', (1, 7), 'b', ('Store',))], ('Store',)), ('Name', (1, 13), 'c', ('Load',)), [('Pass', (1, 16))], [])]),
+('Module', [('For', (1, 0), ('List', (1, 4), [('Name', (1, 5), 'a', ('Store',)), ('Name', (1, 7), 'b', ('Store',))], ('Store',)), ('Name', (1, 13), 'c', ('Load',)), [('Pass', (1, 16))], [])]),
+('Module', [('Expr', (1, 0), ('GeneratorExp', (1, 0), ('Tuple', (2, 4), [('Name', (3, 4), 'Aa', ('Load',)), ('Name', (5, 7), 'Bb', ('Load',))], ('Load',)), [('comprehension', ('Tuple', (8, 4), [('Name', (8, 4), 'Aa', ('Store',)), ('Name', (10, 4), 'Bb', ('Store',))], ('Store',)), ('Name', (10, 10), 'Cc', ('Load',)), [], 0)]))]),
('Module', [('Expr', (1, 0), ('DictComp', (1, 0), ('Name', (1, 1), 'a', ('Load',)), ('Name', (1, 5), 'b', ('Load',)), [('comprehension', ('Name', (1, 11), 'w', ('Store',)), ('Name', (1, 16), 'x', ('Load',)), [], 0), ('comprehension', ('Name', (1, 22), 'm', ('Store',)), ('Name', (1, 27), 'p', ('Load',)), [('Name', (1, 32), 'g', ('Load',))], 0)]))]),
('Module', [('Expr', (1, 0), ('DictComp', (1, 0), ('Name', (1, 1), 'a', ('Load',)), ('Name', (1, 5), 'b', ('Load',)), [('comprehension', ('Tuple', (1, 11), [('Name', (1, 11), 'v', ('Store',)), ('Name', (1, 13), 'w', ('Store',))], ('Store',)), ('Name', (1, 18), 'x', ('Load',)), [], 0)]))]),
('Module', [('Expr', (1, 0), ('SetComp', (1, 0), ('Name', (1, 1), 'r', ('Load',)), [('comprehension', ('Name', (1, 7), 'l', ('Store',)), ('Name', (1, 12), 'x', ('Load',)), [('Name', (1, 17), 'g', ('Load',))], 0)]))]),
@@ -1297,10 +1315,11 @@ exec_results = [
('Module', [('AsyncFunctionDef', (1, 0), 'f', ('arguments', [], None, [], [], None, []), [('AsyncWith', (2, 1), [('withitem', ('Name', (2, 12), 'a', ('Load',)), ('Name', (2, 17), 'b', ('Store',)))], [('Expr', (2, 20), ('Constant', (2, 20), 1))])], [], None)]),
('Module', [('Expr', (1, 0), ('Dict', (1, 0), [None, ('Constant', (1, 10), 2)], [('Dict', (1, 3), [('Constant', (1, 4), 1)], [('Constant', (1, 6), 2)]), ('Constant', (1, 12), 3)]))]),
('Module', [('Expr', (1, 0), ('Set', (1, 0), [('Starred', (1, 1), ('Set', (1, 2), [('Constant', (1, 3), 1), ('Constant', (1, 6), 2)]), ('Load',)), ('Constant', (1, 10), 3)]))]),
-('Module', [('AsyncFunctionDef', (1, 0), 'f', ('arguments', [], None, [], [], None, []), [('Expr', (2, 1), ('ListComp', (2, 2), ('Name', (2, 2), 'i', ('Load',)), [('comprehension', ('Name', (2, 14), 'b', ('Store',)), ('Name', (2, 19), 'c', ('Load',)), [], 1)]))], [], None)]),
+('Module', [('AsyncFunctionDef', (1, 0), 'f', ('arguments', [], None, [], [], None, []), [('Expr', (2, 1), ('ListComp', (2, 1), ('Name', (2, 2), 'i', ('Load',)), [('comprehension', ('Name', (2, 14), 'b', ('Store',)), ('Name', (2, 19), 'c', ('Load',)), [], 1)]))], [], None)]),
('Module', [('FunctionDef', (3, 0), 'f', ('arguments', [], None, [], [], None, []), [('Pass', (3, 9))], [('Name', (1, 1), 'deco1', ('Load',)), ('Call', (2, 0), ('Name', (2, 1), 'deco2', ('Load',)), [], [])], None)]),
('Module', [('AsyncFunctionDef', (3, 0), 'f', ('arguments', [], None, [], [], None, []), [('Pass', (3, 15))], [('Name', (1, 1), 'deco1', ('Load',)), ('Call', (2, 0), ('Name', (2, 1), 'deco2', ('Load',)), [], [])], None)]),
('Module', [('ClassDef', (3, 0), 'C', [], [], [('Pass', (3, 9))], [('Name', (1, 1), 'deco1', ('Load',)), ('Call', (2, 0), ('Name', (2, 1), 'deco2', ('Load',)), [], [])])]),
+('Module', [('FunctionDef', (2, 0), 'f', ('arguments', [], None, [], [], None, []), [('Pass', (2, 9))], [('Call', (1, 1), ('Name', (1, 1), 'deco', ('Load',)), [('GeneratorExp', (1, 5), ('Name', (1, 6), 'a', ('Load',)), [('comprehension', ('Name', (1, 12), 'a', ('Store',)), ('Name', (1, 17), 'b', ('Load',)), [], 0)])], [])], None)]),
]
single_results = [
('Interactive', [('Expr', (1, 0), ('BinOp', (1, 0), ('Constant', (1, 0), 1), ('Add',), ('Constant', (1, 2), 2)))]),
@@ -1315,10 +1334,20 @@ eval_results = [
('Expression', ('Dict', (1, 0), [], [])),
('Expression', ('Set', (1, 0), [('Constant', (1, 1), None)])),
('Expression', ('Dict', (1, 0), [('Constant', (2, 6), 1)], [('Constant', (4, 10), 2)])),
-('Expression', ('ListComp', (1, 1), ('Name', (1, 1), 'a', ('Load',)), [('comprehension', ('Name', (1, 7), 'b', ('Store',)), ('Name', (1, 12), 'c', ('Load',)), [('Name', (1, 17), 'd', ('Load',))], 0)])),
-('Expression', ('GeneratorExp', (1, 1), ('Name', (1, 1), 'a', ('Load',)), [('comprehension', ('Name', (1, 7), 'b', ('Store',)), ('Name', (1, 12), 'c', ('Load',)), [('Name', (1, 17), 'd', ('Load',))], 0)])),
+('Expression', ('ListComp', (1, 0), ('Name', (1, 1), 'a', ('Load',)), [('comprehension', ('Name', (1, 7), 'b', ('Store',)), ('Name', (1, 12), 'c', ('Load',)), [('Name', (1, 17), 'd', ('Load',))], 0)])),
+('Expression', ('GeneratorExp', (1, 0), ('Name', (1, 1), 'a', ('Load',)), [('comprehension', ('Name', (1, 7), 'b', ('Store',)), ('Name', (1, 12), 'c', ('Load',)), [('Name', (1, 17), 'd', ('Load',))], 0)])),
+('Expression', ('ListComp', (1, 0), ('Tuple', (1, 1), [('Name', (1, 2), 'a', ('Load',)), ('Name', (1, 4), 'b', ('Load',))], ('Load',)), [('comprehension', ('Tuple', (1, 11), [('Name', (1, 11), 'a', ('Store',)), ('Name', (1, 13), 'b', ('Store',))], ('Store',)), ('Name', (1, 18), 'c', ('Load',)), [], 0)])),
+('Expression', ('ListComp', (1, 0), ('Tuple', (1, 1), [('Name', (1, 2), 'a', ('Load',)), ('Name', (1, 4), 'b', ('Load',))], ('Load',)), [('comprehension', ('Tuple', (1, 11), [('Name', (1, 12), 'a', ('Store',)), ('Name', (1, 14), 'b', ('Store',))], ('Store',)), ('Name', (1, 20), 'c', ('Load',)), [], 0)])),
+('Expression', ('ListComp', (1, 0), ('Tuple', (1, 1), [('Name', (1, 2), 'a', ('Load',)), ('Name', (1, 4), 'b', ('Load',))], ('Load',)), [('comprehension', ('List', (1, 11), [('Name', (1, 12), 'a', ('Store',)), ('Name', (1, 14), 'b', ('Store',))], ('Store',)), ('Name', (1, 20), 'c', ('Load',)), [], 0)])),
+('Expression', ('SetComp', (1, 0), ('Tuple', (1, 1), [('Name', (1, 2), 'a', ('Load',)), ('Name', (1, 4), 'b', ('Load',))], ('Load',)), [('comprehension', ('Tuple', (1, 11), [('Name', (1, 11), 'a', ('Store',)), ('Name', (1, 13), 'b', ('Store',))], ('Store',)), ('Name', (1, 18), 'c', ('Load',)), [], 0)])),
+('Expression', ('SetComp', (1, 0), ('Tuple', (1, 1), [('Name', (1, 2), 'a', ('Load',)), ('Name', (1, 4), 'b', ('Load',))], ('Load',)), [('comprehension', ('Tuple', (1, 11), [('Name', (1, 12), 'a', ('Store',)), ('Name', (1, 14), 'b', ('Store',))], ('Store',)), ('Name', (1, 20), 'c', ('Load',)), [], 0)])),
+('Expression', ('SetComp', (1, 0), ('Tuple', (1, 1), [('Name', (1, 2), 'a', ('Load',)), ('Name', (1, 4), 'b', ('Load',))], ('Load',)), [('comprehension', ('List', (1, 11), [('Name', (1, 12), 'a', ('Store',)), ('Name', (1, 14), 'b', ('Store',))], ('Store',)), ('Name', (1, 20), 'c', ('Load',)), [], 0)])),
+('Expression', ('GeneratorExp', (1, 0), ('Tuple', (1, 1), [('Name', (1, 2), 'a', ('Load',)), ('Name', (1, 4), 'b', ('Load',))], ('Load',)), [('comprehension', ('Tuple', (1, 11), [('Name', (1, 11), 'a', ('Store',)), ('Name', (1, 13), 'b', ('Store',))], ('Store',)), ('Name', (1, 18), 'c', ('Load',)), [], 0)])),
+('Expression', ('GeneratorExp', (1, 0), ('Tuple', (1, 1), [('Name', (1, 2), 'a', ('Load',)), ('Name', (1, 4), 'b', ('Load',))], ('Load',)), [('comprehension', ('Tuple', (1, 11), [('Name', (1, 12), 'a', ('Store',)), ('Name', (1, 14), 'b', ('Store',))], ('Store',)), ('Name', (1, 20), 'c', ('Load',)), [], 0)])),
+('Expression', ('GeneratorExp', (1, 0), ('Tuple', (1, 1), [('Name', (1, 2), 'a', ('Load',)), ('Name', (1, 4), 'b', ('Load',))], ('Load',)), [('comprehension', ('List', (1, 11), [('Name', (1, 12), 'a', ('Store',)), ('Name', (1, 14), 'b', ('Store',))], ('Store',)), ('Name', (1, 20), 'c', ('Load',)), [], 0)])),
('Expression', ('Compare', (1, 0), ('Constant', (1, 0), 1), [('Lt',), ('Lt',)], [('Constant', (1, 4), 2), ('Constant', (1, 8), 3)])),
('Expression', ('Call', (1, 0), ('Name', (1, 0), 'f', ('Load',)), [('Constant', (1, 2), 1), ('Constant', (1, 4), 2), ('Starred', (1, 10), ('Name', (1, 11), 'd', ('Load',)), ('Load',))], [('keyword', 'c', ('Constant', (1, 8), 3)), ('keyword', None, ('Name', (1, 15), 'e', ('Load',)))])),
+('Expression', ('Call', (1, 0), ('Name', (1, 0), 'f', ('Load',)), [('GeneratorExp', (1, 1), ('Name', (1, 2), 'a', ('Load',)), [('comprehension', ('Name', (1, 8), 'a', ('Store',)), ('Name', (1, 13), 'b', ('Load',)), [], 0)])], [])),
('Expression', ('Constant', (1, 0), 10)),
('Expression', ('Constant', (1, 0), 'string')),
('Expression', ('Attribute', (1, 0), ('Name', (1, 0), 'a', ('Load',)), 'b', ('Load',))),
@@ -1327,7 +1356,7 @@ eval_results = [
('Expression', ('List', (1, 0), [('Constant', (1, 1), 1), ('Constant', (1, 3), 2), ('Constant', (1, 5), 3)], ('Load',))),
('Expression', ('List', (1, 0), [], ('Load',))),
('Expression', ('Tuple', (1, 0), [('Constant', (1, 0), 1), ('Constant', (1, 2), 2), ('Constant', (1, 4), 3)], ('Load',))),
-('Expression', ('Tuple', (1, 1), [('Constant', (1, 1), 1), ('Constant', (1, 3), 2), ('Constant', (1, 5), 3)], ('Load',))),
+('Expression', ('Tuple', (1, 0), [('Constant', (1, 1), 1), ('Constant', (1, 3), 2), ('Constant', (1, 5), 3)], ('Load',))),
('Expression', ('Tuple', (1, 0), [], ('Load',))),
('Expression', ('Call', (1, 0), ('Attribute', (1, 0), ('Attribute', (1, 0), ('Attribute', (1, 0), ('Name', (1, 0), 'a', ('Load',)), 'b', ('Load',)), 'c', ('Load',)), 'd', ('Load',)), [('Subscript', (1, 8), ('Attribute', (1, 8), ('Name', (1, 8), 'a', ('Load',)), 'b', ('Load',)), ('Slice', ('Constant', (1, 12), 1), ('Constant', (1, 14), 2), None), ('Load',))], [])),
]
diff --git a/Lib/test/test_exceptions.py b/Lib/test/test_exceptions.py
index 5353248..6ef529e 100644
--- a/Lib/test/test_exceptions.py
+++ b/Lib/test/test_exceptions.py
@@ -204,7 +204,7 @@ class ExceptionTests(unittest.TestCase):
check('x = 0o9', 1, 6)
# Errors thrown by symtable.c
- check('x = [(yield i) for i in range(3)]', 1, 6)
+ check('x = [(yield i) for i in range(3)]', 1, 5)
check('def f():\n from _ import *', 1, 1)
check('def f(x, x):\n pass', 1, 1)
check('def f(x):\n nonlocal x', 2, 3)
diff --git a/Misc/NEWS.d/next/Core and Builtins/2018-11-21-14-05-51.bpo-31241.Kin10-.rst b/Misc/NEWS.d/next/Core and Builtins/2018-11-21-14-05-51.bpo-31241.Kin10-.rst
new file mode 100644
index 0000000..a859a9b
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2018-11-21-14-05-51.bpo-31241.Kin10-.rst
@@ -0,0 +1,4 @@
+The *lineno* and *col_offset* attributes of AST nodes for list comprehensions,
+generator expressions and tuples are now point to the opening parenthesis or
+square brace. For tuples without parenthesis they point to the position of
+the first item.
diff --git a/Python/ast.c b/Python/ast.c
index 0d78cc5..24d5843 100644
--- a/Python/ast.c
+++ b/Python/ast.c
@@ -577,7 +577,8 @@ static stmt_ty ast_for_with_stmt(struct compiling *, const node *, bool);
static stmt_ty ast_for_for_stmt(struct compiling *, const node *, bool);
/* Note different signature for ast_for_call */
-static expr_ty ast_for_call(struct compiling *, const node *, expr_ty, bool);
+static expr_ty ast_for_call(struct compiling *, const node *, expr_ty,
+ const node *);
static PyObject *parsenumber(struct compiling *, const char *);
static expr_ty parsestrplus(struct compiling *, const node *n);
@@ -931,6 +932,16 @@ forbidden_name(struct compiling *c, identifier name, const node *n,
return 0;
}
+static expr_ty
+copy_location(expr_ty e, const node *n)
+{
+ if (e) {
+ e->lineno = LINENO(n);
+ e->col_offset = n->n_col_offset;
+ }
+ return e;
+}
+
/* Set the context ctx for expr_ty e, recursively traversing e.
Only sets context for expr kinds that "can appear in assignment context"
@@ -1519,7 +1530,7 @@ ast_for_decorator(struct compiling *c, const node *n)
name_expr = NULL;
}
else {
- d = ast_for_call(c, CHILD(n, 3), name_expr, true);
+ d = ast_for_call(c, CHILD(n, 3), name_expr, CHILD(n, 2));
if (!d)
return NULL;
name_expr = NULL;
@@ -2129,10 +2140,16 @@ ast_for_atom(struct compiling *c, const node *n)
return ast_for_expr(c, ch);
/* testlist_comp: test ( comp_for | (',' test)* [','] ) */
- if ((NCH(ch) > 1) && (TYPE(CHILD(ch, 1)) == comp_for))
- return ast_for_genexp(c, ch);
+ if (NCH(ch) == 1) {
+ return ast_for_testlist(c, ch);
+ }
- return ast_for_testlist(c, ch);
+ if (TYPE(CHILD(ch, 1)) == comp_for) {
+ return copy_location(ast_for_genexp(c, ch), n);
+ }
+ else {
+ return copy_location(ast_for_testlist(c, ch), n);
+ }
case LSQB: /* list (or list comprehension) */
ch = CHILD(n, 1);
@@ -2147,8 +2164,9 @@ ast_for_atom(struct compiling *c, const node *n)
return List(elts, Load, LINENO(n), n->n_col_offset, c->c_arena);
}
- else
- return ast_for_listcomp(c, ch);
+ else {
+ return copy_location(ast_for_listcomp(c, ch), n);
+ }
case LBRACE: {
/* dictorsetmaker: ( ((test ':' test | '**' test)
* (comp_for | (',' (test ':' test | '**' test))* [','])) |
@@ -2187,11 +2205,7 @@ ast_for_atom(struct compiling *c, const node *n)
/* It's a dictionary display. */
res = ast_for_dictdisplay(c, ch);
}
- if (res) {
- res->lineno = LINENO(n);
- res->col_offset = n->n_col_offset;
- }
- return res;
+ return copy_location(res, n);
}
}
default:
@@ -2330,7 +2344,7 @@ ast_for_trailer(struct compiling *c, const node *n, expr_ty left_expr)
return Call(left_expr, NULL, NULL, LINENO(n),
n->n_col_offset, c->c_arena);
else
- return ast_for_call(c, CHILD(n, 1), left_expr, true);
+ return ast_for_call(c, CHILD(n, 1), left_expr, CHILD(n, 0));
}
else if (TYPE(CHILD(n, 0)) == DOT) {
PyObject *attr_id = NEW_IDENTIFIER(CHILD(n, 1));
@@ -2667,7 +2681,8 @@ ast_for_expr(struct compiling *c, const node *n)
}
static expr_ty
-ast_for_call(struct compiling *c, const node *n, expr_ty func, bool allowgen)
+ast_for_call(struct compiling *c, const node *n, expr_ty func,
+ const node *maybegenbeg)
{
/*
arglist: argument (',' argument)* [',']
@@ -2690,7 +2705,7 @@ ast_for_call(struct compiling *c, const node *n, expr_ty func, bool allowgen)
nargs++;
else if (TYPE(CHILD(ch, 1)) == comp_for) {
nargs++;
- if (!allowgen) {
+ if (!maybegenbeg) {
ast_error(c, ch, "invalid syntax");
return NULL;
}
@@ -2775,7 +2790,7 @@ ast_for_call(struct compiling *c, const node *n, expr_ty func, bool allowgen)
}
else if (TYPE(CHILD(ch, 1)) == comp_for) {
/* the lone generator expression */
- e = ast_for_genexp(c, ch);
+ e = copy_location(ast_for_genexp(c, ch), maybegenbeg);
if (!e)
return NULL;
asdl_seq_SET(args, nargs++, e);
@@ -3935,7 +3950,7 @@ ast_for_classdef(struct compiling *c, const node *n, asdl_seq *decorator_seq)
if (!dummy_name)
return NULL;
dummy = Name(dummy_name, Load, LINENO(n), n->n_col_offset, c->c_arena);
- call = ast_for_call(c, CHILD(n, 3), dummy, false);
+ call = ast_for_call(c, CHILD(n, 3), dummy, NULL);
if (!call)
return NULL;
}
diff --git a/Python/importlib_zipimport.h b/Python/importlib_zipimport.h
index 2d6868e..e00010c 100644
--- a/Python/importlib_zipimport.h
+++ b/Python/importlib_zipimport.h
@@ -869,207 +869,207 @@ const unsigned char _Py_M__zipimport[] = {
132,0,0,0,90,6,109,107,116,105,109,101,41,2,218,1,
100,114,139,0,0,0,114,9,0,0,0,114,9,0,0,0,
114,10,0,0,0,218,14,95,112,97,114,115,101,95,100,111,
- 115,116,105,109,101,139,2,0,0,115,24,0,0,0,0,1,
+ 115,116,105,109,101,139,2,0,0,115,22,0,0,0,0,1,
4,1,10,1,10,1,6,1,6,1,10,1,10,1,2,0,
- 2,0,2,250,2,255,114,170,0,0,0,99,2,0,0,0,
- 0,0,0,0,6,0,0,0,10,0,0,0,67,0,0,0,
- 115,116,0,0,0,122,82,124,1,100,1,100,0,133,2,25,
- 0,100,2,107,6,115,22,116,0,130,1,124,1,100,0,100,
- 1,133,2,25,0,125,1,124,0,106,1,124,1,25,0,125,
- 2,124,2,100,3,25,0,125,3,124,2,100,4,25,0,125,
- 4,124,2,100,5,25,0,125,5,116,2,124,4,124,3,131,
- 2,124,5,102,2,87,0,83,0,4,0,116,3,116,4,116,
- 5,102,3,107,10,114,110,1,0,1,0,1,0,89,0,100,
- 6,83,0,88,0,100,0,83,0,41,7,78,114,14,0,0,
- 0,169,2,218,1,99,218,1,111,114,164,0,0,0,233,6,
- 0,0,0,233,3,0,0,0,41,2,114,0,0,0,0,114,
- 0,0,0,0,41,6,218,14,65,115,115,101,114,116,105,111,
- 110,69,114,114,111,114,114,28,0,0,0,114,170,0,0,0,
- 114,26,0,0,0,218,10,73,110,100,101,120,69,114,114,111,
- 114,114,155,0,0,0,41,6,114,32,0,0,0,114,13,0,
- 0,0,114,54,0,0,0,114,132,0,0,0,114,133,0,0,
- 0,90,17,117,110,99,111,109,112,114,101,115,115,101,100,95,
- 115,105,122,101,114,9,0,0,0,114,9,0,0,0,114,10,
- 0,0,0,114,152,0,0,0,152,2,0,0,115,20,0,0,
- 0,0,1,2,2,20,1,12,1,10,3,8,1,8,1,8,
- 1,16,1,20,1,114,152,0,0,0,99,2,0,0,0,0,
- 0,0,0,3,0,0,0,8,0,0,0,67,0,0,0,115,
- 86,0,0,0,124,1,100,1,100,0,133,2,25,0,100,2,
- 107,6,115,20,116,0,130,1,124,1,100,0,100,1,133,2,
- 25,0,125,1,122,14,124,0,106,1,124,1,25,0,125,2,
- 87,0,110,22,4,0,116,2,107,10,114,68,1,0,1,0,
- 1,0,89,0,100,0,83,0,88,0,116,3,124,0,106,4,
- 124,2,131,2,83,0,100,0,83,0,41,3,78,114,14,0,
- 0,0,114,171,0,0,0,41,5,114,176,0,0,0,114,28,
- 0,0,0,114,26,0,0,0,114,52,0,0,0,114,29,0,
- 0,0,41,3,114,32,0,0,0,114,13,0,0,0,114,54,
- 0,0,0,114,9,0,0,0,114,9,0,0,0,114,10,0,
- 0,0,114,150,0,0,0,171,2,0,0,115,14,0,0,0,
- 0,2,20,1,12,2,2,1,14,1,14,1,8,2,114,150,
- 0,0,0,99,2,0,0,0,0,0,0,0,11,0,0,0,
- 9,0,0,0,67,0,0,0,115,198,0,0,0,116,0,124,
- 0,124,1,131,2,125,2,116,1,68,0,93,160,92,3,125,
- 3,125,4,125,5,124,2,124,3,23,0,125,6,116,2,106,
- 3,100,1,124,0,106,4,116,5,124,6,100,2,100,3,141,
- 5,1,0,122,14,124,0,106,6,124,6,25,0,125,7,87,
- 0,110,20,4,0,116,7,107,10,114,88,1,0,1,0,1,
- 0,89,0,113,14,88,0,124,7,100,4,25,0,125,8,116,
- 8,124,0,106,4,124,7,131,2,125,9,124,4,114,132,116,
- 9,124,0,124,8,124,6,124,1,124,9,131,5,125,10,110,
- 10,116,10,124,8,124,9,131,2,125,10,124,10,100,0,107,
- 8,114,152,113,14,124,7,100,4,25,0,125,8,124,10,124,
- 5,124,8,102,3,2,0,1,0,83,0,113,14,116,11,100,
- 5,124,1,155,2,157,2,124,1,100,6,141,2,130,1,100,
- 0,83,0,41,7,78,122,13,116,114,121,105,110,103,32,123,
- 125,123,125,123,125,114,86,0,0,0,41,1,90,9,118,101,
- 114,98,111,115,105,116,121,114,0,0,0,0,114,57,0,0,
- 0,114,58,0,0,0,41,12,114,36,0,0,0,114,89,0,
- 0,0,114,76,0,0,0,114,77,0,0,0,114,29,0,0,
- 0,114,20,0,0,0,114,28,0,0,0,114,26,0,0,0,
- 114,52,0,0,0,114,156,0,0,0,114,162,0,0,0,114,
- 3,0,0,0,41,11,114,32,0,0,0,114,38,0,0,0,
- 114,13,0,0,0,114,90,0,0,0,114,91,0,0,0,114,
- 47,0,0,0,114,63,0,0,0,114,54,0,0,0,114,40,
- 0,0,0,114,127,0,0,0,114,46,0,0,0,114,9,0,
- 0,0,114,9,0,0,0,114,10,0,0,0,114,44,0,0,
- 0,186,2,0,0,115,36,0,0,0,0,1,10,1,14,1,
- 8,1,22,1,2,1,14,1,14,1,6,2,8,1,12,1,
- 4,1,18,2,10,1,8,3,2,1,8,1,16,2,114,44,
- 0,0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,
- 2,0,0,0,64,0,0,0,115,60,0,0,0,101,0,90,
- 1,100,0,90,2,100,1,90,3,100,2,90,4,100,3,100,
- 4,132,0,90,5,100,5,100,6,132,0,90,6,100,7,100,
- 8,132,0,90,7,100,9,100,10,132,0,90,8,100,11,100,
- 12,132,0,90,9,100,13,83,0,41,14,114,80,0,0,0,
- 122,165,80,114,105,118,97,116,101,32,99,108,97,115,115,32,
- 117,115,101,100,32,116,111,32,115,117,112,112,111,114,116,32,
- 90,105,112,73,109,112,111,114,116,46,103,101,116,95,114,101,
- 115,111,117,114,99,101,95,114,101,97,100,101,114,40,41,46,
- 10,10,32,32,32,32,84,104,105,115,32,99,108,97,115,115,
- 32,105,115,32,97,108,108,111,119,101,100,32,116,111,32,114,
- 101,102,101,114,101,110,99,101,32,97,108,108,32,116,104,101,
- 32,105,110,110,97,114,100,115,32,97,110,100,32,112,114,105,
- 118,97,116,101,32,112,97,114,116,115,32,111,102,10,32,32,
- 32,32,116,104,101,32,122,105,112,105,109,112,111,114,116,101,
- 114,46,10,32,32,32,32,70,99,3,0,0,0,0,0,0,
- 0,3,0,0,0,2,0,0,0,67,0,0,0,115,16,0,
- 0,0,124,1,124,0,95,0,124,2,124,0,95,1,100,0,
- 83,0,114,88,0,0,0,41,2,114,4,0,0,0,114,38,
- 0,0,0,41,3,114,32,0,0,0,114,4,0,0,0,114,
- 38,0,0,0,114,9,0,0,0,114,9,0,0,0,114,10,
- 0,0,0,114,34,0,0,0,220,2,0,0,115,4,0,0,
- 0,0,1,6,1,122,33,95,90,105,112,73,109,112,111,114,
- 116,82,101,115,111,117,114,99,101,82,101,97,100,101,114,46,
- 95,95,105,110,105,116,95,95,99,2,0,0,0,0,0,0,
- 0,5,0,0,0,8,0,0,0,67,0,0,0,115,92,0,
- 0,0,124,0,106,0,160,1,100,1,100,2,161,2,125,2,
- 124,2,155,0,100,2,124,1,155,0,157,3,125,3,100,3,
- 100,4,108,2,109,3,125,4,1,0,122,18,124,4,124,0,
- 106,4,160,5,124,3,161,1,131,1,87,0,83,0,4,0,
- 116,6,107,10,114,86,1,0,1,0,1,0,116,7,124,3,
- 131,1,130,1,89,0,110,2,88,0,100,0,83,0,41,5,
- 78,114,85,0,0,0,114,110,0,0,0,114,0,0,0,0,
- 41,1,218,7,66,121,116,101,115,73,79,41,8,114,38,0,
- 0,0,114,19,0,0,0,90,2,105,111,114,178,0,0,0,
- 114,4,0,0,0,114,55,0,0,0,114,22,0,0,0,218,
- 17,70,105,108,101,78,111,116,70,111,117,110,100,69,114,114,
- 111,114,41,5,114,32,0,0,0,218,8,114,101,115,111,117,
- 114,99,101,218,16,102,117,108,108,110,97,109,101,95,97,115,
- 95,112,97,116,104,114,13,0,0,0,114,178,0,0,0,114,
- 9,0,0,0,114,9,0,0,0,114,10,0,0,0,218,13,
- 111,112,101,110,95,114,101,115,111,117,114,99,101,224,2,0,
- 0,115,14,0,0,0,0,1,14,1,14,1,12,1,2,1,
- 18,1,14,1,122,38,95,90,105,112,73,109,112,111,114,116,
- 82,101,115,111,117,114,99,101,82,101,97,100,101,114,46,111,
- 112,101,110,95,114,101,115,111,117,114,99,101,99,2,0,0,
- 0,0,0,0,0,2,0,0,0,1,0,0,0,67,0,0,
- 0,115,8,0,0,0,116,0,130,1,100,0,83,0,114,88,
- 0,0,0,41,1,114,179,0,0,0,41,2,114,32,0,0,
- 0,114,180,0,0,0,114,9,0,0,0,114,9,0,0,0,
- 114,10,0,0,0,218,13,114,101,115,111,117,114,99,101,95,
- 112,97,116,104,233,2,0,0,115,2,0,0,0,0,4,122,
- 38,95,90,105,112,73,109,112,111,114,116,82,101,115,111,117,
- 114,99,101,82,101,97,100,101,114,46,114,101,115,111,117,114,
- 99,101,95,112,97,116,104,99,2,0,0,0,0,0,0,0,
- 4,0,0,0,8,0,0,0,67,0,0,0,115,72,0,0,
- 0,124,0,106,0,160,1,100,1,100,2,161,2,125,2,124,
- 2,155,0,100,2,124,1,155,0,157,3,125,3,122,16,124,
- 0,106,2,160,3,124,3,161,1,1,0,87,0,110,22,4,
- 0,116,4,107,10,114,66,1,0,1,0,1,0,89,0,100,
- 3,83,0,88,0,100,4,83,0,41,5,78,114,85,0,0,
- 0,114,110,0,0,0,70,84,41,5,114,38,0,0,0,114,
- 19,0,0,0,114,4,0,0,0,114,55,0,0,0,114,22,
- 0,0,0,41,4,114,32,0,0,0,114,59,0,0,0,114,
- 181,0,0,0,114,13,0,0,0,114,9,0,0,0,114,9,
- 0,0,0,114,10,0,0,0,218,11,105,115,95,114,101,115,
- 111,117,114,99,101,239,2,0,0,115,14,0,0,0,0,3,
- 14,1,14,1,2,1,16,1,14,1,8,1,122,36,95,90,
- 105,112,73,109,112,111,114,116,82,101,115,111,117,114,99,101,
- 82,101,97,100,101,114,46,105,115,95,114,101,115,111,117,114,
- 99,101,99,1,0,0,0,0,0,0,0,9,0,0,0,9,
- 0,0,0,99,0,0,0,115,186,0,0,0,100,1,100,2,
- 108,0,109,1,125,1,1,0,124,1,124,0,106,2,160,3,
- 124,0,106,4,161,1,131,1,125,2,124,2,160,5,124,0,
- 106,2,106,6,161,1,125,3,124,3,106,7,100,3,107,2,
- 115,58,116,8,130,1,124,3,106,9,125,4,116,10,131,0,
- 125,5,124,0,106,2,106,11,68,0,93,102,125,6,122,18,
- 124,1,124,6,131,1,160,5,124,4,161,1,125,7,87,0,
- 110,24,4,0,116,12,107,10,114,124,1,0,1,0,1,0,
- 89,0,113,78,89,0,110,2,88,0,124,7,106,9,106,7,
- 125,8,116,13,124,8,131,1,100,1,107,2,114,156,124,7,
- 106,7,86,0,1,0,113,78,124,8,124,5,107,7,114,78,
- 124,5,160,14,124,8,161,1,1,0,124,8,86,0,1,0,
- 113,78,100,0,83,0,41,4,78,114,0,0,0,0,41,1,
- 218,4,80,97,116,104,114,60,0,0,0,41,15,90,7,112,
- 97,116,104,108,105,98,114,185,0,0,0,114,4,0,0,0,
- 114,56,0,0,0,114,38,0,0,0,90,11,114,101,108,97,
- 116,105,118,101,95,116,111,114,29,0,0,0,114,59,0,0,
- 0,114,176,0,0,0,90,6,112,97,114,101,110,116,218,3,
- 115,101,116,114,28,0,0,0,114,23,0,0,0,114,51,0,
- 0,0,218,3,97,100,100,41,9,114,32,0,0,0,114,185,
- 0,0,0,90,13,102,117,108,108,110,97,109,101,95,112,97,
- 116,104,90,13,114,101,108,97,116,105,118,101,95,112,97,116,
- 104,90,12,112,97,99,107,97,103,101,95,112,97,116,104,90,
- 12,115,117,98,100,105,114,115,95,115,101,101,110,218,8,102,
- 105,108,101,110,97,109,101,90,8,114,101,108,97,116,105,118,
- 101,90,11,112,97,114,101,110,116,95,110,97,109,101,114,9,
- 0,0,0,114,9,0,0,0,114,10,0,0,0,218,8,99,
- 111,110,116,101,110,116,115,250,2,0,0,115,34,0,0,0,
- 0,8,12,1,18,1,14,3,14,1,6,1,6,1,12,1,
- 2,1,18,1,14,1,10,5,8,1,12,1,10,1,8,1,
- 10,1,122,33,95,90,105,112,73,109,112,111,114,116,82,101,
- 115,111,117,114,99,101,82,101,97,100,101,114,46,99,111,110,
- 116,101,110,116,115,78,41,10,114,6,0,0,0,114,7,0,
- 0,0,114,8,0,0,0,114,84,0,0,0,114,81,0,0,
- 0,114,34,0,0,0,114,182,0,0,0,114,183,0,0,0,
- 114,184,0,0,0,114,189,0,0,0,114,9,0,0,0,114,
- 9,0,0,0,114,9,0,0,0,114,10,0,0,0,114,80,
- 0,0,0,212,2,0,0,115,14,0,0,0,8,5,4,1,
- 4,2,8,4,8,9,8,6,8,11,114,80,0,0,0,41,
- 45,114,84,0,0,0,90,26,95,102,114,111,122,101,110,95,
- 105,109,112,111,114,116,108,105,98,95,101,120,116,101,114,110,
- 97,108,114,21,0,0,0,114,1,0,0,0,114,2,0,0,
- 0,90,17,95,102,114,111,122,101,110,95,105,109,112,111,114,
- 116,108,105,98,114,76,0,0,0,114,149,0,0,0,114,111,
- 0,0,0,114,153,0,0,0,114,67,0,0,0,114,132,0,
- 0,0,90,7,95,95,97,108,108,95,95,114,20,0,0,0,
- 90,15,112,97,116,104,95,115,101,112,97,114,97,116,111,114,
- 115,114,18,0,0,0,114,75,0,0,0,114,3,0,0,0,
- 114,25,0,0,0,218,4,116,121,112,101,114,70,0,0,0,
- 114,114,0,0,0,114,116,0,0,0,114,118,0,0,0,114,
- 4,0,0,0,114,89,0,0,0,114,36,0,0,0,114,37,
- 0,0,0,114,35,0,0,0,114,27,0,0,0,114,123,0,
- 0,0,114,143,0,0,0,114,145,0,0,0,114,52,0,0,
- 0,114,148,0,0,0,114,156,0,0,0,218,8,95,95,99,
- 111,100,101,95,95,114,154,0,0,0,114,160,0,0,0,114,
- 162,0,0,0,114,170,0,0,0,114,152,0,0,0,114,150,
- 0,0,0,114,44,0,0,0,114,80,0,0,0,114,9,0,
+ 2,0,2,249,114,170,0,0,0,99,2,0,0,0,0,0,
+ 0,0,6,0,0,0,10,0,0,0,67,0,0,0,115,116,
+ 0,0,0,122,82,124,1,100,1,100,0,133,2,25,0,100,
+ 2,107,6,115,22,116,0,130,1,124,1,100,0,100,1,133,
+ 2,25,0,125,1,124,0,106,1,124,1,25,0,125,2,124,
+ 2,100,3,25,0,125,3,124,2,100,4,25,0,125,4,124,
+ 2,100,5,25,0,125,5,116,2,124,4,124,3,131,2,124,
+ 5,102,2,87,0,83,0,4,0,116,3,116,4,116,5,102,
+ 3,107,10,114,110,1,0,1,0,1,0,89,0,100,6,83,
+ 0,88,0,100,0,83,0,41,7,78,114,14,0,0,0,169,
+ 2,218,1,99,218,1,111,114,164,0,0,0,233,6,0,0,
+ 0,233,3,0,0,0,41,2,114,0,0,0,0,114,0,0,
+ 0,0,41,6,218,14,65,115,115,101,114,116,105,111,110,69,
+ 114,114,111,114,114,28,0,0,0,114,170,0,0,0,114,26,
+ 0,0,0,218,10,73,110,100,101,120,69,114,114,111,114,114,
+ 155,0,0,0,41,6,114,32,0,0,0,114,13,0,0,0,
+ 114,54,0,0,0,114,132,0,0,0,114,133,0,0,0,90,
+ 17,117,110,99,111,109,112,114,101,115,115,101,100,95,115,105,
+ 122,101,114,9,0,0,0,114,9,0,0,0,114,10,0,0,
+ 0,114,152,0,0,0,152,2,0,0,115,20,0,0,0,0,
+ 1,2,2,20,1,12,1,10,3,8,1,8,1,8,1,16,
+ 1,20,1,114,152,0,0,0,99,2,0,0,0,0,0,0,
+ 0,3,0,0,0,8,0,0,0,67,0,0,0,115,86,0,
+ 0,0,124,1,100,1,100,0,133,2,25,0,100,2,107,6,
+ 115,20,116,0,130,1,124,1,100,0,100,1,133,2,25,0,
+ 125,1,122,14,124,0,106,1,124,1,25,0,125,2,87,0,
+ 110,22,4,0,116,2,107,10,114,68,1,0,1,0,1,0,
+ 89,0,100,0,83,0,88,0,116,3,124,0,106,4,124,2,
+ 131,2,83,0,100,0,83,0,41,3,78,114,14,0,0,0,
+ 114,171,0,0,0,41,5,114,176,0,0,0,114,28,0,0,
+ 0,114,26,0,0,0,114,52,0,0,0,114,29,0,0,0,
+ 41,3,114,32,0,0,0,114,13,0,0,0,114,54,0,0,
+ 0,114,9,0,0,0,114,9,0,0,0,114,10,0,0,0,
+ 114,150,0,0,0,171,2,0,0,115,14,0,0,0,0,2,
+ 20,1,12,2,2,1,14,1,14,1,8,2,114,150,0,0,
+ 0,99,2,0,0,0,0,0,0,0,11,0,0,0,9,0,
+ 0,0,67,0,0,0,115,198,0,0,0,116,0,124,0,124,
+ 1,131,2,125,2,116,1,68,0,93,160,92,3,125,3,125,
+ 4,125,5,124,2,124,3,23,0,125,6,116,2,106,3,100,
+ 1,124,0,106,4,116,5,124,6,100,2,100,3,141,5,1,
+ 0,122,14,124,0,106,6,124,6,25,0,125,7,87,0,110,
+ 20,4,0,116,7,107,10,114,88,1,0,1,0,1,0,89,
+ 0,113,14,88,0,124,7,100,4,25,0,125,8,116,8,124,
+ 0,106,4,124,7,131,2,125,9,124,4,114,132,116,9,124,
+ 0,124,8,124,6,124,1,124,9,131,5,125,10,110,10,116,
+ 10,124,8,124,9,131,2,125,10,124,10,100,0,107,8,114,
+ 152,113,14,124,7,100,4,25,0,125,8,124,10,124,5,124,
+ 8,102,3,2,0,1,0,83,0,113,14,116,11,100,5,124,
+ 1,155,2,157,2,124,1,100,6,141,2,130,1,100,0,83,
+ 0,41,7,78,122,13,116,114,121,105,110,103,32,123,125,123,
+ 125,123,125,114,86,0,0,0,41,1,90,9,118,101,114,98,
+ 111,115,105,116,121,114,0,0,0,0,114,57,0,0,0,114,
+ 58,0,0,0,41,12,114,36,0,0,0,114,89,0,0,0,
+ 114,76,0,0,0,114,77,0,0,0,114,29,0,0,0,114,
+ 20,0,0,0,114,28,0,0,0,114,26,0,0,0,114,52,
+ 0,0,0,114,156,0,0,0,114,162,0,0,0,114,3,0,
+ 0,0,41,11,114,32,0,0,0,114,38,0,0,0,114,13,
+ 0,0,0,114,90,0,0,0,114,91,0,0,0,114,47,0,
+ 0,0,114,63,0,0,0,114,54,0,0,0,114,40,0,0,
+ 0,114,127,0,0,0,114,46,0,0,0,114,9,0,0,0,
+ 114,9,0,0,0,114,10,0,0,0,114,44,0,0,0,186,
+ 2,0,0,115,36,0,0,0,0,1,10,1,14,1,8,1,
+ 22,1,2,1,14,1,14,1,6,2,8,1,12,1,4,1,
+ 18,2,10,1,8,3,2,1,8,1,16,2,114,44,0,0,
+ 0,99,0,0,0,0,0,0,0,0,0,0,0,0,2,0,
+ 0,0,64,0,0,0,115,60,0,0,0,101,0,90,1,100,
+ 0,90,2,100,1,90,3,100,2,90,4,100,3,100,4,132,
+ 0,90,5,100,5,100,6,132,0,90,6,100,7,100,8,132,
+ 0,90,7,100,9,100,10,132,0,90,8,100,11,100,12,132,
+ 0,90,9,100,13,83,0,41,14,114,80,0,0,0,122,165,
+ 80,114,105,118,97,116,101,32,99,108,97,115,115,32,117,115,
+ 101,100,32,116,111,32,115,117,112,112,111,114,116,32,90,105,
+ 112,73,109,112,111,114,116,46,103,101,116,95,114,101,115,111,
+ 117,114,99,101,95,114,101,97,100,101,114,40,41,46,10,10,
+ 32,32,32,32,84,104,105,115,32,99,108,97,115,115,32,105,
+ 115,32,97,108,108,111,119,101,100,32,116,111,32,114,101,102,
+ 101,114,101,110,99,101,32,97,108,108,32,116,104,101,32,105,
+ 110,110,97,114,100,115,32,97,110,100,32,112,114,105,118,97,
+ 116,101,32,112,97,114,116,115,32,111,102,10,32,32,32,32,
+ 116,104,101,32,122,105,112,105,109,112,111,114,116,101,114,46,
+ 10,32,32,32,32,70,99,3,0,0,0,0,0,0,0,3,
+ 0,0,0,2,0,0,0,67,0,0,0,115,16,0,0,0,
+ 124,1,124,0,95,0,124,2,124,0,95,1,100,0,83,0,
+ 114,88,0,0,0,41,2,114,4,0,0,0,114,38,0,0,
+ 0,41,3,114,32,0,0,0,114,4,0,0,0,114,38,0,
0,0,114,9,0,0,0,114,9,0,0,0,114,10,0,0,
- 0,218,8,60,109,111,100,117,108,101,62,13,0,0,0,115,
- 90,0,0,0,4,4,8,1,16,1,8,1,8,1,8,1,
- 8,1,8,1,8,2,8,3,6,1,14,3,16,4,4,2,
- 8,2,4,1,4,1,4,2,14,127,0,127,0,1,12,1,
- 12,1,2,1,2,253,2,255,2,9,8,4,8,9,8,31,
- 8,126,2,254,2,29,4,5,8,21,8,46,8,10,8,46,
- 10,5,8,7,8,6,8,13,8,19,8,15,8,26,
+ 0,114,34,0,0,0,220,2,0,0,115,4,0,0,0,0,
+ 1,6,1,122,33,95,90,105,112,73,109,112,111,114,116,82,
+ 101,115,111,117,114,99,101,82,101,97,100,101,114,46,95,95,
+ 105,110,105,116,95,95,99,2,0,0,0,0,0,0,0,5,
+ 0,0,0,8,0,0,0,67,0,0,0,115,92,0,0,0,
+ 124,0,106,0,160,1,100,1,100,2,161,2,125,2,124,2,
+ 155,0,100,2,124,1,155,0,157,3,125,3,100,3,100,4,
+ 108,2,109,3,125,4,1,0,122,18,124,4,124,0,106,4,
+ 160,5,124,3,161,1,131,1,87,0,83,0,4,0,116,6,
+ 107,10,114,86,1,0,1,0,1,0,116,7,124,3,131,1,
+ 130,1,89,0,110,2,88,0,100,0,83,0,41,5,78,114,
+ 85,0,0,0,114,110,0,0,0,114,0,0,0,0,41,1,
+ 218,7,66,121,116,101,115,73,79,41,8,114,38,0,0,0,
+ 114,19,0,0,0,90,2,105,111,114,178,0,0,0,114,4,
+ 0,0,0,114,55,0,0,0,114,22,0,0,0,218,17,70,
+ 105,108,101,78,111,116,70,111,117,110,100,69,114,114,111,114,
+ 41,5,114,32,0,0,0,218,8,114,101,115,111,117,114,99,
+ 101,218,16,102,117,108,108,110,97,109,101,95,97,115,95,112,
+ 97,116,104,114,13,0,0,0,114,178,0,0,0,114,9,0,
+ 0,0,114,9,0,0,0,114,10,0,0,0,218,13,111,112,
+ 101,110,95,114,101,115,111,117,114,99,101,224,2,0,0,115,
+ 14,0,0,0,0,1,14,1,14,1,12,1,2,1,18,1,
+ 14,1,122,38,95,90,105,112,73,109,112,111,114,116,82,101,
+ 115,111,117,114,99,101,82,101,97,100,101,114,46,111,112,101,
+ 110,95,114,101,115,111,117,114,99,101,99,2,0,0,0,0,
+ 0,0,0,2,0,0,0,1,0,0,0,67,0,0,0,115,
+ 8,0,0,0,116,0,130,1,100,0,83,0,114,88,0,0,
+ 0,41,1,114,179,0,0,0,41,2,114,32,0,0,0,114,
+ 180,0,0,0,114,9,0,0,0,114,9,0,0,0,114,10,
+ 0,0,0,218,13,114,101,115,111,117,114,99,101,95,112,97,
+ 116,104,233,2,0,0,115,2,0,0,0,0,4,122,38,95,
+ 90,105,112,73,109,112,111,114,116,82,101,115,111,117,114,99,
+ 101,82,101,97,100,101,114,46,114,101,115,111,117,114,99,101,
+ 95,112,97,116,104,99,2,0,0,0,0,0,0,0,4,0,
+ 0,0,8,0,0,0,67,0,0,0,115,72,0,0,0,124,
+ 0,106,0,160,1,100,1,100,2,161,2,125,2,124,2,155,
+ 0,100,2,124,1,155,0,157,3,125,3,122,16,124,0,106,
+ 2,160,3,124,3,161,1,1,0,87,0,110,22,4,0,116,
+ 4,107,10,114,66,1,0,1,0,1,0,89,0,100,3,83,
+ 0,88,0,100,4,83,0,41,5,78,114,85,0,0,0,114,
+ 110,0,0,0,70,84,41,5,114,38,0,0,0,114,19,0,
+ 0,0,114,4,0,0,0,114,55,0,0,0,114,22,0,0,
+ 0,41,4,114,32,0,0,0,114,59,0,0,0,114,181,0,
+ 0,0,114,13,0,0,0,114,9,0,0,0,114,9,0,0,
+ 0,114,10,0,0,0,218,11,105,115,95,114,101,115,111,117,
+ 114,99,101,239,2,0,0,115,14,0,0,0,0,3,14,1,
+ 14,1,2,1,16,1,14,1,8,1,122,36,95,90,105,112,
+ 73,109,112,111,114,116,82,101,115,111,117,114,99,101,82,101,
+ 97,100,101,114,46,105,115,95,114,101,115,111,117,114,99,101,
+ 99,1,0,0,0,0,0,0,0,9,0,0,0,9,0,0,
+ 0,99,0,0,0,115,186,0,0,0,100,1,100,2,108,0,
+ 109,1,125,1,1,0,124,1,124,0,106,2,160,3,124,0,
+ 106,4,161,1,131,1,125,2,124,2,160,5,124,0,106,2,
+ 106,6,161,1,125,3,124,3,106,7,100,3,107,2,115,58,
+ 116,8,130,1,124,3,106,9,125,4,116,10,131,0,125,5,
+ 124,0,106,2,106,11,68,0,93,102,125,6,122,18,124,1,
+ 124,6,131,1,160,5,124,4,161,1,125,7,87,0,110,24,
+ 4,0,116,12,107,10,114,124,1,0,1,0,1,0,89,0,
+ 113,78,89,0,110,2,88,0,124,7,106,9,106,7,125,8,
+ 116,13,124,8,131,1,100,1,107,2,114,156,124,7,106,7,
+ 86,0,1,0,113,78,124,8,124,5,107,7,114,78,124,5,
+ 160,14,124,8,161,1,1,0,124,8,86,0,1,0,113,78,
+ 100,0,83,0,41,4,78,114,0,0,0,0,41,1,218,4,
+ 80,97,116,104,114,60,0,0,0,41,15,90,7,112,97,116,
+ 104,108,105,98,114,185,0,0,0,114,4,0,0,0,114,56,
+ 0,0,0,114,38,0,0,0,90,11,114,101,108,97,116,105,
+ 118,101,95,116,111,114,29,0,0,0,114,59,0,0,0,114,
+ 176,0,0,0,90,6,112,97,114,101,110,116,218,3,115,101,
+ 116,114,28,0,0,0,114,23,0,0,0,114,51,0,0,0,
+ 218,3,97,100,100,41,9,114,32,0,0,0,114,185,0,0,
+ 0,90,13,102,117,108,108,110,97,109,101,95,112,97,116,104,
+ 90,13,114,101,108,97,116,105,118,101,95,112,97,116,104,90,
+ 12,112,97,99,107,97,103,101,95,112,97,116,104,90,12,115,
+ 117,98,100,105,114,115,95,115,101,101,110,218,8,102,105,108,
+ 101,110,97,109,101,90,8,114,101,108,97,116,105,118,101,90,
+ 11,112,97,114,101,110,116,95,110,97,109,101,114,9,0,0,
+ 0,114,9,0,0,0,114,10,0,0,0,218,8,99,111,110,
+ 116,101,110,116,115,250,2,0,0,115,34,0,0,0,0,8,
+ 12,1,18,1,14,3,14,1,6,1,6,1,12,1,2,1,
+ 18,1,14,1,10,5,8,1,12,1,10,1,8,1,10,1,
+ 122,33,95,90,105,112,73,109,112,111,114,116,82,101,115,111,
+ 117,114,99,101,82,101,97,100,101,114,46,99,111,110,116,101,
+ 110,116,115,78,41,10,114,6,0,0,0,114,7,0,0,0,
+ 114,8,0,0,0,114,84,0,0,0,114,81,0,0,0,114,
+ 34,0,0,0,114,182,0,0,0,114,183,0,0,0,114,184,
+ 0,0,0,114,189,0,0,0,114,9,0,0,0,114,9,0,
+ 0,0,114,9,0,0,0,114,10,0,0,0,114,80,0,0,
+ 0,212,2,0,0,115,14,0,0,0,8,5,4,1,4,2,
+ 8,4,8,9,8,6,8,11,114,80,0,0,0,41,45,114,
+ 84,0,0,0,90,26,95,102,114,111,122,101,110,95,105,109,
+ 112,111,114,116,108,105,98,95,101,120,116,101,114,110,97,108,
+ 114,21,0,0,0,114,1,0,0,0,114,2,0,0,0,90,
+ 17,95,102,114,111,122,101,110,95,105,109,112,111,114,116,108,
+ 105,98,114,76,0,0,0,114,149,0,0,0,114,111,0,0,
+ 0,114,153,0,0,0,114,67,0,0,0,114,132,0,0,0,
+ 90,7,95,95,97,108,108,95,95,114,20,0,0,0,90,15,
+ 112,97,116,104,95,115,101,112,97,114,97,116,111,114,115,114,
+ 18,0,0,0,114,75,0,0,0,114,3,0,0,0,114,25,
+ 0,0,0,218,4,116,121,112,101,114,70,0,0,0,114,114,
+ 0,0,0,114,116,0,0,0,114,118,0,0,0,114,4,0,
+ 0,0,114,89,0,0,0,114,36,0,0,0,114,37,0,0,
+ 0,114,35,0,0,0,114,27,0,0,0,114,123,0,0,0,
+ 114,143,0,0,0,114,145,0,0,0,114,52,0,0,0,114,
+ 148,0,0,0,114,156,0,0,0,218,8,95,95,99,111,100,
+ 101,95,95,114,154,0,0,0,114,160,0,0,0,114,162,0,
+ 0,0,114,170,0,0,0,114,152,0,0,0,114,150,0,0,
+ 0,114,44,0,0,0,114,80,0,0,0,114,9,0,0,0,
+ 114,9,0,0,0,114,9,0,0,0,114,10,0,0,0,218,
+ 8,60,109,111,100,117,108,101,62,13,0,0,0,115,88,0,
+ 0,0,4,4,8,1,16,1,8,1,8,1,8,1,8,1,
+ 8,1,8,2,8,3,6,1,14,3,16,4,4,2,8,2,
+ 4,1,4,1,4,2,14,127,0,127,0,1,12,1,12,1,
+ 2,1,2,252,4,9,8,4,8,9,8,31,8,126,2,254,
+ 2,29,4,5,8,21,8,46,8,10,8,46,10,5,8,7,
+ 8,6,8,13,8,19,8,15,8,26,
};