|
44 | 44 | import org.truffleruby.core.support.RubyIO;
|
45 | 45 | import org.truffleruby.core.thread.ThreadManager.BlockingAction;
|
46 | 46 | import org.truffleruby.interop.ToJavaStringNode;
|
47 |
| -import org.truffleruby.interop.ToJavaStringWithDefaultNodeGen; |
| 47 | +import org.truffleruby.interop.ToJavaStringWithDefaultNode; |
48 | 48 | import org.truffleruby.language.RubyBaseNodeWithExecute;
|
49 | 49 | import org.truffleruby.language.RubyGuards;
|
50 | 50 | import org.truffleruby.language.RubyNode;
|
51 | 51 |
|
52 | 52 | import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
|
53 |
| -import com.oracle.truffle.api.dsl.CreateCast; |
54 | 53 | import com.oracle.truffle.api.dsl.NodeChild;
|
55 | 54 | import com.oracle.truffle.api.dsl.Specialization;
|
56 | 55 | import org.truffleruby.language.dispatch.DispatchNode;
|
@@ -122,20 +121,15 @@ protected RubyArray getScreenSize() {
|
122 | 121 | }
|
123 | 122 |
|
124 | 123 | @CoreMethod(names = "readline", isModuleFunction = true, optional = 2)
|
125 |
| - @NodeChild(value = "prompt", type = RubyNode.class) |
126 |
| - @NodeChild(value = "addToHistory", type = RubyBaseNodeWithExecute.class) |
127 |
| - public abstract static class ReadlineNode extends CoreMethodNode { |
128 |
| - |
129 |
| - @CreateCast("prompt") |
130 |
| - protected RubyNode coercePromptToJavaString(RubyNode prompt) { |
131 |
| - return ToJavaStringWithDefaultNodeGen.create("", prompt); |
132 |
| - } |
| 124 | + public abstract static class ReadlineNode extends CoreMethodArrayArgumentsNode { |
133 | 125 |
|
134 | 126 | @TruffleBoundary
|
135 | 127 | @Specialization
|
136 |
| - protected Object readline(String prompt, Object maybeAddToHistory, |
| 128 | + protected Object readline(Object maybePromptObject, Object maybeAddToHistory, |
| 129 | + @Cached ToJavaStringWithDefaultNode toJavaStringWithDefaultNode, |
137 | 130 | @Cached TruffleString.FromJavaStringNode fromJavaStringNode,
|
138 | 131 | @Cached BooleanCastWithDefaultNode booleanCastWithDefaultNode) {
|
| 132 | + final var prompt = toJavaStringWithDefaultNode.execute(this, maybePromptObject, ""); |
139 | 133 | final boolean addToHistory = booleanCastWithDefaultNode.execute(this, maybeAddToHistory, false);
|
140 | 134 | final LineReader readline = getContext().getConsoleHolder().getReadline();
|
141 | 135 |
|
|
0 commit comments