class RBI::Rewriters::FlattenSingletonMethods
~~~
end
def self.m3; end
def self.m2; end
class << self
def self.m1; end
~~~rb
will be rewritten to:
~~~
end
end
def m3; end
class << self
def self.m2; end
def m1; end
class << self
~~~rb
Example:
Rewrite non-singleton methods inside singleton classes to singleton methods
def visit(node)
@override
def visit(node) return unless node case node when SingletonClass node.nodes.dup.each do |child| visit(child) next unless child.is_a?(Method) && !child.is_singleton child.detach child.is_singleton = true parent_tree = node.parent_tree #: as !nil parent_tree << child end node.detach if node.nodes.empty? when Tree visit_all(node.nodes) end end