|
25 | 25 | import org.truffleruby.builtins.CoreMethodArrayArgumentsNode;
|
26 | 26 | import org.truffleruby.builtins.CoreMethodNode;
|
27 | 27 | import org.truffleruby.builtins.CoreModule;
|
| 28 | +import org.truffleruby.builtins.Primitive; |
| 29 | +import org.truffleruby.builtins.PrimitiveArrayArgumentsNode; |
28 | 30 | import org.truffleruby.core.RubyHandle;
|
29 | 31 | import org.truffleruby.core.array.ArrayGuards;
|
30 | 32 | import org.truffleruby.core.array.ArrayHelpers;
|
|
48 | 50 | import org.truffleruby.language.ImmutableRubyObject;
|
49 | 51 | import org.truffleruby.language.NotProvided;
|
50 | 52 | import org.truffleruby.language.RubyDynamicObject;
|
| 53 | +import org.truffleruby.language.arguments.RubyArguments; |
| 54 | +import org.truffleruby.language.methods.DeclarationContext; |
51 | 55 | import org.truffleruby.language.methods.InternalMethod;
|
52 | 56 | import org.truffleruby.language.objects.AllocateHelperNode;
|
53 | 57 | import org.truffleruby.language.objects.shared.SharedObjects;
|
@@ -942,4 +946,18 @@ protected Object drainFinalizationQueue() {
|
942 | 946 |
|
943 | 947 | }
|
944 | 948 |
|
| 949 | + @Primitive(name = "frame_declaration_context_to_string") |
| 950 | + public abstract static class FrameDeclarationContextToStringNode extends PrimitiveArrayArgumentsNode { |
| 951 | + |
| 952 | + @Child private StringNodes.MakeStringNode makeStringNode = StringNodes.MakeStringNode.create(); |
| 953 | + |
| 954 | + @Specialization |
| 955 | + protected RubyString getDeclarationContextToString(VirtualFrame frame) { |
| 956 | + final DeclarationContext declarationContext = RubyArguments.getDeclarationContext(frame); |
| 957 | + return makeStringNode |
| 958 | + .executeMake(declarationContext.toString(), UTF8Encoding.INSTANCE, CodeRange.CR_UNKNOWN); |
| 959 | + } |
| 960 | + |
| 961 | + } |
| 962 | + |
945 | 963 | }
|
0 commit comments