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.
This commit is contained in:
Serhiy Storchaka 2018-11-27 09:40:29 +02:00 committed by GitHub
parent d1cbc6f8a0
commit b619b09792
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 278 additions and 230 deletions

View file

@ -55,6 +55,9 @@ def to_tuple(t):
"del v",
# Assign
"v = 1",
"a,b = c",
"(a,b) = c",
"[a,b] = c",
# AugAssign
"v += 1",
# For
@ -90,9 +93,8 @@ def to_tuple(t):
"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 @@ def to_tuple(t):
"@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 @@ def to_tuple(t):
"[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 @@ def main():
('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 @@ def main():
('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 @@ def main():
('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 @@ def main():
('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 @@ def main():
('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',))], [])),
]

View file

@ -204,7 +204,7 @@ def check(src, lineno, offset):
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)

View file

@ -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.

View file

@ -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;
}

View file

@ -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,
};