Bug #4559
closedProc#== does not match the documented behaviour
Description
=begin
To see a paste concisely showing the problem, see https://gist.github.com/899026/ba84d66b02727675320dc4f031637d753a41c209
Code is shown below for 1.9.2p180.
The documented behaviour (and my own expectation for (({#==}))) is: "Return true if prc is the same object as other_proc, or if they are both procs with the same body."
RUBY_DESCRIPTION #=> ruby 1.9.2p180 (2011-02-18 revision 30909) [i686-linux]
proc { 1 } == proc { 1 } # => true
proc { 1 + 1 } == proc { 1 + 1 } # => false
proc { |x| x } == proc { |x| x } # => true
proc { |x| x.foo } == proc { |x| x.foo } # => false
lambda { 1 } == lambda { 1 } # => true
lambda { 1 + 1 } == lambda { 1 + 1 } # => false
lambda { |x| x } == lambda { |x| x } # => true
lambda { |x| x.foo } == lambda { |x| x.foo } # => false
Proc.new { 1 } == Proc.new { 1 } # => true
Proc.new { 1 + 1 } == Proc.new { 1 + 1 } # => false
Proc.new { |x| x } == Proc.new { |x| x } # => true
Proc.new { |x| x.foo } == Proc.new { |x| x.foo } # => false
Similar also occurs on 1.8.7; on version 1.8.7 (2011-02-18 patchlevel 334), all returned values are (({false})). I also reproduced this behaviour on 1.9.2p136 (2010-12-25 revision 30365) [i686-linux].
Attached is a file which will (({puts})) the values.
=end
Files