Skip to content

Commit b4d729f

Browse files
committed
toDisplayString() should show the #inspect result for ImmutableRubyString
1 parent 2ad933b commit b4d729f

File tree

2 files changed

+15
-4
lines changed

2 files changed

+15
-4
lines changed

src/main/java/org/truffleruby/language/ImmutableRubyObject.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
*/
1010
package org.truffleruby.language;
1111

12+
import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
1213
import org.truffleruby.RubyContext;
1314
import org.truffleruby.RubyLanguage;
1415
import org.truffleruby.cext.ValueWrapper;
@@ -89,8 +90,11 @@ public Class<RubyLanguage> getLanguage() {
8990
return RubyLanguage.class;
9091
}
9192

93+
@TruffleBoundary
9294
@ExportMessage
93-
public abstract String toDisplayString(boolean allowSideEffects);
95+
public String toDisplayString(boolean allowSideEffects) {
96+
throw new AbstractMethodError();
97+
}
9498

9599
// region Members
96100
@ExportMessage

src/main/java/org/truffleruby/language/ImmutableRubyString.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,13 @@
1717
import com.oracle.truffle.api.library.ExportMessage;
1818
import org.truffleruby.RubyContext;
1919
import org.truffleruby.RubyLanguage;
20+
import org.truffleruby.core.kernel.KernelNodes;
2021
import org.truffleruby.core.klass.RubyClass;
2122
import org.truffleruby.core.rope.LeafRope;
2223
import org.truffleruby.core.rope.Rope;
2324
import org.truffleruby.core.rope.RopeOperations;
2425
import org.truffleruby.interop.ToJavaStringNode;
26+
import org.truffleruby.language.dispatch.DispatchNode;
2527
import org.truffleruby.language.library.RubyStringLibrary;
2628

2729

@@ -59,10 +61,15 @@ public String getJavaString() {
5961
// endregion
6062

6163
// region InteropLibrary messages
62-
@Override
6364
@ExportMessage
64-
public String toDisplayString(boolean allowSideEffects) {
65-
return RopeOperations.decodeRope(rope);
65+
public Object toDisplayString(boolean allowSideEffects,
66+
@Cached DispatchNode dispatchNode,
67+
@Cached KernelNodes.ToSNode kernelToSNode) {
68+
if (allowSideEffects) {
69+
return dispatchNode.call(this, "inspect");
70+
} else {
71+
return kernelToSNode.executeToS(this);
72+
}
6673
}
6774

6875
@ExportMessage

0 commit comments

Comments
 (0)