@@ -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
26062604STATIC void compile_dictorsetmaker_item (compiler_t * comp , mp_parse_node_struct_t * pns ) {
0 commit comments