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 /mrblib/hash.rb | |
| parent | 395260747add350d55eab002c183e7028605dbc8 (diff) | |
| download | mruby-2af92d0ebcbeca6d3d85a27c8193273080a63090.tar.gz mruby-2af92d0ebcbeca6d3d85a27c8193273080a63090.zip | |
Let inspect recursion do the right thing
Diffstat (limited to 'mrblib/hash.rb')
| -rw-r--r-- | mrblib/hash.rb | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/mrblib/hash.rb b/mrblib/hash.rb index 7e1db905f..6fcbba173 100644 --- a/mrblib/hash.rb +++ b/mrblib/hash.rb @@ -193,10 +193,12 @@ class Hash end # internal method for Hash inspection - def _inspect + def _inspect(recur_list) return "{}" if self.size == 0 + return "{...}" if recur_list[self.object_id] + recur_list[self.object_id] = true "{"+self.map {|k,v| - k._inspect + "=>" + v._inspect + k._inspect(recur_list) + "=>" + v._inspect(recur_list) }.join(", ")+"}" end ## @@ -204,11 +206,7 @@ class Hash # # ISO 15.2.13.4.30 (x) def inspect - begin - self._inspect - rescue SystemStackError - "{...}" - end + self._inspect({}) end # ISO 15.2.13.4.31 (x) alias to_s inspect |
