[前][次][番号順一覧][スレッド一覧]

ruby-changes:13400

From: matz <ko1@a...>
Date: Wed, 30 Sep 2009 17:33:00 +0900 (JST)
Subject: [ruby-changes:13400] Ruby:r25170 (trunk): * time.c (rb_time_succ): make Time#succ obsolete since time is not

matz	2009-09-30 17:32:43 +0900 (Wed, 30 Sep 2009)

  New Revision: 25170

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=25170

  Log:
    * time.c (rb_time_succ): make Time#succ obsolete since time is not
      a discrete value.
    
    * range.c (discrete_object_p): treat time objects specially to
      determine discrete values, since time objects have #succ yet are
      discrete (for now at least).

  Modified files:
    trunk/ChangeLog
    trunk/range.c
    trunk/time.c

Index: time.c
===================================================================
--- time.c	(revision 25169)
+++ time.c	(revision 25170)
@@ -2948,17 +2948,19 @@
  *   time.succ   => new_time
  *
  * Return a new time object, one second later than <code>time</code>.
+ * Time#succ is obsolete since 1.9.2 for time is not a discrete value.
  *
  *     t = Time.now       #=> 2007-11-19 08:23:57 -0600
  *     t.succ             #=> 2007-11-19 08:23:58 -0600
  */
 
-static VALUE
-time_succ(VALUE time)
+VALUE
+rb_time_succ(VALUE time)
 {
     struct time_object *tobj;
     struct time_object *tobj2;
 
+    rb_warn("Time#succ is obsolete; use time + 1");
     GetTimeval(time, tobj);
     time = time_new_timexv(rb_cTime, add(tobj->timexv, INT2FIX(TIME_SCALE)));
     GetTimeval(time, tobj2);
@@ -2966,12 +2968,9 @@
     return time;
 }
 
-VALUE
-rb_time_succ(VALUE time)
-{
-    return time_succ(time);
-}
+#define time_succ rb_time_succ
 
+
 /*
  *  call-seq:
  *     time.sec => fixnum
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 25169)
+++ ChangeLog	(revision 25170)
@@ -415,6 +415,15 @@
 
 	* vm.c (collect_local_variables_in_env): block iseq can be NULL.
 
+Mon Sep 21 10:50:37 2009  Yukihiro Matsumoto  <matz@r...>
+
+	* time.c (rb_time_succ): make Time#succ obsolete since time is not
+	  a discrete value.
+
+	* range.c (discrete_object_p): treat time objects specially to
+	  determine discrete values, since time objects have #succ yet are
+	  discrete (for now at least).
+
 Mon Sep 21 10:13:22 2009  Nobuyoshi Nakada  <nobu@r...>
 
 	* cont.c (cont_new, cont_capture, fiber_t_alloc): needs already
Index: range.c
===================================================================
--- range.c	(revision 25169)
+++ range.c	(revision 25170)
@@ -308,6 +308,15 @@
 
 extern int ruby_float_step(VALUE from, VALUE to, VALUE step, int excl);
 
+static int
+discrete_object_p(obj)
+{
+    if (rb_obj_is_kind_of(obj, rb_cTime)) return Qfalse; /* until Time#succ removed */
+    if (rb_respond_to(obj, id_succ)) return Qtrue;
+    return Qfalse;
+}
+
+
 /*
  *  call-seq:
  *     rng.step(n=1) {| obj | block }    => rng
@@ -416,7 +425,7 @@
 	else {
 	    VALUE args[2];
 
-	    if (!rb_respond_to(b, id_succ)) {
+	    if (!discrete_object_p(b)) {
 		rb_raise(rb_eTypeError, "can't iterate from %s",
 			 rb_obj_classname(b));
 	    }
@@ -498,7 +507,7 @@
 	    rb_block_call(tmp, rb_intern("upto"), 2, args, rb_yield, 0);
 	}
 	else {
-	    if (!rb_respond_to(beg, id_succ)) {
+	    if (!discrete_object_p(beg)) {
 		rb_raise(rb_eTypeError, "can't iterate from %s",
 			 rb_obj_classname(beg));
 	    }

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]