123456789_123456789_123456789_123456789_123456789_

Class: RBS::AST::Ruby::Declarations::ModuleDecl

Relationships & Source Files
Super Chains via Extension / Inclusion / Inheritance
Class Chain:
self, Base
Instance Chain:
Inherits: RBS::AST::Ruby::Declarations::Base
Defined in: lib/rbs/ast/ruby/declarations.rb

Class Method Summary

Instance Attribute Summary

Base - Inherited

Instance Method Summary

Constructor Details

.new(buffer, name, node) ⇒ ModuleDecl

[ GitHub ]

  
# File 'lib/rbs/ast/ruby/declarations.rb', line 121

def initialize(buffer, name, node)
  super(buffer)
  @module_name = name
  @node = node
  @members = []
end

Instance Attribute Details

#members (readonly)

[ GitHub ]

  
# File 'lib/rbs/ast/ruby/declarations.rb', line 117

attr_reader :members

#module_name (readonly)

[ GitHub ]

  
# File 'lib/rbs/ast/ruby/declarations.rb', line 115

attr_reader :module_name

#node (readonly)

[ GitHub ]

  
# File 'lib/rbs/ast/ruby/declarations.rb', line 119

attr_reader :node

Instance Method Details

#each_decl(&block)

[ GitHub ]

  
# File 'lib/rbs/ast/ruby/declarations.rb', line 128

def each_decl(&block)
  return enum_for(:each_decl) unless block

  @members.each do |member|
    if member.is_a?(Base)
      yield member
    end
  end
end

#location

[ GitHub ]

  
# File 'lib/rbs/ast/ruby/declarations.rb', line 152

def location
  rbs_location(node.location)
end

#name_location

[ GitHub ]

  
# File 'lib/rbs/ast/ruby/declarations.rb', line 156

def name_location
  rbs_location(node.constant_path.location)
end

#self_types

[ GitHub ]

  
# File 'lib/rbs/ast/ruby/declarations.rb', line 140

def self_types
  members.filter_map do |member|
    if member.is_a?(Members::ModuleSelfMember)
      AST::Declarations::Module::Self.new(
        name: member.name,
        args: member.args,
        location: member.location
      )
    end
  end
end

#type_fingerprint

[ GitHub ]

  
# File 'lib/rbs/ast/ruby/declarations.rb', line 160

def type_fingerprint
  result = [] #: Array[untyped]

  result << "decls/module"
  result << module_name.to_s
  result << members.map { _1.type_fingerprint}

  result
end

#type_params

[ GitHub ]

  
# File 'lib/rbs/ast/ruby/declarations.rb', line 138

def type_params = []