Object
# File rbs-2.0.0/lib/rbs/types.rb, line 448
def ==(other)
other.is_a?(Record) && other.fields == fields
end
# File rbs-2.0.0/lib/rbs/types.rb, line 488
def each_type(&block)
if block
fields.each_value(&block)
else
enum_for :each_type
end
end
# File rbs-2.0.0/lib/rbs/types.rb, line 458
def free_variables(set = Set.new)
set.tap do
fields.each_value do |type|
type.free_variables set
end
end
end
# File rbs-2.0.0/lib/rbs/types.rb, line 454
def hash
self.class.hash ^ fields.hash
end
# File rbs-2.0.0/lib/rbs/types.rb, line 503
def map_type(&block)
if block
Record.new(
fields: fields.transform_values {|type| yield type },
location: location
)
else
enum_for :map_type
end
end
# File rbs-2.0.0/lib/rbs/types.rb, line 496
def map_type_name(&block)
Record.new(
fields: fields.transform_values {|ty| ty.map_type_name(&block) },
location: location
)
end
# File rbs-2.0.0/lib/rbs/types.rb, line 470
def sub(s)
self.class.new(fields: fields.transform_values {|ty| ty.sub(s) },
location: location)
end
# File rbs-2.0.0/lib/rbs/types.rb, line 466
def to_json(state = _ = nil)
{ class: :record, fields: fields, location: location }.to_json(state)
end
# File rbs-2.0.0/lib/rbs/types.rb, line 475
def to_s(level = 0)
return "{ }" if self.fields.empty?
fields = self.fields.map do |key, type|
if key.is_a?(Symbol) && key.match?(/\A[A-Za-z_][A-Za-z_]*\z/)
"#{key}: #{type}"
else
"#{key.inspect} => #{type}"
end
end
"{ #{fields.join(", ")} }"
end