Skip to content

Commit

Permalink
Showing 2 changed files with 8 additions and 3 deletions.
Original file line number Diff line number Diff line change
@@ -3123,8 +3123,8 @@ protected static boolean hasRawBytes(DynamicObject string) {

}

@CoreMethod(names = "string_escape")
public abstract static class StringEscapeNode extends CoreMethodArrayArgumentsNode {
@Primitive(name = "string_escape", needsSelf = false)
public abstract static class StringEscapePrimitiveNode extends PrimitiveArrayArgumentsNode {

@TruffleBoundary
@Specialization
7 changes: 6 additions & 1 deletion truffle/src/main/ruby/core/type.rb
Original file line number Diff line number Diff line change
@@ -424,11 +424,16 @@ def self.inspect(val)
str = Rubinius::Type.coerce_to(val.inspect, String, :to_s)
result_encoding = Encoding.default_internal || Encoding.default_external
if !str.ascii_only? && (!result_encoding.ascii_compatible? || str.encoding != result_encoding)
return str.string_escape
return string_escape(str)
end
return str
end

def self.string_escape(string)
Truffle.primitive :string_escape
raise PrimitiveFailure, "String.string_escape primitive failed"
end

def self.object_respond_to__dump?(obj)
object_respond_to? obj, :_dump, true
end

0 comments on commit 34161ef

Please sign in to comment.