[#99426] [Ruby master Bug#17098] Float#negative? reports negative zero as not negative — chris@...

Issue #17098 has been reported by chrisseaton (Chris Seaton).

12 messages 2020/08/01

[#99449] [Ruby master Bug#17100] Ractor: a proposal for new concurrent abstraction without thread-safety issues — ko1@...

Issue #17100 has been reported by ko1 (Koichi Sasada).

41 messages 2020/08/03

[#99474] [Ruby master Feature#17103] Add a :since option to ObjectSpace.dump_all — jean.boussier@...

Issue #17103 has been reported by byroot (Jean Boussier).

9 messages 2020/08/04

[#99485] [Ruby master Misc#17104] Why are interpolated string literals frozen? — bughitgithub@...

Issue #17104 has been reported by bughit (bug hit).

23 messages 2020/08/05

[#99499] [Ruby master Bug#17105] A single `return` can return to two different places in a proc inside a lambda inside a method — eregontp@...

Issue #17105 has been reported by Eregon (Benoit Daloze).

10 messages 2020/08/06

[#99582] [Ruby master Feature#17122] Add category to Warning#warn — eileencodes@...

Issue #17122 has been reported by eileencodes (Eileen Uchitelle).

20 messages 2020/08/13

[#99700] [Ruby master Bug#17129] bundle install `eventmachine` and `sassc` fails since 914b2208ab3eddec478cdc3e079e6c30d0f0892c — yasuo.honda@...

SXNzdWUgIzE3MTI5IGhhcyBiZWVuIHJlcG9ydGVkIGJ5IHlhaG9uZGEgKFlhc3VvIEhvbmRhKS4N

9 messages 2020/08/26

[ruby-core:99775] [Ruby master Feature#11927] Return value for `Module#include` and `Module#prepend`

From: fatkodima123@...
Date: 2020-08-29 17:03:15 UTC
List: ruby-core #99775
Issue #11927 has been updated by fatkodima (Dima Fatko).


I would like to have this. Please, reconsider this feature.

----------------------------------------
Feature #11927: Return value for `Module#include` and `Module#prepend`
https://bugs.ruby-lang.org/issues/11927#change-87288

* Author: sawa (Tsuyoshi Sawada)
* Status: Open
* Priority: Normal
----------------------------------------
Currently, `Module#include` and `Module#prepend` return the receiver, regardless of whether the ancestor chain has been modified. It is not straightforward to know whether it actually had effect.

~~~ruby
module A; end
module B; end
A.include B # => A
A.ancestors # => [A, B]
A.prepend B # => A
A.ancestors # => [A, B]
~~~

I propose that, when `Module#include` and `Module#prepend` have no effect, they should either:

(1) return `nil`
(2) return `false`, or
(3) raise an exception

This is similar to `Kernel#require`, which returns `false` when it has no effect. To make it parallel with `Kernel#require`, it might be even better to return `true` when `Module#include` and `Module#prepend` have effect, and `false` otherwise. It makes not sense to return the receiver because that is known.

Some relevant cases with expectations are:

* prepend after include

~~~ruby
module A; end
module B; end
A.include B # => A/true
A.prepend B # => nil/false/exception
~~~


* include after prepend

~~~ruby
module A; end
module B; end
A.include B # => A/true
A.prepend B # => nil/false/exception
~~~

* include/prepend after include/include at superclass

~~~ruby
class A; end
module B; end
A.include M # => A/true
class B < A; end
B.include M # => nil/false/exception
~~~



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

Unsubscribe: <mailto:[email protected]?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>

In This Thread

Prev Next