From 51e5532084f8fce5cb68a80fe318b16757f923bc Mon Sep 17 00:00:00 2001 From: yui-knk Date: Mon, 22 Apr 2024 16:44:55 +0900 Subject: [PATCH] wip --- ext/ripper/ripper_init.c.tmpl | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ext/ripper/ripper_init.c.tmpl b/ext/ripper/ripper_init.c.tmpl index f4f09a8f946e29..965c71d6688658 100644 --- a/ext/ripper/ripper_init.c.tmpl +++ b/ext/ripper/ripper_init.c.tmpl @@ -334,6 +334,7 @@ ripper_initialize(int argc, VALUE *argv, VALUE self) VALUE sourcefile_string; const char *sourcefile; int sourceline; + rb_parser_input_data input; p = ripper_parser_params(self, false); TypedData_Get_Struct(self, struct ripper, &parser_data_type, r); @@ -342,11 +343,13 @@ ripper_initialize(int argc, VALUE *argv, VALUE self) gets = ripper_lex_io_get; r->type = lex_type_io; r->data.val = src; + input = (rb_parser_input_data)src; } else if (rb_respond_to(src, id_gets)) { gets = ripper_lex_get_generic; r->type = lex_type_generic; r->data.val = src; + input = (rb_parser_input_data)src; } else { StringValue(src); @@ -354,6 +357,7 @@ ripper_initialize(int argc, VALUE *argv, VALUE self) r->type = lex_type_str; r->data.ptr_str.str = src; r->data.ptr_str.ptr = 0; + input = (rb_parser_input_data)&r->data.ptr_str; } if (NIL_P(fname)) { fname = STR_NEW2("(ripper)"); @@ -369,7 +373,7 @@ ripper_initialize(int argc, VALUE *argv, VALUE self) sourcefile = RSTRING_PTR(fname); sourceline = NIL_P(lineno) ? 0 : NUM2INT(lineno) - 1; - rb_ruby_parser_ripper_initialize(p, gets, (rb_parser_input_data)&r->data, sourcefile_string, sourcefile, sourceline); + rb_ruby_parser_ripper_initialize(p, gets, input, sourcefile_string, sourcefile, sourceline); return Qnil; }