Class: RBS::AST::Ruby::Declarations::ClassDecl

Inherits:
Base
  • Object
show all
Defined in:
lib/rbs/ast/ruby/declarations.rb,
sig/ast/ruby/declarations.rbs

Defined Under Namespace

Classes: SuperClass

Instance Attribute Summary collapse

Attributes inherited from Base

#buffer

Instance Method Summary collapse

Methods included from Helpers::LocationHelper

#rbs_location

Methods included from Helpers::ConstantHelper

constant_as_type_name, #self?.constant_as_type_name

Constructor Details

#initialize(buffer, name, node, super_class) ⇒ ClassDecl

Returns a new instance of ClassDecl.

Parameters:



74
75
76
77
78
79
80
# File 'lib/rbs/ast/ruby/declarations.rb', line 74

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

Instance Attribute Details

#class_nameTypeName (readonly)

Returns the value of attribute class_name.

Returns:



66
67
68
# File 'lib/rbs/ast/ruby/declarations.rb', line 66

def class_name
  @class_name
end

#membersArray[member] (readonly)

Returns the value of attribute members.

Returns:

  • (Array[member])


68
69
70
# File 'lib/rbs/ast/ruby/declarations.rb', line 68

def members
  @members
end

#nodePrism::ClassNode (readonly)

Returns the value of attribute node.

Returns:

  • (Prism::ClassNode)


70
71
72
# File 'lib/rbs/ast/ruby/declarations.rb', line 70

def node
  @node
end

#super_classSuperClass? (readonly)

Returns the value of attribute super_class.

Returns:



72
73
74
# File 'lib/rbs/ast/ruby/declarations.rb', line 72

def super_class
  @super_class
end

Instance Method Details

#each_declvoid #each_declEnumerator[t]

Overloads:

  • #each_declvoid

    This method returns an undefined value.

  • #each_declEnumerator[t]

    Returns:

    • (Enumerator[t])

Yields:

Yield Parameters:

  • arg0 (t)

Yield Returns:

  • (void)


82
83
84
85
86
87
88
89
90
# File 'lib/rbs/ast/ruby/declarations.rb', line 82

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

#locationLocation

Returns:



94
95
96
# File 'lib/rbs/ast/ruby/declarations.rb', line 94

def location
  rbs_location(node.location)
end

#name_locationLocation

Returns:



98
99
100
# File 'lib/rbs/ast/ruby/declarations.rb', line 98

def name_location
  rbs_location(node.constant_path.location)
end

#type_fingerprintObject

Returns:

  • (Object)


102
103
104
105
106
107
108
109
110
111
# File 'lib/rbs/ast/ruby/declarations.rb', line 102

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

  result << "decls/class"
  result << class_name.to_s
  result << super_class&.type_fingerprint
  result << members.map { _1.type_fingerprint }

  result
end

#type_paramsArray[AST::TypeParam]

Returns:



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

def type_params = []