[Prism] path and script name are not the same
When loading Ruby from a file, or parsing using RubyVM::InstructionSequence.
This commit is contained in:
parent
2e2dfc4623
commit
4592fdc545
4
iseq.c
4
iseq.c
@ -1533,7 +1533,7 @@ iseqw_s_compile_file_prism(int argc, VALUE *argv, VALUE self)
|
|||||||
}
|
}
|
||||||
|
|
||||||
rb_iseq_t *
|
rb_iseq_t *
|
||||||
rb_iseq_new_main_prism(pm_string_t *input, pm_options_t *options, VALUE path, VALUE optimize)
|
rb_iseq_new_main_prism(pm_string_t *input, pm_options_t *options, VALUE script_name, VALUE path, VALUE optimize)
|
||||||
{
|
{
|
||||||
pm_parser_t parser;
|
pm_parser_t parser;
|
||||||
pm_parser_init(&parser, pm_string_source(input), pm_string_length(input), options);
|
pm_parser_init(&parser, pm_string_source(input), pm_string_length(input), options);
|
||||||
@ -1543,7 +1543,7 @@ rb_iseq_new_main_prism(pm_string_t *input, pm_options_t *options, VALUE path, VA
|
|||||||
pm_options_line_set(options, start_line);
|
pm_options_line_set(options, start_line);
|
||||||
|
|
||||||
rb_iseq_t *iseq = iseq_alloc();
|
rb_iseq_t *iseq = iseq_alloc();
|
||||||
iseqw_s_compile_prism_compile(&parser, optimize, iseq, path, path, start_line);
|
iseqw_s_compile_prism_compile(&parser, optimize, iseq, script_name, path, start_line);
|
||||||
|
|
||||||
pm_parser_free(&parser);
|
pm_parser_free(&parser);
|
||||||
return iseq;
|
return iseq;
|
||||||
|
2
iseq.h
2
iseq.h
@ -172,7 +172,7 @@ void rb_iseq_init_trace(rb_iseq_t *iseq);
|
|||||||
int rb_iseq_add_local_tracepoint_recursively(const rb_iseq_t *iseq, rb_event_flag_t turnon_events, VALUE tpval, unsigned int target_line, bool target_bmethod);
|
int rb_iseq_add_local_tracepoint_recursively(const rb_iseq_t *iseq, rb_event_flag_t turnon_events, VALUE tpval, unsigned int target_line, bool target_bmethod);
|
||||||
int rb_iseq_remove_local_tracepoint_recursively(const rb_iseq_t *iseq, VALUE tpval);
|
int rb_iseq_remove_local_tracepoint_recursively(const rb_iseq_t *iseq, VALUE tpval);
|
||||||
const rb_iseq_t *rb_iseq_load_iseq(VALUE fname);
|
const rb_iseq_t *rb_iseq_load_iseq(VALUE fname);
|
||||||
rb_iseq_t * rb_iseq_new_main_prism(pm_string_t *input, pm_options_t *options, VALUE path, VALUE optimize);
|
rb_iseq_t * rb_iseq_new_main_prism(pm_string_t *input, pm_options_t *options, VALUE script_name, VALUE path, VALUE optimize);
|
||||||
|
|
||||||
#if VM_INSN_INFO_TABLE_IMPL == 2
|
#if VM_INSN_INFO_TABLE_IMPL == 2
|
||||||
unsigned int *rb_iseq_insns_info_decode_positions(const struct rb_iseq_constant_body *body);
|
unsigned int *rb_iseq_insns_info_decode_positions(const struct rb_iseq_constant_body *body);
|
||||||
|
2
load.c
2
load.c
@ -747,7 +747,7 @@ load_iseq_eval(rb_execution_context_t *ec, VALUE fname)
|
|||||||
pm_parser_t parser;
|
pm_parser_t parser;
|
||||||
pm_parser_init(&parser, pm_string_source(&input), pm_string_length(&input), &options);
|
pm_parser_init(&parser, pm_string_source(&input), pm_string_length(&input), &options);
|
||||||
|
|
||||||
iseq = rb_iseq_new_main_prism(&input, &options, fname, Qnil);
|
iseq = rb_iseq_new_main_prism(&input, &options, fname, fname, Qnil);
|
||||||
|
|
||||||
pm_string_free(&input);
|
pm_string_free(&input);
|
||||||
pm_options_free(&options);
|
pm_options_free(&options);
|
||||||
|
2
ruby.c
2
ruby.c
@ -2428,7 +2428,7 @@ process_options(int argc, char **argv, ruby_cmdline_options_t *opt)
|
|||||||
}
|
}
|
||||||
|
|
||||||
VALUE optimize = dump & DUMP_BIT(insns_without_opt) ? Qfalse : Qnil;
|
VALUE optimize = dump & DUMP_BIT(insns_without_opt) ? Qfalse : Qnil;
|
||||||
iseq = rb_iseq_new_main_prism(&input, &options, path, optimize);
|
iseq = rb_iseq_new_main_prism(&input, &options, opt->script_name, path, optimize);
|
||||||
ruby_opt_init(opt);
|
ruby_opt_init(opt);
|
||||||
|
|
||||||
pm_string_free(&input);
|
pm_string_free(&input);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user