#primary_decl
[ GitHub ]# File 'lib/rbs/environment/module_entry.rb', line 34
def primary_decl each_decl.first or raise end
123456789_123456789_123456789_123456789_123456789_
| Relationships & Source Files | |
| Inherits: | Object |
| Defined in: | lib/rbs/environment/module_entry.rb |
ModuleEntry
# File 'lib/rbs/environment/module_entry.rb', line 8
attr_reader :context_decls
Boolean (readonly)
# File 'lib/rbs/environment/module_entry.rb', line 30
def empty? context_decls.empty? end
# File 'lib/rbs/environment/module_entry.rb', line 6
attr_reader :name
# File 'lib/rbs/environment/module_entry.rb', line 15
def <<(context_decl) context_decls << context_decl self end
# File 'lib/rbs/environment/module_entry.rb', line 20
def each_decl(&block) if block context_decls.each do |_, decl| yield decl end else enum_for(__method__ || raise) end end
# File 'lib/rbs/environment/module_entry.rb', line 34
def primary_decl each_decl.first or raise end
# File 'lib/rbs/environment/module_entry.rb', line 43
def self_types each_decl.flat_map do |decl| decl.self_types end.uniq end
# File 'lib/rbs/environment/module_entry.rb', line 38
def type_params validate_type_params primary_decl.type_params end
# File 'lib/rbs/environment/module_entry.rb', line 49
def validate_type_params unless context_decls.empty? first_decl, *rest_decls = each_decl.to_a first_decl or raise first_params = first_decl.type_params first_names = first_params.map(&:name) rest_decls.each do |other_decl| other_params = other_decl.type_params unless first_names.size == other_params.size && first_params == AST::TypeParam.rename(other_params, new_names: first_names) raise GenericParameterMismatchError.new(name: name, decl: other_decl) end end end end