Skip to content

Commit d23bec3

Browse files
committed
py/compile: Combine subscript_2 and subscript_3 into one function.
1 parent c149197 commit d23bec3

2 files changed

Lines changed: 12 additions & 14 deletions

File tree

py/compile.c

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2546,7 +2546,16 @@ STATIC void compile_trailer_period(compiler_t *comp, mp_parse_node_struct_t *pns
25462546
}
25472547

25482548
#if MICROPY_PY_BUILTINS_SLICE
2549-
STATIC void compile_subscript_3_helper(compiler_t *comp, mp_parse_node_struct_t *pns) {
2549+
STATIC void compile_subscript(compiler_t *comp, mp_parse_node_struct_t *pns) {
2550+
if (MP_PARSE_NODE_STRUCT_KIND(pns) == PN_subscript_2) {
2551+
compile_node(comp, pns->nodes[0]); // start of slice
2552+
assert(MP_PARSE_NODE_IS_STRUCT(pns->nodes[1])); // should always be
2553+
pns = (mp_parse_node_struct_t*)pns->nodes[1];
2554+
} else {
2555+
// pns is a PN_subscript_3, load None for start of slice
2556+
EMIT_ARG(load_const_tok, MP_TOKEN_KW_NONE);
2557+
}
2558+
25502559
assert(MP_PARSE_NODE_STRUCT_KIND(pns) == PN_subscript_3); // should always be
25512560
mp_parse_node_t pn = pns->nodes[0];
25522561
if (MP_PARSE_NODE_IS_NULL(pn)) {
@@ -2590,17 +2599,6 @@ STATIC void compile_subscript_3_helper(compiler_t *comp, mp_parse_node_struct_t
25902599
EMIT_ARG(build, 2, MP_EMIT_BUILD_SLICE);
25912600
}
25922601
}
2593-
2594-
STATIC void compile_subscript_2(compiler_t *comp, mp_parse_node_struct_t *pns) {
2595-
compile_node(comp, pns->nodes[0]); // start of slice
2596-
assert(MP_PARSE_NODE_IS_STRUCT(pns->nodes[1])); // should always be
2597-
compile_subscript_3_helper(comp, (mp_parse_node_struct_t*)pns->nodes[1]);
2598-
}
2599-
2600-
STATIC void compile_subscript_3(compiler_t *comp, mp_parse_node_struct_t *pns) {
2601-
EMIT_ARG(load_const_tok, MP_TOKEN_KW_NONE);
2602-
compile_subscript_3_helper(comp, pns);
2603-
}
26042602
#endif // MICROPY_PY_BUILTINS_SLICE
26052603

26062604
STATIC void compile_dictorsetmaker_item(compiler_t *comp, mp_parse_node_struct_t *pns) {

py/grammar.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -290,8 +290,8 @@ DEF_RULE(trailer_period, c(trailer_period), and(2), tok(DEL_PERIOD), tok(NAME))
290290
#if MICROPY_PY_BUILTINS_SLICE
291291
DEF_RULE(subscriptlist, c(generic_tuple), list_with_end, rule(subscript), tok(DEL_COMMA))
292292
DEF_RULE_NC(subscript, or(2), rule(subscript_3), rule(subscript_2))
293-
DEF_RULE(subscript_2, c(subscript_2), and_ident(2), rule(test), opt_rule(subscript_3))
294-
DEF_RULE(subscript_3, c(subscript_3), and(2), tok(DEL_COLON), opt_rule(subscript_3b))
293+
DEF_RULE(subscript_2, c(subscript), and_ident(2), rule(test), opt_rule(subscript_3))
294+
DEF_RULE(subscript_3, c(subscript), and(2), tok(DEL_COLON), opt_rule(subscript_3b))
295295
DEF_RULE_NC(subscript_3b, or(2), rule(subscript_3c), rule(subscript_3d))
296296
DEF_RULE_NC(subscript_3c, and(2), tok(DEL_COLON), opt_rule(test))
297297
DEF_RULE_NC(subscript_3d, and_ident(2), rule(test), opt_rule(sliceop))

0 commit comments

Comments
 (0)