Skip to content

Commit 435fead

Browse files
authored
separate raw_expressions / new expressions cursors (python#168)
1 parent 04ec02a commit 435fead

File tree

1 file changed

+9
-10
lines changed

1 file changed

+9
-10
lines changed

Parser/pegen.c

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2696,7 +2696,7 @@ unpack_top_level_joined_strs(Parser *p, asdl_expr_seq *raw_expressions)
26962696
* of the regular output, so this is not necessary if you are not going
26972697
* to expose the output AST to Python level. */
26982698

2699-
Py_ssize_t i, n, req_size, raw_size;
2699+
Py_ssize_t i, req_size, raw_size;
27002700

27012701
req_size = raw_size = asdl_seq_LEN(raw_expressions);
27022702
expr_ty expr;
@@ -2707,21 +2707,20 @@ unpack_top_level_joined_strs(Parser *p, asdl_expr_seq *raw_expressions)
27072707
}
27082708
}
27092709

2710-
27112710
asdl_expr_seq *expressions = _Py_asdl_expr_seq_new(req_size, p->arena);
27122711

2713-
i = 0;
2714-
while (i < req_size) {
2715-
expr = asdl_seq_GET(raw_expressions, i);
2712+
Py_ssize_t raw_index, req_index = 0;
2713+
for (raw_index = 0; raw_index < raw_size; raw_index++) {
2714+
expr = asdl_seq_GET(raw_expressions, raw_index);
27162715
if (expr->kind == JoinedStr_kind) {
27172716
asdl_expr_seq *values = expr->v.JoinedStr.values;
2718-
for (n = 0; n < asdl_seq_LEN(values); n++) {
2719-
asdl_seq_SET(expressions, i, asdl_seq_GET(values, n));
2720-
i++;
2717+
for (Py_ssize_t n = 0; n < asdl_seq_LEN(values); n++) {
2718+
asdl_seq_SET(expressions, req_index, asdl_seq_GET(values, n));
2719+
req_index++;
27212720
}
27222721
} else {
2723-
asdl_seq_SET(expressions, i, expr);
2724-
i++;
2722+
asdl_seq_SET(expressions, req_index, expr);
2723+
req_index++;
27252724
}
27262725
}
27272726
return expressions;

0 commit comments

Comments
 (0)