[#30589] [Bug #3391] Use single exclamation mark instead of double exclamation mark for IRB — Diego Viola <redmine@...>

Bug #3391: Use single exclamation mark instead of double exclamation mark for IRB

10 messages 2010/06/04

[#30672] [Bug #3411] Time.local 1916,5,1 #=> 1916-04-30 23:00:00 +0100 — Benoit Daloze <redmine@...>

Bug #3411: Time.local 1916,5,1 #=> 1916-04-30 23:00:00 +0100

12 messages 2010/06/08

[#30699] [Bug #3419] 1.9.2-preview3 possible bug with Rails 3 active_record sqlite_adapter — Joe Sak <redmine@...>

Bug #3419: 1.9.2-preview3 possible bug with Rails 3 active_record sqlite_adapter

9 messages 2010/06/09

[#30734] [Bug #3428] ri outputs ansi escape sequences even when stdout is not a tty — caleb clausen <redmine@...>

Bug #3428: ri outputs ansi escape sequences even when stdout is not a tty

11 messages 2010/06/11

[#30756] [Feature #3436] Spawn the timer thread lazily — Maximilian Gass <redmine@...>

Feature #3436: Spawn the timer thread lazily

15 messages 2010/06/13
[#32686] [Ruby 1.9-Feature#3436] Spawn the timer thread lazily — Mark Somerville <redmine@...> 2010/10/04

Issue #3436 has been updated by Mark Somerville.

[ruby-core:30730] [Bug #3420] Module#method calling <=> causes SystemStackError

From: Florian Aßmann <redmine@...>
Date: 2010-06-11 08:40:26 UTC
List: ruby-core #30730
Issue #3420 has been updated by Florian Aテ殞ann.


Please let me ask, why as from 1.9.2:


Sat Oct 24 13:38:45 2009  Yukihiro Matsumoto  <matz@ruby-lang.org>

	* object.c (rb_obj_cmp): defines Object#<=>.  [ruby-core:24063]

Before that all ruby implementations did:

ruby-1.8.7-p249 >
  BrokenComparable = Module.new { def ==(other) self <=> other end }
  BrokenClass = Class.new { include BrokenComparable }
  BrokenClass.new == nil
NoMethodError: undefined method `<=>' for #<BrokenClass:0x10043ef08>
	from (irb):1:in `=='
	from (irb):3

Which is a lot more verbose on what happened and allowed people to hook into method missing and delegate it to a wrapped object as a SystemStackError. Now, if there is a global defined <=> for all classes which mix in the kernel module (all but BasicObject) I'd suspect it should either just work (not calling rb_equal from rb_obj_cmp) as long people are used to 1.8.x/1.9.1 or be more verbose on what happened.

Removing the call of rb_equal in rb_obj_cmp would not just save the extra test of obj identity but also work for all objects; which seems to me like the intended behavior when adding a method like <=> to almost all objects.
Otherwise it should be stated in the docs of Comparable what happens if one does not and what the currently undocumented Object#<=> actually does since a SystemStackError only adds confusion and isn't obvious at all.

Regards
Florian
----------------------------------------
http://redmine.ruby-lang.org/issues/show/3420

----------------------------------------
http://redmine.ruby-lang.org

In This Thread

Prev Next