File: //usr/lib/ruby/gems/3.2.0/gems/rbs-2.8.2/sig/method_builder.rbs
module RBS
class DefinitionBuilder
# MethodBuilder calculates the sequence of methods available on given type
#
# The sequence are sorted topologically.
#
class MethodBuilder
# Set of methods defined in a type.
#
class Methods
type instance_type = Types::ClassInstance | Types::ClassSingleton | Types::Interface
# Definition of a method in the type
#
# The Definition object allows invalid method definition so that more than one _original_ definitions may exist.
#
class Definition
type original = AST::Members::MethodDefinition | AST::Members::Alias | AST::Members::AttrAccessor | AST::Members::AttrWriter | AST::Members::AttrReader
type accessibility = RBS::Definition::accessibility
attr_reader name: Symbol
attr_reader type: instance_type
attr_reader originals: Array[original]
attr_reader overloads: Array[AST::Members::MethodDefinition]
attr_reader accessibilities: Array[accessibility]
def initialize: (name: Symbol, type: instance_type, originals: Array[original], overloads: Array[AST::Members::MethodDefinition], accessibilities: Array[accessibility]) -> void
def original: () -> original?
def accessibility: () -> accessibility
def self.empty: (name: Symbol, type: instance_type) -> Definition
end
attr_reader type: instance_type
attr_reader methods: Hash[Symbol, Definition]
def initialize: (type: instance_type) -> void
def validate!: () -> self
def each: () { (Definition) -> void } -> void
| () -> Enumerator[Definition, void]
class Sorter
include TSort[Definition]
attr_reader methods: Hash[Symbol, Definition]
def initialize: (Hash[Symbol, Definition]) -> void
def tsort_each_node: { (Definition) -> void } -> void
def tsort_each_child: (Definition) { (Definition) -> void } -> void
end
end
attr_reader env: Environment
attr_reader instance_methods: Hash[TypeName, Methods]
attr_reader singleton_methods: Hash[TypeName, Methods]
attr_reader interface_methods: Hash[TypeName, Methods]
def initialize: (env: Environment) -> void
def build_instance: (TypeName) -> Methods
def build_singleton: (TypeName) -> Methods
def build_interface: (TypeName) -> Methods
def build_alias: (Methods, Methods::instance_type, member: AST::Members::Alias) -> void
def build_attribute: (Methods, Methods::instance_type, member: AST::Members::AttrAccessor | AST::Members::AttrReader | AST::Members::AttrWriter, accessibility: Definition::accessibility) -> void
def build_method: (Methods, Methods::instance_type, member: AST::Members::MethodDefinition, accessibility: Definition::accessibility) -> void
def each_member_with_accessibility: (Array[AST::Members::t | AST::Declarations::t], ?accessibility: Definition::accessibility) { (AST::Members::t | AST::Declarations::t, Definition::accessibility) -> void } -> void
def update: (env: Environment, except: _Each[TypeName]) -> MethodBuilder
end
end
end