summaryrefslogtreecommitdiff
path: root/lib/pp.rb
diff options
context:
space:
mode:
authorRichard Viney <richard.viney@gmail.com>2017-01-22 14:50:08 +1300
committerNobuyoshi Nakada <nobu@ruby-lang.org>2019-12-16 23:43:49 +0900
commit6a75a460536a32fb62184dc5d8d66ddd737a9bad (patch)
tree1b977518ac32ecbdc987f87b487306485f0a136e /lib/pp.rb
parent251f5d8226dbde06ba06e980e3b741b45ae3826d (diff)
Make prettyprint’s cycle detection aware of Delegator instances
Fixes [Bug #13144] Co-Authored-By: Nobuyoshi Nakada <nobu@ruby-lang.org>
Diffstat (limited to 'lib/pp.rb')
-rw-r--r--lib/pp.rb4
1 files changed, 4 insertions, 0 deletions
diff --git a/lib/pp.rb b/lib/pp.rb
index 2cfc2c4009..81a9a1629c 100644
--- a/lib/pp.rb
+++ b/lib/pp.rb
@@ -149,6 +149,10 @@ class PP < PrettyPrint
# Object#pretty_print_cycle is used when +obj+ is already
# printed, a.k.a the object reference chain has a cycle.
def pp(obj)
+ # If obj is a Delegator then use the object being delegated to for cycle
+ # detection
+ obj = obj.__getobj__ if defined?(::Delegator) and obj.is_a?(::Delegator)
+
if check_inspect_key(obj)
group {obj.pretty_print_cycle self}
return