diff options
| author | Ichito Nagata <[email protected]> | 2018-06-04 10:52:51 +0900 |
|---|---|---|
| committer | Ichito Nagata <[email protected]> | 2018-06-04 11:25:10 +0900 |
| commit | 2af92d0ebcbeca6d3d85a27c8193273080a63090 (patch) | |
| tree | 51213df1520495df867610f6a84e5d47547bc1bb /mrbgems/mruby-struct/mrblib | |
| parent | 395260747add350d55eab002c183e7028605dbc8 (diff) | |
| download | mruby-2af92d0ebcbeca6d3d85a27c8193273080a63090.tar.gz mruby-2af92d0ebcbeca6d3d85a27c8193273080a63090.zip | |
Let inspect recursion do the right thing
Diffstat (limited to 'mrbgems/mruby-struct/mrblib')
| -rw-r--r-- | mrbgems/mruby-struct/mrblib/struct.rb | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/mrbgems/mruby-struct/mrblib/struct.rb b/mrbgems/mruby-struct/mrblib/struct.rb index 7cf3dd3ab..86c635df7 100644 --- a/mrbgems/mruby-struct/mrblib/struct.rb +++ b/mrbgems/mruby-struct/mrblib/struct.rb @@ -46,7 +46,9 @@ if Object.const_defined?(:Struct) ary end - def _inspect + def _inspect(recur_list) + return "#<struct #{self.class}:...>" if recur_list[self.object_id] + recur_list[self.object_id] = true name = self.class.to_s if name[0] == "#" str = "#<struct " @@ -55,7 +57,7 @@ if Object.const_defined?(:Struct) end buf = [] self.each_pair do |k,v| - buf.push [k.to_s + "=" + v._inspect] + buf.push [k.to_s + "=" + v._inspect(recur_list)] end str + buf.join(", ") + ">" end @@ -70,11 +72,7 @@ if Object.const_defined?(:Struct) # 15.2.18.4.10(x) # def inspect - begin - self._inspect - rescue SystemStackError - "#<struct #{self.class.to_s}:...>" - end + self._inspect({}) end ## |
