123456789_123456789_123456789_123456789_123456789_

Class: RBS::Source::Ruby

Relationships & Source Files
Inherits: Object
Defined in: lib/rbs/source.rb

Class Method Summary

Instance Attribute Summary

Instance Method Summary

Constructor Details

.new(buffer, prism, declarations, diagnostics) ⇒ Ruby

[ GitHub ]

  
# File 'lib/rbs/source.rb', line 58

def initialize(buffer, prism, declarations, diagnostics)
  @buffer = buffer
  @prism_result = prism
  @declarations = declarations
  @diagnostics = diagnostics
end

Instance Attribute Details

#buffer (readonly)

[ GitHub ]

  
# File 'lib/rbs/source.rb', line 53

attr_reader :buffer

#declarations (readonly)

[ GitHub ]

  
# File 'lib/rbs/source.rb', line 55

attr_reader :declarations

#diagnostics (readonly)

[ GitHub ]

  
# File 'lib/rbs/source.rb', line 56

attr_reader :diagnostics

#prism_result (readonly)

[ GitHub ]

  
# File 'lib/rbs/source.rb', line 54

attr_reader :prism_result

Instance Method Details

#each_declaration_type_name(names, decl, &block)

[ GitHub ]

  
# File 'lib/rbs/source.rb', line 76

def each_declaration_type_name(names, decl, &block)
  case decl
  when AST::Ruby::Declarations::ClassDecl
    decl.each_decl do |d|
      each_declaration_type_name(names, d, &block)
    end
    type_name = decl.class_name
  when AST::Ruby::Declarations::ModuleDecl
    decl.each_decl do |d|
      each_declaration_type_name(names, d, &block)
    end
    type_name = decl.module_name
  end

  if type_name
    unless names.include?(type_name)
      yield type_name
      names << type_name
    end
  end
end

#each_type_name(&block)

[ GitHub ]

  
# File 'lib/rbs/source.rb', line 65

def each_type_name(&block)
  if block
    names = Set[] #: Set[TypeName]
    declarations.each do |decl|
      each_declaration_type_name(names, decl, &block)
    end
  else
    enum_for :each_type_name
  end
end