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

iseq.c: preserve encoding

* iseq.c (iseqw_inspect): preserve path encoding in the result.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59065 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2017-06-12 04:35:53 +00:00
parent 581cd6cfad
commit a57d295e36
2 changed files with 13 additions and 4 deletions

9
iseq.c
View file

@ -983,14 +983,15 @@ static VALUE
iseqw_inspect(VALUE self)
{
const rb_iseq_t *iseq = iseqw_check(self);
VALUE klass = rb_class_name(rb_obj_class(self));
if (!iseq->body->location.label) {
return rb_sprintf("#<%s: uninitialized>", rb_obj_classname(self));
return rb_sprintf("#<%"PRIsVALUE": uninitialized>", klass);
}
else {
return rb_sprintf("<%s:%s@%s>",
rb_obj_classname(self),
RSTRING_PTR(iseq->body->location.label), RSTRING_PTR(rb_iseq_path(iseq)));
return rb_sprintf("<%"PRIsVALUE":%"PRIsVALUE"@%"PRIsVALUE">",
klass,
iseq->body->location.label, rb_iseq_path(iseq));
}
}

View file

@ -270,4 +270,12 @@ class TestISeq < Test::Unit::TestCase
assert_equal(0, eval("0"))
end;
end
def test_inspect
%W[foo \u{30d1 30b9}].each do |name|
assert_match /@#{name}/, ISeq.compile("", name).inspect, name
m = ISeq.compile("class TestISeq::Inspect; def #{name}; end; instance_method(:#{name}); end").eval
assert_match /:#{name}@/, ISeq.of(m).inspect, name
end
end
end