Bug #5542

Ruby 1.9.3-p0 changed arity on default initialization method

Added by Joshua Ballanco over 2 years ago. Updated over 2 years ago.

[ruby-core:40647]
Status:Rejected
Priority:Normal
Assignee:Marc-Andre Lafortune
Category:core
Target version:1.9.3
ruby -v:ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-darwin11.2.0] Backport:

Description

The following code worked under 1.9.2-p290 but breaks with an Argument Error (1 for 0) under 1.9.3-p0:

class Foo; end
Foo.new(nil)

Furthermore, the reported arity for Object's initialize method has changed:

ruby-1.9.2-p290 :001 > Object.instance_method(:initialize).arity
 => -1 

ruby-1.9.3-p0 :001 > Object.instance_method(:initialize).arity
 => 0 

noname (500 Bytes) Anonymous, 11/04/2011 01:23 AM


Related issues

Related to ruby-trunk - Feature #2451: BasicObject.initialize with variable number of argument Closed 12/07/2009

History

#1 Updated by Joshua Ballanco over 2 years ago

This was introduced in r29638:

* object.c: Make BasicObject.new accept no parameter.
  Revert of r26135 , as per .

Was this change in BasicObject.new intentional? If so, is it intentional that this behavior should be different than 1.9.2? If not can we have this back-ported?

#2 Updated by Motohiro KOSAKI over 2 years ago

  • Category set to core
  • Status changed from Open to Assigned
  • Assignee set to Marc-Andre Lafortune
  • Target version set to 1.9.3

#3 Updated by Anonymous over 2 years ago

On Thu, Nov 03, 2011 at 06:19:19AM +0900, Joshua Ballanco wrote:

Issue #5542 has been updated by Joshua Ballanco.

This was introduced in r29638:

* object.c: Make BasicObject.new accept no parameter.
  Revert of r26135 , as per .

Was this change in BasicObject.new intentional? If so, is it intentional that this behavior should be different than 1.9.2? If not can we have this back-ported?

Yes, this was definitely an intentional change. Please see the threads
mentioned in the commit message ( and
).

I cannot speak for backporting this to 1.9.2.

--
Aaron Patterson
http://tenderlovemaking.com/

#4 Updated by Joshua Ballanco over 2 years ago

On Thu, Nov 3, 2011 at 12:15 PM, Aaron Patterson
tenderlove@ruby-lang.orgwrote:

On Thu, Nov 03, 2011 at 06:19:19AM +0900, Joshua Ballanco wrote:

Issue #5542 has been updated by Joshua Ballanco.

This was introduced in r29638:

* object.c: Make BasicObject.new accept no parameter.
  Revert of r26135 , as per .

Was this change in BasicObject.new intentional? If so, is it intentional
that this behavior should be different than 1.9.2? If not can we have this
back-ported?

Yes, this was definitely an intentional change. Please see the threads
mentioned in the commit message ( and
).

I can access the former thread, but the later seems to
have gone missing?

http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/32952

I cannot speak for backporting this to 1.9.2.

I suppose backporting is not a huge issue (I actually caught this due to
some less-than-optimally implemented code in our code base), however I
worry about having this kind of a semantic change between minor versions.

  • Josh

#5 Updated by Marc-Andre Lafortune over 2 years ago

  • Status changed from Assigned to Rejected

Hi,

I can access the former thread, but the later seems to
have gone missing?

http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/32952

Indeed, the archive contains only half of the discussion about the revert. It starts at . Matz's is quoted in some replies.

http://blade.nagaokaut.ac.jp/cgi-bin/vframe.rb/ruby/ruby-core/32932?32833-33811+split-mode-vertical

I cannot speak for backporting this to 1.9.2.

Yugui decided against it in and warn instead, so I'm closing this issue.

#6 Updated by Joshua Ballanco over 2 years ago

Thank you much for the information. This seems like a good compromise.

Also available in: Atom PDF