summaryrefslogtreecommitdiff
path: root/py/compile.c
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2018-06-19 13:57:55 +1000
committerDamien George <damien.p.george@gmail.com>2018-06-22 17:00:29 +1000
commitd23bec3fc89d1c1f7a2ac8023161e3f2620ffa13 (patch)
tree425f57614c83cb3253f94ed0c2ae3883a925f874 /py/compile.c
parentc14919792868d0e42bb84d61e584797c6c977114 (diff)
py/compile: Combine subscript_2 and subscript_3 into one function.
Diffstat (limited to 'py/compile.c')
-rw-r--r--py/compile.c22
1 files changed, 10 insertions, 12 deletions
diff --git a/py/compile.c b/py/compile.c
index f242e7458..a857598c5 100644
--- a/py/compile.c
+++ b/py/compile.c
@@ -2546,7 +2546,16 @@ STATIC void compile_trailer_period(compiler_t *comp, mp_parse_node_struct_t *pns
}
#if MICROPY_PY_BUILTINS_SLICE
-STATIC void compile_subscript_3_helper(compiler_t *comp, mp_parse_node_struct_t *pns) {
+STATIC void compile_subscript(compiler_t *comp, mp_parse_node_struct_t *pns) {
+ if (MP_PARSE_NODE_STRUCT_KIND(pns) == PN_subscript_2) {
+ compile_node(comp, pns->nodes[0]); // start of slice
+ assert(MP_PARSE_NODE_IS_STRUCT(pns->nodes[1])); // should always be
+ pns = (mp_parse_node_struct_t*)pns->nodes[1];
+ } else {
+ // pns is a PN_subscript_3, load None for start of slice
+ EMIT_ARG(load_const_tok, MP_TOKEN_KW_NONE);
+ }
+
assert(MP_PARSE_NODE_STRUCT_KIND(pns) == PN_subscript_3); // should always be
mp_parse_node_t pn = pns->nodes[0];
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
EMIT_ARG(build, 2, MP_EMIT_BUILD_SLICE);
}
}
-
-STATIC void compile_subscript_2(compiler_t *comp, mp_parse_node_struct_t *pns) {
- compile_node(comp, pns->nodes[0]); // start of slice
- assert(MP_PARSE_NODE_IS_STRUCT(pns->nodes[1])); // should always be
- compile_subscript_3_helper(comp, (mp_parse_node_struct_t*)pns->nodes[1]);
-}
-
-STATIC void compile_subscript_3(compiler_t *comp, mp_parse_node_struct_t *pns) {
- EMIT_ARG(load_const_tok, MP_TOKEN_KW_NONE);
- compile_subscript_3_helper(comp, pns);
-}
#endif // MICROPY_PY_BUILTINS_SLICE
STATIC void compile_dictorsetmaker_item(compiler_t *comp, mp_parse_node_struct_t *pns) {