Issue #7844 has been updated by jeremyevans0 (Jeremy Evans).


@matz considered this during the September 2019 and December 2019 developers meetings, but has not yet made a decision on it.

----------------------------------------
Bug #7844: include/prepend satisfiable module dependencies are not satisfied
https://bugs.ruby-lang.org/issues/7844#change-86778

* Author: mame (Yusuke Endoh)
* Status: Assigned
* Priority: Normal
* Assignee: matz (Yukihiro Matsumoto)
* ruby -v: ruby 2.0.0dev (2013-02-13 trunk 39225) [x86_64-linux]
----------------------------------------
Hello,

~~~ruby
module P
  def m; puts "P"; super; end
end
module Q
  def m; puts "Q"; super; end
  include P
end
module R
  def m; puts "R"; super; end
  prepend Q
end
module S
  def m; puts "S"; super; end
  include R
end
class A
  def m; puts "A"; super; end
  prepend P
  include S
end
A.new.m #=> P, R, A, S, Q
~~~

This code has five module dependencies, but only two are satisfied.

- `Q` includes `P`, which is not satisfied: `P#m` precedes `Q#m`.
- `R` prepends `Q`, which is not satisfied: `R#m` precedes `Q#m`.
- `S` includes `R`, which is not satisfied: `R#m` precedes `S#m`.
- `A` prepends `P`, which is satisfied: `P#m` precedes `A#m`.
- `A` includes `S`, which is satisfied: `A#m` precedes `S#m`.

Note that all the dependencies can be satisfied at all:

~~~ruby
A.new.m #=> Q, P, A, S, R
~~~

-- 
Yusuke Endoh <mame / tsg.ne.jp>


---Files--------------------------------
include-after-origin-7844.patch (2.61 KB)


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

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