summaryrefslogtreecommitdiff
path: root/ruby_parser.c
diff options
context:
space:
mode:
authorNobuyoshi Nakada <[email protected]>2024-12-19 23:20:09 +0900
committerNobuyoshi Nakada <[email protected]>2024-12-19 23:20:09 +0900
commit7b2ae8df905d7bbc084d31a8f55cecc7e7c422b3 ()
treed1f60f7e5bedb3a43a8997ecfa3644c357d3b8b4 /ruby_parser.c
parenta58675386c10f4183116056bc0cf289548883ac0 (diff)
[Bug #20969] Pass `assignable` from ripper
For the universal parser, `rb_reg_named_capture_assign_iter_impl` function is shared between the parser and ripper. However `parser_params` struct is partially different, and `assignable` function depends on that part indirectly.
Notes: Merged: https://.com/ruby/ruby/pull/12400
-rw-r--r--ruby_parser.c7
1 files changed, 5 insertions, 2 deletions
@@ -197,6 +197,7 @@ typedef struct {
rb_encoding *enc;
NODE *succ_block;
const rb_code_location_t *loc;
} reg_named_capture_assign_t;
static int
@@ -210,11 +211,12 @@ reg_named_capture_assign_iter(const OnigUChar *name, const OnigUChar *name_end,
long len = name_end - name;
const char *s = (const char *)name;
- return rb_reg_named_capture_assign_iter_impl(p, s, len, enc, &arg->succ_block, loc);
}
static NODE *
-reg_named_capture_assign(struct parser_params* p, VALUE regexp, const rb_code_location_t *loc)
{
reg_named_capture_assign_t arg;
@@ -222,6 +224,7 @@ reg_named_capture_assign(struct parser_params* p, VALUE regexp, const rb_code_lo
arg.enc = rb_enc_get(regexp);
arg.succ_block = 0;
arg.loc = loc;
onig_foreach_name(RREGEXP_PTR(regexp), reg_named_capture_assign_iter, &arg);
if (!arg.succ_block) return 0;