module Dry::Core::DescendantsTracker
def add_descendant(descendant)
- Api: - private
def add_descendant(descendant) ancestor = superclass if ancestor.respond_to?(:add_descendant, true) ancestor.add_descendant(descendant) end descendants.unshift(descendant) end
def extended(base)
- Api: - private
def extended(base) super DescendantsTracker.setup(base) end
def inherited(descendant)
- Api: - private
def inherited(descendant) super DescendantsTracker.setup(descendant) add_descendant(descendant) end
def setup(target)
- Api: - private
def setup(target) target.instance_variable_set(:@descendants, Concurrent::Array.new) end