diff options
author | Jean Boussier <[email protected]> | 2024-11-07 11:47:43 +0100 |
---|---|---|
committer | git <[email protected]> | 2024-11-12 02:11:43 +0000 |
commit | 107a4da122126e6d0e0ad12898d7511e472709a3 () | |
tree | d30172f09e4a0e81f24075ddf19bc8589377ea2d | |
parent | 4c270200dbc2a3a4511e8b793a033078afd6fb31 (diff) |
[ruby/pp] Data#pretty_print handle privated or removed members
[Bug #20808] The previous implementation assumed all members are accessible, but it's possible for users to change the visibility of members or to entirely remove the accessor. https://.com/ruby/pp/commit/fb19501434
-rw-r--r-- | lib/pp.rb | 16 | ||||
-rw-r--r-- | test/test_pp.rb | 16 |
2 files changed, 30 insertions, 2 deletions
@@ -451,13 +451,25 @@ class Data # :nodoc: class_name = PP.mcall(self, Kernel, :class).name class_name = " #{class_name}" if class_name q.group(1, "#<data#{class_name}", '>') { - q.seplist(PP.mcall(self, Kernel, :class).members, lambda { q.text "," }) {|member| q.breakable q.text member.to_s q.text '=' q.group(1) { q.breakable '' - q.pp public_send(member) } } } @@ -159,6 +159,22 @@ class PPCycleTest < Test::Unit::TestCase b = Data.define(:a).new(42) assert_equal("#{b.inspect}\n", PP.pp(b, ''.dup)) end end def test_object |