mirror of
https://github.com/ruby/ruby.git
synced 2025-08-15 13:39:04 +02:00
[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.
This commit is contained in:
parent
a58675386c
commit
7b2ae8df90
Notes:
git
2024-12-19 15:08:23 +00:00
5 changed files with 30 additions and 9 deletions
|
@ -197,6 +197,7 @@ typedef struct {
|
|||
rb_encoding *enc;
|
||||
NODE *succ_block;
|
||||
const rb_code_location_t *loc;
|
||||
rb_parser_assignable_func assignable;
|
||||
} 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);
|
||||
return rb_reg_named_capture_assign_iter_impl(p, s, len, enc, &arg->succ_block, loc, arg->assignable);
|
||||
}
|
||||
|
||||
static NODE *
|
||||
reg_named_capture_assign(struct parser_params* p, VALUE regexp, const rb_code_location_t *loc)
|
||||
reg_named_capture_assign(struct parser_params* p, VALUE regexp, const rb_code_location_t *loc,
|
||||
rb_parser_assignable_func assignable)
|
||||
{
|
||||
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;
|
||||
arg.assignable = assignable;
|
||||
onig_foreach_name(RREGEXP_PTR(regexp), reg_named_capture_assign_iter, &arg);
|
||||
|
||||
if (!arg.succ_block) return 0;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue