1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

iseq.c: child iseq encoding

* iseq.c (iseq_inspect): preserve the encoding of child iseqs.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61767 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2018-01-11 08:34:55 +00:00
parent 83ac2dfe0f
commit 64be4cfb5e
2 changed files with 7 additions and 2 deletions

4
iseq.c
View file

@ -1780,8 +1780,8 @@ iseq_inspect(const rb_iseq_t *iseq)
return rb_sprintf("#<ISeq: uninitialized>");
}
else {
return rb_sprintf("#<ISeq:%s@%s:%d (%d,%d)-(%d,%d)>",
RSTRING_PTR(iseq->body->location.label), RSTRING_PTR(rb_iseq_path(iseq)),
return rb_sprintf("#<ISeq:%"PRIsVALUE"@%"PRIsVALUE":%d (%d,%d)-(%d,%d)>",
iseq->body->location.label, rb_iseq_path(iseq),
iseq->body->location.code_location.beg_pos.lineno,
iseq->body->location.code_location.beg_pos.lineno,
iseq->body->location.code_location.beg_pos.column,

View file

@ -91,6 +91,11 @@ class TestISeq < Test::Unit::TestCase
asm = compile(src).disasm
assert_equal(src.encoding, asm.encoding)
assert_predicate(asm, :valid_encoding?)
obj = Object.new
name = "\u{2603 26a1}"
obj.instance_eval("def #{name}; tap {}; end")
assert_include(RubyVM::InstructionSequence.of(obj.method(name)).disasm, name)
end
LINE_BEFORE_METHOD = __LINE__