Issue #7844 has been updated by Nobuyoshi Nakada.

Description updated

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

* Author: Yusuke Endoh
* Status: Assigned
* Priority: Normal
* Assignee: Yukihiro Matsumoto
* Category: 
* Target version: next minor
* ruby -v: ruby 2.0.0dev (2013-02-13 trunk 39225) [x86_64-linux]
* Backport: 
----------------------------------------
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>




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