Class: RBS::Inline::AST::Annotations::ModuleSelf

Inherits:
Base
  • Object
show all
Defined in:
lib/rbs/inline/ast/annotations.rb

Overview

‘# @rbs module-self [MODULE_SELF]`

Instance Attribute Summary collapse

Attributes inherited from Base

#source, #tree

Instance Method Summary collapse

Constructor Details

#initialize(tree, source) ⇒ ModuleSelf

Returns a new instance of ModuleSelf.



517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
# File 'lib/rbs/inline/ast/annotations.rb', line 517

def initialize(tree, source)
  @tree = tree
  @source = source
  @self_types = []

  module_self = tree.nth_tree!(1)
  self_trees = module_self.non_trivia_trees
  self_trees.shift

  while true
    type = self_trees.shift
    case type
    when Types::ClassInstance, Types::Interface
      @self_types << RBS::AST::Declarations::Module::Self.new(
        name: type.name,
        args: type.args,
        location: nil
      )
    end

    break if self_trees.empty?

    next_tree = self_trees.first
    if next_tree.is_a?(Array) && next_tree[0] == :kCOMMA
      self_trees.shift
    else
      break
    end
  end

  if comment = self_trees.first
    @comment = comment.to_s
  end
end

Instance Attribute Details

#commentObject (readonly)

: String?



514
515
516
# File 'lib/rbs/inline/ast/annotations.rb', line 514

def comment
  @comment
end

#self_typesObject (readonly)

: Array



512
513
514
# File 'lib/rbs/inline/ast/annotations.rb', line 512

def self_types
  @self_types
end