iseq.c (rb_iseq_compile_with_option): dummy parent_iseq for the parser
The parsing of `RubyVM::InstructionSequence.compile` does not support an outer scope currently. So it specified NULL as parent_iseq for the parser. However, it resulted in the following false-positive warning. ``` RubyVM::InstructionSequence.compile(<<END) o = Object.new o #=> <compiled>:2: warning: possibly useless use of a variable in void context END ``` This change specifies a dummy empty parent_iseq instead of NULL, which suppresses the false positive.
This commit is contained in:
parent
b732a9f8a0
commit
c3dd3b9553
9
iseq.c
9
iseq.c
@ -994,7 +994,14 @@ rb_iseq_compile_with_option(VALUE src, VALUE file, VALUE realpath, VALUE line, c
|
|||||||
}
|
}
|
||||||
{
|
{
|
||||||
const VALUE parser = rb_parser_new();
|
const VALUE parser = rb_parser_new();
|
||||||
rb_parser_set_context(parser, parent, FALSE);
|
const rb_iseq_t *outer_scope = parent;
|
||||||
|
if (!outer_scope) {
|
||||||
|
VALUE name = rb_fstring_lit("<compiled>");
|
||||||
|
outer_scope = rb_iseq_new(NULL, name, name, Qnil, 0, ISEQ_TYPE_TOP);
|
||||||
|
}
|
||||||
|
VALUE outer_scope_v = (VALUE)outer_scope;
|
||||||
|
rb_parser_set_context(parser, outer_scope, FALSE);
|
||||||
|
RB_GC_GUARD(outer_scope_v);
|
||||||
ast = (*parse)(parser, file, src, ln);
|
ast = (*parse)(parser, file, src, ln);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user