Skip to content

Commit

Permalink
Showing 1 changed file with 14 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -155,11 +155,24 @@ public static Set<DynamicObject> getAdjacentObjects(DynamicObject object) {
public static Set<DynamicObject> getObjectsInFrame(Frame frame) {
final Set<DynamicObject> objects = new HashSet<>();

final Frame lexicalParentFrame = RubyArguments.tryGetDeclarationFrame(frame.getArguments());
final Object[] arguments = frame.getArguments();
final Frame lexicalParentFrame = RubyArguments.tryGetDeclarationFrame(arguments);
if (lexicalParentFrame != null) {
objects.addAll(getObjectsInFrame(lexicalParentFrame));
}

final Object self = RubyArguments.getSelf(arguments);
if (self instanceof DynamicObject) {
objects.add((DynamicObject) self);
}

final DynamicObject block = RubyArguments.getBlock(arguments);
if (block != null) {
objects.add(block);
}

// Other frame arguments are either only internal or user arguments which appear in slots.

for (FrameSlot slot : frame.getFrameDescriptor().getSlots()) {
final Object slotValue = frame.getValue(slot);

0 comments on commit 39ac18b

Please sign in to comment.