[ruby/prism] Handle missing begin body
https://github.com/ruby/prism/commit/7e54818b17
This commit is contained in:
parent
7695ab3bce
commit
eaea53b836
@ -2844,19 +2844,21 @@ pm_constant_write_node_create(pm_parser_t *parser, pm_constant_read_node_t *targ
|
|||||||
* Check if the receiver of a `def` node is allowed.
|
* Check if the receiver of a `def` node is allowed.
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
pm_check_def_receiver(pm_parser_t *parser, pm_node_t *receiver) {
|
pm_def_node_receiver_check(pm_parser_t *parser, const pm_node_t *node) {
|
||||||
switch (receiver->type) {
|
switch (PM_NODE_TYPE(node)) {
|
||||||
case PM_BEGIN_NODE: {
|
case PM_BEGIN_NODE: {
|
||||||
pm_begin_node_t *begin_node = (pm_begin_node_t *)receiver;
|
const pm_begin_node_t *cast = (pm_begin_node_t *) node;
|
||||||
pm_check_def_receiver(parser, (pm_node_t *) begin_node->statements);
|
if (cast->statements != NULL) pm_def_node_receiver_check(parser, (pm_node_t *) cast->statements);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case PM_PARENTHESES_NODE:
|
case PM_PARENTHESES_NODE: {
|
||||||
pm_check_def_receiver(parser, ((pm_parentheses_node_t *) receiver)->body);
|
const pm_parentheses_node_t *cast = (const pm_parentheses_node_t *) node;
|
||||||
|
if (cast->body != NULL) pm_def_node_receiver_check(parser, cast->body);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
case PM_STATEMENTS_NODE: {
|
case PM_STATEMENTS_NODE: {
|
||||||
pm_statements_node_t *statements_node = (pm_statements_node_t *)receiver;
|
const pm_statements_node_t *cast = (const pm_statements_node_t *) node;
|
||||||
pm_check_def_receiver(parser, statements_node->body.nodes[statements_node->body.size - 1]);
|
pm_def_node_receiver_check(parser, cast->body.nodes[cast->body.size - 1]);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case PM_ARRAY_NODE:
|
case PM_ARRAY_NODE:
|
||||||
@ -2875,7 +2877,10 @@ pm_check_def_receiver(pm_parser_t *parser, pm_node_t *receiver) {
|
|||||||
case PM_STRING_NODE:
|
case PM_STRING_NODE:
|
||||||
case PM_SYMBOL_NODE:
|
case PM_SYMBOL_NODE:
|
||||||
case PM_X_STRING_NODE:
|
case PM_X_STRING_NODE:
|
||||||
pm_parser_err_node(parser, receiver, PM_ERR_SINGLETON_FOR_LITERALS);
|
pm_parser_err_node(parser, node, PM_ERR_SINGLETON_FOR_LITERALS);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2907,7 +2912,7 @@ pm_def_node_create(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ((receiver != NULL) && PM_NODE_TYPE_P(receiver, PM_PARENTHESES_NODE)) {
|
if ((receiver != NULL) && PM_NODE_TYPE_P(receiver, PM_PARENTHESES_NODE)) {
|
||||||
pm_check_def_receiver(parser, receiver);
|
pm_def_node_receiver_check(parser, receiver);
|
||||||
}
|
}
|
||||||
|
|
||||||
*node = (pm_def_node_t) {
|
*node = (pm_def_node_t) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user