Skip to content

Commit

Permalink
[PRISM] Check for static literal, excluding array, hash, range
Browse files Browse the repository at this point in the history
  • Loading branch information
jemmaissroff committed Dec 14, 2023
1 parent e71f011 commit 157e6c8
Showing 1 changed file with 12 additions and 26 deletions.
38 changes: 12 additions & 26 deletions prism_compile.c
Expand Up @@ -4692,21 +4692,15 @@ pm_compile_node(rb_iseq_t *iseq, const pm_node_t *node, LINK_ANCHOR *const ret,
pm_node_t *value = cast->value;
name = cast->name;

switch PM_NODE_TYPE(value) {
case PM_FALSE_NODE:
case PM_FLOAT_NODE:
case PM_INTEGER_NODE:
case PM_IMAGINARY_NODE:
case PM_NIL_NODE:
case PM_RATIONAL_NODE:
case PM_STRING_NODE:
case PM_SYMBOL_NODE:
case PM_TRUE_NODE:
if (pm_static_literal_p(value) &&
!(PM_NODE_TYPE_P(value, PM_ARRAY_NODE) ||
PM_NODE_TYPE_P(value, PM_HASH_NODE) ||
PM_NODE_TYPE_P(value, PM_RANGE_NODE))) {

rb_ary_push(default_values, pm_static_literal_value(value, scope_node, parser));
break;
default: {
}
else {
rb_ary_push(default_values, complex_mark);
}
}

break;
Expand Down Expand Up @@ -4946,18 +4940,10 @@ pm_compile_node(rb_iseq_t *iseq, const pm_node_t *node, LINK_ANCHOR *const ret,
pm_node_t *value = cast->value;
name = cast->name;

switch PM_NODE_TYPE(value) {
case PM_FALSE_NODE:
case PM_FLOAT_NODE:
case PM_INTEGER_NODE:
case PM_IMAGINARY_NODE:
case PM_NIL_NODE:
case PM_RATIONAL_NODE:
case PM_STRING_NODE:
case PM_SYMBOL_NODE:
case PM_TRUE_NODE:
break;
default: {
if (!(pm_static_literal_p(value)) ||
PM_NODE_TYPE_P(value, PM_ARRAY_NODE) ||
PM_NODE_TYPE_P(value, PM_HASH_NODE) ||
PM_NODE_TYPE_P(value, PM_RANGE_NODE)) {
LABEL *end_label = NEW_LABEL(nd_line(&dummy_line_node));

int index = pm_lookup_local_index(iseq, scope_node, name);
Expand All @@ -4968,8 +4954,8 @@ pm_compile_node(rb_iseq_t *iseq, const pm_node_t *node, LINK_ANCHOR *const ret,
ADD_SETLOCAL(ret, &dummy_line_node, index, 0);

ADD_LABEL(ret, end_label);
}
}
break;
}
// def foo(a, (b, *c, d), e = 1, *f, g, (h, *i, j), k:, l: 1, **m, &n)
// ^^
Expand Down

0 comments on commit 157e6c8

Please sign in to comment.