Skip to content

Commit a85996c

Browse files
bjfisheregon
authored andcommitted
Add helper to debug declaration context
1 parent 1f5048f commit a85996c

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

src/main/java/org/truffleruby/debug/TruffleDebugNodes.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
import org.truffleruby.builtins.CoreMethodArrayArgumentsNode;
2626
import org.truffleruby.builtins.CoreMethodNode;
2727
import org.truffleruby.builtins.CoreModule;
28+
import org.truffleruby.builtins.Primitive;
29+
import org.truffleruby.builtins.PrimitiveArrayArgumentsNode;
2830
import org.truffleruby.core.RubyHandle;
2931
import org.truffleruby.core.array.ArrayGuards;
3032
import org.truffleruby.core.array.ArrayHelpers;
@@ -48,6 +50,8 @@
4850
import org.truffleruby.language.ImmutableRubyObject;
4951
import org.truffleruby.language.NotProvided;
5052
import org.truffleruby.language.RubyDynamicObject;
53+
import org.truffleruby.language.arguments.RubyArguments;
54+
import org.truffleruby.language.methods.DeclarationContext;
5155
import org.truffleruby.language.methods.InternalMethod;
5256
import org.truffleruby.language.objects.AllocateHelperNode;
5357
import org.truffleruby.language.objects.shared.SharedObjects;
@@ -942,4 +946,18 @@ protected Object drainFinalizationQueue() {
942946

943947
}
944948

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+
945963
}

src/main/java/org/truffleruby/language/methods/DeclarationContext.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,4 +165,14 @@ public boolean hasRefinements() {
165165

166166
/** Used when we know there cannot be a method definition inside a given method. */
167167
public static final DeclarationContext NONE = new DeclarationContext(Visibility.PUBLIC, null);
168+
169+
@TruffleBoundary
170+
@Override
171+
public String toString() {
172+
return "DeclarationContext{" +
173+
"visibility=" + visibility +
174+
", defaultDefinee=" + defaultDefinee +
175+
", refinements=" + refinements +
176+
"}@" + hashCode();
177+
}
168178
}

0 commit comments

Comments
 (0)