Skip to content

Commit

Permalink
eval.c: hide internal hash
Browse files Browse the repository at this point in the history
* eval.c (identity_hash_new): hide internal hashes for refinements.
* eval.c (rb_mod_refine): no default value.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37066 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
  • Loading branch information
nobu committed Oct 2, 2012
1 parent 39ef471 commit a416367
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 5 deletions.
6 changes: 6 additions & 0 deletions ChangeLog
@@ -1,3 +1,9 @@
Tue Oct 2 16:47:06 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>

* eval.c (identity_hash_new): hide internal hashes for refinements.

* eval.c (rb_mod_refine): no default value.

Mon Oct 1 22:54:02 2012 Shugo Maeda <shugo@ruby-lang.org>

* eval.c (identity_hash_new): new function to create a new identity
Expand Down
6 changes: 1 addition & 5 deletions eval.c
Expand Up @@ -1046,11 +1046,7 @@ identity_hash_new()
VALUE hash = rb_hash_new();

rb_funcall(hash, rb_intern("compare_by_identity"), 0);
#if 0
/* FIXME: The following code hides hash, but causes "method `default'
* called on hidden T_HASH object" error. */
RBASIC(hash)->klass = 0;
#endif
return hash;
}

Expand Down Expand Up @@ -1214,7 +1210,7 @@ rb_mod_refine(VALUE module, VALUE klass)
overlaid_modules = identity_hash_new();
rb_ivar_set(module, id_overlaid_modules, overlaid_modules);
}
mod = rb_hash_aref(overlaid_modules, klass);
mod = rb_hash_lookup(overlaid_modules, klass);
if (NIL_P(mod)) {
mod = rb_module_new();
CONST_ID(id_refined_class, "__refined_class__");
Expand Down

0 comments on commit a416367

Please sign in to comment.