summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJemma Issroff <jemmaissroff@gmail.com>2023-08-24 11:40:32 -0700
committergit <svn-admin@ruby-lang.org>2023-08-24 19:06:02 +0000
commit90ff30e51e877b292e156f771e30a76876101387 (patch)
tree24c39b059e588774c0d0c394b332eca84652b4f3
parent82d84d741eed6aab81323e42439a81dd7d0cecd2 (diff)
[ruby/yarp] Requested changes
https://github.com/ruby/yarp/commit/eb01ea17c1
-rw-r--r--yarp/templates/src/serialize.c.erb2
-rw-r--r--yarp/yarp.c16
2 files changed, 10 insertions, 8 deletions
diff --git a/yarp/templates/src/serialize.c.erb b/yarp/templates/src/serialize.c.erb
index b91e3cb7d5..497e287b35 100644
--- a/yarp/templates/src/serialize.c.erb
+++ b/yarp/templates/src/serialize.c.erb
@@ -36,7 +36,7 @@ yp_serialize_node(yp_parser_t *parser, yp_node_t *node, yp_buffer_t *buffer) {
// We do not need to serialize a ScopeNode ever as
// it is not part of the AST
case YP_NODE_SCOPE_NODE:
- return;
+ return;
<%- nodes.each do |node| -%>
case <%= node.type %>: {
<%- if node.needs_serialized_length? -%>
diff --git a/yarp/yarp.c b/yarp/yarp.c
index 5cae9e6d2f..d124809649 100644
--- a/yarp/yarp.c
+++ b/yarp/yarp.c
@@ -1017,7 +1017,7 @@ yp_block_argument_node_create(yp_parser_t *parser, const yp_token_t *operator, y
}
static void
-YP_ATTRIBUTE_UNUSED yp_scope_node_create(yp_parameters_node_t *parameters, yp_node_t *body, yp_constant_id_list_t locals, const char *start, const char *end, yp_scope_node_t *dest)
+yp_scope_node_create(yp_parameters_node_t *parameters, yp_node_t *body, yp_constant_id_list_t locals, const char *start, const char *end, yp_scope_node_t *dest)
{
*dest = (yp_scope_node_t) {
{
@@ -1043,33 +1043,35 @@ yp_scope_node_init(yp_node_t *node, yp_scope_node_t *dest) {
switch (node->type) {
case YP_NODE_BLOCK_NODE: {
yp_block_node_t *block_node = (yp_block_node_t *) node;
- body = (yp_node_t *)block_node->body;
+ body = block_node->body;
locals = block_node->locals;
- parameters = block_node->parameters->parameters;
+ if (block_node->parameters) {
+ parameters = block_node->parameters->parameters;
+ }
break;
}
case YP_NODE_CLASS_NODE: {
yp_class_node_t *class_node = (yp_class_node_t *) node;
- body = (yp_node_t *)class_node->body;
+ body = class_node->body;
locals = class_node->locals;
break;
}
case YP_NODE_DEF_NODE: {
yp_def_node_t *def_node = (yp_def_node_t *) node;
parameters = def_node->parameters;
- body = (yp_node_t *)def_node->body;
+ body = def_node->body;
locals = def_node->locals;
break;
}
case YP_NODE_MODULE_NODE: {
yp_module_node_t *module_node = (yp_module_node_t *) node;
- body = (yp_node_t *)module_node->body;
+ body = module_node->body;
locals = module_node->locals;
break;
}
case YP_NODE_SINGLETON_CLASS_NODE: {
yp_singleton_class_node_t *singleton_class_node = (yp_singleton_class_node_t *) node;
- body = (yp_node_t *)singleton_class_node->body;
+ body = singleton_class_node->body;
locals = singleton_class_node->locals;
break;
}