Class: RBS::Environment::ClassEntry
| Relationships & Source Files | |
| Inherits: | Object |
| Defined in: | lib/rbs/environment/class_entry.rb |
Class Method Summary
- .new(name) ⇒ ClassEntry constructor
Instance Attribute Summary
- #context_decls readonly
- #empty? ⇒ Boolean readonly
- #name readonly
Instance Method Summary
Constructor Details
.new(name) ⇒ ClassEntry
Instance Attribute Details
#context_decls (readonly)
[ GitHub ]# File 'lib/rbs/environment/class_entry.rb', line 8
attr_reader :context_decls
#empty? ⇒ Boolean (readonly)
[ GitHub ]
# File 'lib/rbs/environment/class_entry.rb', line 31
def empty? context_decls.empty? end
#name (readonly)
[ GitHub ]# File 'lib/rbs/environment/class_entry.rb', line 6
attr_reader :name
Instance Method Details
#<<(context_decl)
[ GitHub ]# File 'lib/rbs/environment/class_entry.rb', line 15
def <<(context_decl) context_decls << context_decl @primary_decl = nil self end
#each_decl(&block)
[ GitHub ]# File 'lib/rbs/environment/class_entry.rb', line 21
def each_decl(&block) if block context_decls.each do |_, decl| yield decl end else enum_for(__method__ || raise) end end
#type_params
[ GitHub ]# File 'lib/rbs/environment/class_entry.rb', line 47
def type_params validate_type_params primary_decl.type_params end
#validate_type_params
[ GitHub ]# File 'lib/rbs/environment/class_entry.rb', line 52
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