sig/ancestor_builder.rbs in rbs-2.6.0 vs sig/ancestor_builder.rbs in rbs-2.7.0.pre.1
- old
+ new
@@ -1,17 +1,70 @@
module RBS
class DefinitionBuilder
+ # AncestorBuilder calculates the ancestors of a class or module.
+ #
class AncestorBuilder
+ # OneAncestors represents a list of _direct_ ancestors of a type name
+ #
+ # _Direct_ ancestors is defined as follows:
+ #
+ # * Super class is a direct ancestor
+ # * Self type constraints are direct ancestors
+ # * Mixin modules are direct ancestors
+ # * Mixin interfaces are direct ancestors
+ #
+ # The optional attributes are defined by the type of the ancestors object, one of the following five groups:
+ #
+ # 1. Instance of a class -- with super_class, included_modules, included_interfaces, and prepended_modules
+ # 2. Instance of a module -- with self_types, included_modules, included_interfaces, and prepended_modules
+ # 3. Singleton of a class or module -- with super_class, extended_modules, and extended_interfaces
+ # 4. Interface -- with included_interfaces
+ #
class OneAncestors
attr_reader type_name: TypeName
attr_reader params: Array[Symbol]?
+
+ # Returns super_class ancestor if specified
+ #
+ # * Always `nil` if this is not a class.
+ #
attr_reader super_class: Definition::Ancestor::t?
+
+ # Returns list of _self type constraints_ of a module
+ #
+ # * Returns `nil` if it is not a module instance.
+ #
attr_reader self_types: Array[Definition::Ancestor::Instance]?
+
+ # Returns the list of included modules
+ #
+ # * Returns `nil` if it is an interface or it is a singleton.
+ #
attr_reader included_modules: Array[Definition::Ancestor::Instance]?
+
+ # Returns the list of included interfaces
+ #
+ # * Returns `nil` it it is a singleton.
+ #
attr_reader included_interfaces: Array[Definition::Ancestor::Instance]?
+
+ # Returns the list of prepended modules
+ #
+ # * Returns `nil` if it is an interface or it is a singleton.
+ #
attr_reader prepended_modules: Array[Definition::Ancestor::Instance]?
+
+ # Returns the list of extended modules
+ #
+ # * Returns `nil` if it is an interface or it is an instance.
+ #
attr_reader extended_modules: Array[Definition::Ancestor::Instance]?
+
+ # Returns the list of extended interfaces
+ #
+ # * Returns `nil` if it is an interface or it is an instance.
+ #
attr_reader extended_interfaces: Array[Definition::Ancestor::Instance]?
def initialize: (type_name: TypeName,
params: Array[Symbol]?,
super_class: Definition::Ancestor::t?,
@@ -23,16 +76,20 @@
extended_interfaces: Array[Definition::Ancestor::Instance]?) -> void
def each_ancestor: { (Definition::Ancestor::t) -> void } -> void
| -> Enumerator[Definition::Ancestor::t, void]
+ # Returns a OneAncestors object for class instance
def self.class_instance: (type_name: TypeName, params: Array[Symbol], super_class: Definition::Ancestor::t?) -> instance
- def self.singleton: (type_name: TypeName, super_class: Definition::Ancestor::t?) -> instance
-
+ # Returns a OneAncestors object for module instance
def self.module_instance: (type_name: TypeName, params: Array[Symbol]) -> instance
+ # Returns a OneAncestors object for class/module singleton
+ def self.singleton: (type_name: TypeName, super_class: Definition::Ancestor::t) -> instance
+
+ # Returns a OneAncestors object for interface
def self.interface: (type_name: TypeName, params: Array[Symbol]) -> instance
def each_included_module: () { (Definition::Ancestor::Instance) -> void } -> void
| () -> Enumerator[Definition::Ancestor::Instance, void]
@@ -63,22 +120,24 @@
attr_reader one_interface_ancestors_cache: Hash[TypeName, OneAncestors]
attr_reader interface_ancestors_cache: Hash[TypeName, Definition::InstanceAncestors]
def initialize: (env: Environment) -> void
- def validate_super_class!: (TypeName, Environment::ClassEntry) -> void
+ def instance_ancestors: (TypeName, ?building_ancestors: Array[Definition::Ancestor::t]) -> Definition::InstanceAncestors
+ def singleton_ancestors: (TypeName, ?building_ancestors: Array[Definition::Ancestor::t]) -> Definition::SingletonAncestors
+
+ def interface_ancestors: (TypeName, ?building_ancestors: Array[Definition::Ancestor::t]) -> Definition::InstanceAncestors
+
def one_instance_ancestors: (TypeName) -> OneAncestors
def one_singleton_ancestors: (TypeName) -> OneAncestors
def one_interface_ancestors: (TypeName) -> OneAncestors
- def instance_ancestors: (TypeName, ?building_ancestors: Array[Definition::Ancestor::t]) -> Definition::InstanceAncestors
+ private
- def singleton_ancestors: (TypeName, ?building_ancestors: Array[Definition::Ancestor::t]) -> Definition::SingletonAncestors
-
- def interface_ancestors: (TypeName, ?building_ancestors: Array[Definition::Ancestor::t]) -> Definition::InstanceAncestors
+ def validate_super_class!: (TypeName, Environment::ClassEntry) -> void
def mixin_ancestors: (Environment::ClassEntry | Environment::ModuleEntry,
TypeName,
included_modules: Array[Definition::Ancestor::Instance]?,
included_interfaces: Array[Definition::Ancestor::Instance]?,