diff --git a/py/compile.c b/py/compile.c index 6abe9ea2d7..b449ccf394 100644 --- a/py/compile.c +++ b/py/compile.c @@ -703,7 +703,7 @@ void c_assign_tuple(compiler_t *comp, mp_parse_node_t node_head, uint num_tail, EMIT_ARG(unpack_ex, num_head + i, num_tail - i - 1); have_star_index = num_head + i; } else { - compile_syntax_error(comp, nodes_tail[i], "two starred expressions in assignment"); + compile_syntax_error(comp, nodes_tail[i], "multiple *x in assignment"); return; } } @@ -769,8 +769,7 @@ void c_assign(compiler_t *comp, mp_parse_node_t pn, assign_kind_t assign_kind) { // lhs is something in parenthesis if (MP_PARSE_NODE_IS_NULL(pns->nodes[0])) { // empty tuple - compile_syntax_error(comp, pn, "can't assign to ()"); - return; + goto cannot_assign; } else if (MP_PARSE_NODE_IS_STRUCT_KIND(pns->nodes[0], PN_testlist_comp)) { pns = (mp_parse_node_struct_t*)pns->nodes[0]; goto testlist_comp; @@ -799,8 +798,7 @@ void c_assign(compiler_t *comp, mp_parse_node_t pn, assign_kind_t assign_kind) { break; default: - compile_syntax_error(comp, (mp_parse_node_t)pns, "can't assign to expression"); - return; + goto cannot_assign; } return; @@ -818,8 +816,7 @@ void c_assign(compiler_t *comp, mp_parse_node_t pn, assign_kind_t assign_kind) { c_assign_tuple(comp, pns->nodes[0], n, pns2->nodes); } else if (MP_PARSE_NODE_STRUCT_KIND(pns) == PN_comp_for) { // TODO can we ever get here? can it be compiled? - compile_syntax_error(comp, (mp_parse_node_t)pns, "can't assign to expression"); - return; + goto cannot_assign; } else { // sequence with 2 items goto sequence_with_2_items; @@ -833,6 +830,10 @@ void c_assign(compiler_t *comp, mp_parse_node_t pn, assign_kind_t assign_kind) { } return; + cannot_assign: + compile_syntax_error(comp, pn, "can't assign to expression"); + return; + bad_aug: compile_syntax_error(comp, pn, "illegal expression for augmented assignment"); } @@ -2202,7 +2203,7 @@ void compile_comparison(compiler_t *comp, mp_parse_node_struct_t *pns) { } void compile_star_expr(compiler_t *comp, mp_parse_node_struct_t *pns) { - compile_syntax_error(comp, (mp_parse_node_t)pns, "can use starred expression only as assignment target"); + compile_syntax_error(comp, (mp_parse_node_t)pns, "*x must be assignment target"); } void compile_expr(compiler_t *comp, mp_parse_node_struct_t *pns) { @@ -2860,7 +2861,7 @@ void compile_scope_func_lambda_param(compiler_t *comp, mp_parse_node_t pn, pn_ki bool added; id_info_t *id_info = scope_find_or_add_id(comp->scope_cur, param_name, &added); if (!added) { - compile_syntax_error(comp, pn, "same name used for parameter"); + compile_syntax_error(comp, pn, "name reused for argument"); return; } id_info->kind = ID_INFO_KIND_LOCAL;