Hello!
This had been committed to CVS with """
* eval.c (rb_mod_freeze): prepare string representation before
freezing. [ruby-talk:103646]
"""
But what should it supposed to do???
It just creates some String obj, then it's used nowhere (ret val is not
even assigned anywhere, and then regular Object#freeze is called.
So it's nothing else than slower Object#freeze imp?
I'm sorry about this, but I started to review again what's going on in
CVS.
Michal
Index: object.c
===================================================================
RCS file: /var/cvs/src/ruby/object.c,v
retrieving revision 1.152
retrieving revision 1.153
diff -u -p -u -p -r1.152 -r1.153
--- object.c 16 Jun 2004 07:04:05 -0000 1.152
+++ object.c 16 Jun 2004 14:21:33 -0000 1.153
@@ -2,8 +2,8 @@
object.c -
- $Author: nobu $
- $Date: 2004/06/16 07:04:05 $
+ $Author: matz $
+ $Date: 2004/06/16 14:21:33 $
created at: Thu Jul 15 12:01:24 JST 1993
Copyright (C) 1993-2003 Yukihiro Matsumoto
@@ -1215,6 +1215,21 @@ rb_mod_to_s(klass)
/*
* call-seq:
+ * mod.freeze
+ *
+ * Prevents further modifications to <i>mod</i>.
+ */
+
+static VALUE
+rb_mod_freeze(mod)
+ VALUE mod;
+{
+ rb_mod_to_s(mod);
+ return rb_obj_freeze(mod);
+}
+
+/*
+ * call-seq:
* mod === obj => true or false
*
* Case Equality---Returns <code>true</code> if <i>anObject</i> is an
@@ -2597,6 +2612,7 @@ Init_Object()
rb_define_method(rb_cSymbol, "id2name", sym_to_s, 0);
rb_define_method(rb_cSymbol, "to_sym", sym_to_sym, 0);
+ rb_define_method(rb_cModule, "freeze", rb_mod_freeze, 0);
rb_define_method(rb_cModule, "===", rb_mod_eqq, 1);
rb_define_method(rb_cModule, "==", rb_obj_equal, 1);
rb_define_method(rb_cModule, "<=>", rb_mod_cmp, 1);