[#55853] ruby 1.9.3 p448 breaks ABI — V咜 Ondruch <v.ondruch@...>

Hi,

13 messages 2013/07/08

[#55951] [ruby-trunk - Bug #8625][Open] IO#read(len, buf) shortens buf even if data is not read actually — "no6v (Nobuhiro IMAI)" <nov@...>

10 messages 2013/07/11

[#55976] [ruby-trunk - Feature #8629][Open] Method#parameters should include the default value — "rosenfeld (Rodrigo Rosenfeld Rosas)" <rr.rosas@...>

13 messages 2013/07/12

[#55985] [ruby-trunk - Feature #8631][Open] Add a new method to ERB to allow assigning the local variables from a hash — "rosenfeld (Rodrigo Rosenfeld Rosas)" <rr.rosas@...>

19 messages 2013/07/12

[#56004] [ruby-trunk - Feature #8636][Open] Documentation hosting on ruby-lang.org — "zzak (Zachary Scott)" <e@...>

18 messages 2013/07/15

[#56019] [ruby-trunk - Feature #8639][Open] Add Queue#each — "avdi (Avdi Grimm)" <avdi@...>

15 messages 2013/07/15

[#56027] [CommonRuby - Feature #8640][Open] Add Time#elapsed to return nanoseconds since creation — "tenderlovemaking (Aaron Patterson)" <aaron@...>

24 messages 2013/07/15

[#56041] [CommonRuby - Feature #8643][Open] Add Binding.from_hash — "rosenfeld (Rodrigo Rosenfeld Rosas)" <rr.rosas@...>

26 messages 2013/07/16

[#56087] [ruby-trunk - Feature #8658][Open] Process.clock_gettime — "akr (Akira Tanaka)" <akr@...>

23 messages 2013/07/19

[#56096] [CommonRuby - Feature #8661][Open] Add option to print backstrace in reverse order(stack frames first & error last) — "gary4gar (Gaurish Sharma)" <gary4gar@...>

18 messages 2013/07/20

[#56193] [ruby-trunk - Bug #8693][Open] lambda invoked by yield acts as a proc with respect to return — "rits (First Last)" <redmine@...>

33 messages 2013/07/26

[#56274] [ruby-trunk - Bug #8709][Open] Dir.glob should return sorted file list — "tommorris (Tom Morris)" <tom@...>

19 messages 2013/07/30

[ruby-core:55817] [ruby-trunk - Feature #8546] super errors in UnboundMethods

From: "saturnflyer (Jim Gay)" <jim@...>
Date: 2013-07-06 03:31:51 UTC
List: ruby-core #55817
Issue #8546 has been updated by saturnflyer (Jim Gay).


=begin
 headius (Charles Nutter) wrote:
 > I don't see how it would know the order in which to do the super logic. What do you expect to happen?
 > 
 > First off, if the "supering" M was actually included into O, there would still be nothing to super to since its method would be above O's. So I assume you don't want the Method-based "super" to error the same way.
 > 
 > If you would expect the "supering" hello to call O's hello, I'd like to see some justification. That would emulate behavior as if M had been prepended on to O. As it stands, M and O have no hierarchical relationship at all.
 > 
 > I don't think there's other possibilities. What do you want it to do?

My expectation is that it would call whatever (({hello})) is first available on the singleton_class of (({o})) which in this case is that defined on (({O})). 
In other words, my current understanding of how this works is that binding the method is at the most immediate level (the equivalent of prepending a module).

  module M
    def hello
      "hello from M"
    end
  end

  module P
    def hello
      "prepended #{super}"
    end
  end

  module B
    def hello
      "binded #{super}"
    end
  end

  class O
    include M
    prepend P
    def hello
      super
    end
  end

  o = O.new
  puts o.hello #=> "prepended hello from M"
  puts B.instance_method(:hello).bind(o).call #=> self has wrong type to call super in this context: O (expected B) (TypeError)

With the new ability to bind methods to arbitrary objects, I was expecting the last line to return the string (({"binded prepended hello from M"}))

=end
----------------------------------------
Feature #8546: super errors in UnboundMethods
https://bugs.ruby-lang.org/issues/8546#change-40318

Author: saturnflyer (Jim Gay)
Status: Open
Priority: Normal
Assignee: 
Category: 
Target version: 


=begin
(({UnboundMethod}))s are unable to call (({super}))

  module M
    def hello
      puts "hello from M"
    end
  end

  class O
    def hello
      puts "hello"
    end
  end

  o = O.new
  o.hello #=> "hello"
  M.instance_method(:hello).bind(o).call #=> "hello from M"

  module M
    def hello
      super
    end
  end

  M.instance_method(:hello).bind(o).call #=> TypeError: self has wrong type to call super in this context: O (expected M)}))

Given that the non-super method works, I would expect super to work.
=end



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

In This Thread