[PRISM] Fix fsl coming from file

This commit is contained in:
Kevin Newton 2024-02-06 11:59:49 -05:00
parent d77172b79b
commit ccec209b2c
2 changed files with 13 additions and 3 deletions

9
iseq.c
View file

@ -1002,8 +1002,15 @@ pm_iseq_new_with_opt(pm_scope_node_t *node, VALUE name, VALUE path, VALUE realpa
.end_pos = { .lineno = (int) end.line, .column = (int) end.column }
};
rb_compile_option_t *current_option = (rb_compile_option_t *) option;
if (node->parser->frozen_string_literal) {
rb_compile_option_t new_option = *option;
new_option.frozen_string_literal = true;
current_option = &new_option;
}
prepare_iseq_build(iseq, name, path, realpath, first_lineno, &code_location, -1,
parent, isolated_depth, type, Qnil, option);
parent, isolated_depth, type, Qnil, current_option);
pm_iseq_compile_node(iseq, node);
finish_iseq_build(iseq);

View file

@ -773,12 +773,13 @@ pm_interpolated_node_compile(pm_node_list_t *parts, rb_iseq_t *iseq, NODE dummy_
current_string = rb_enc_str_new(NULL, 0, enc);
}
if (parser->frozen_string_literal) {
if (ISEQ_COMPILE_DATA(iseq)->option->frozen_string_literal) {
ADD_INSN1(ret, &dummy_line_node, putobject, rb_str_freeze(current_string));
}
else {
ADD_INSN1(ret, &dummy_line_node, putstring, rb_str_freeze(current_string));
}
current_string = Qnil;
number_of_items_pushed++;
@ -793,12 +794,14 @@ pm_interpolated_node_compile(pm_node_list_t *parts, rb_iseq_t *iseq, NODE dummy_
if (RTEST(current_string)) {
current_string = rb_fstring(current_string);
if (parser->frozen_string_literal) {
if (ISEQ_COMPILE_DATA(iseq)->option->frozen_string_literal) {
ADD_INSN1(ret, &dummy_line_node, putobject, current_string);
}
else {
ADD_INSN1(ret, &dummy_line_node, putstring, current_string);
}
current_string = Qnil;
number_of_items_pushed++;
}