diff options
| author | KOBAYASHI Shuji <[email protected]> | 2020-05-15 21:17:24 +0900 |
|---|---|---|
| committer | KOBAYASHI Shuji <[email protected]> | 2020-05-15 21:17:24 +0900 |
| commit | bc929656fb1c675fde9b1652c10f7cd42d2f63fa (patch) | |
| tree | 7ab02389d8c6c0c58e79246e2d615ae4799b05e5 /src | |
| parent | 4aba93c969a9cbfcc1ebd122a9e14e1d60dccbde (diff) | |
| download | mruby-bc929656fb1c675fde9b1652c10f7cd42d2f63fa.tar.gz mruby-bc929656fb1c675fde9b1652c10f7cd42d2f63fa.zip | |
Unify `eql?` receiver in `Hash` according to Ruby
### Example
```ruby
# example.rb
class A
def eql?(o)
p self.class
super
end
def hash
1
end
end
class B < A; end
h = {A.new => 1}
h[B.new]
```
#### Before this patch:
```console
$ bin/mruby example.rb
A
```
#### After this patch (same as Ruby)
```console
$ bin/mruby example.rb
B
```
Diffstat (limited to 'src')
| -rw-r--r-- | src/hash.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/hash.c b/src/hash.c index 8e7f97147..ec79a3def 100644 --- a/src/hash.c +++ b/src/hash.c @@ -373,7 +373,7 @@ ht_put(mrb_state *mrb, htable *t, mrb_value key, mrb_value val) deleted++; continue; } - if (ht_hash_equal(mrb, t, k, key)) { + if (ht_hash_equal(mrb, t, key, k)) { seg->e[i].val = val; return; } @@ -454,7 +454,7 @@ ht_get(mrb_state *mrb, htable *t, mrb_value key, mrb_value *vp) return FALSE; } if (mrb_undef_p(k)) continue; - if (ht_hash_equal(mrb, t, k, key)) { + if (ht_hash_equal(mrb, t, key, k)) { if (vp) *vp = seg->e[i].val; return TRUE; } |
