Hi, nil#to_f is not stated in define_method. Do you agree to add it there? Michal PS: Added some minor cleanups. Index: object.c =================================================================== RCS file: /src/ruby/object.c,v retrieving revision 1.80 diff -u -r1.80 object.c --- object.c 2002/06/28 14:39:59 1.80 +++ object.c 2002/07/01 09:41:20 @@ -951,35 +951,25 @@ rb_Integer(val) VALUE val; { - VALUE v; - switch (TYPE(val)) { case T_FLOAT: if (RFLOAT(val)->value <= (double)FIXNUM_MAX && RFLOAT(val)->value >= (double)FIXNUM_MIN) { - break; + return val; } return rb_dbl2big(RFLOAT(val)->value); + case T_FIXNUM: case T_BIGNUM: return val; case T_STRING: return rb_str_to_inum(val, 0, Qtrue); - - case T_FIXNUM: - return val; - - default: - break; } - if (rb_respond_to(val, rb_intern("to_int"))) { return rb_to_integer(val, "to_int"); - } - else { - return rb_to_integer(val, "to_i"); } + return rb_to_integer(val, "to_i"); } static VALUE @@ -1310,6 +1300,7 @@ rb_cNilClass = rb_define_class("NilClass", rb_cObject); rb_define_method(rb_cNilClass, "to_i", nil_to_i, 0); + rb_define_method(rb_cNilClass, "to_f", nil_to_f, 0); rb_define_method(rb_cNilClass, "to_s", nil_to_s, 0); rb_define_method(rb_cNilClass, "to_a", nil_to_a, 0); rb_define_method(rb_cNilClass, "inspect", nil_inspect, 0); Index: parse.y =================================================================== RCS file: /src/ruby/parse.y,v retrieving revision 1.196 diff -u -r1.196 parse.y --- parse.y 2002/06/28 14:39:59 1.196 +++ parse.y 2002/07/01 09:41:55 @@ -3036,7 +3036,7 @@ NODE *here; { int c, func, indent = 0; - char *eos, *p; + char *eos; int len; VALUE str = 0, line; Index: range.c =================================================================== RCS file: /src/ruby/range.c,v retrieving revision 1.40 diff -u -r1.40 range.c --- range.c 2002/06/18 06:29:04 1.40 +++ range.c 2002/07/01 09:41:57 @@ -384,12 +384,9 @@ VALUE range; { - VALUE b, e, step; - long unit; + VALUE b = rb_ivar_get(range, id_beg); + VALUE e = rb_ivar_get(range, id_end); - b = rb_ivar_get(range, id_beg); - e = rb_ivar_get(range, id_end); - if (r_le(b, e)) return b; return e; } @@ -398,11 +395,8 @@ range_max(range) VALUE range; { - VALUE b, e, step; - long unit; - - b = rb_ivar_get(range, id_beg); - e = rb_ivar_get(range, id_end); + VALUE b = rb_ivar_get(range, id_beg); + VALUE e = rb_ivar_get(range, id_end); if (r_gt(b, e)) return b; return e; -- -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Michal Rokos Czech Technical University, Prague E-mail:m.rokos / sh.cvut.cz ICQ:36118339 Jabber:majkl / jabber.cz -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-