Object
# File rbs-1.4.0/lib/rbs/types.rb, line 1004
def ==(other)
other.is_a?(Proc) && other.type == type && other.block == block
end
# File rbs-1.4.0/lib/rbs/types.rb, line 1046
def each_type(&block)
if block
type.each_type(&block)
self.block&.type&.each_type(&block)
else
enum_for :each_type
end
end
# File rbs-1.4.0/lib/rbs/types.rb, line 1014
def free_variables(set = Set[])
type.free_variables(set)
block&.type&.free_variables(set)
set
end
# File rbs-1.4.0/lib/rbs/types.rb, line 1010
def hash
self.class.hash ^ type.hash ^ block.hash
end
# File rbs-1.4.0/lib/rbs/types.rb, line 1055
def map_type_name(&block)
Proc.new(
type: type.map_type_name(&block),
block: self.block&.map_type {|type| type.map_type_name(&block) },
location: location
)
end
# File rbs-1.4.0/lib/rbs/types.rb, line 1029
def sub(s)
self.class.new(type: type.sub(s), block: block&.sub(s), location: location)
end
# File rbs-1.4.0/lib/rbs/types.rb, line 1020
def to_json(state = _ = nil)
{
class: :proc,
type: type,
block: block,
location: location
}.to_json(state)
end
# File rbs-1.4.0/lib/rbs/types.rb, line 1033
def to_s(level = 0)
case
when b = block
if b.required
"^(#{type.param_to_s}) { (#{b.type.param_to_s}) -> #{b.type.return_to_s} } -> #{type.return_to_s}"
else
"^(#{type.param_to_s}) ?{ (#{b.type.param_to_s}) -> #{b.type.return_to_s} } -> #{type.return_to_s}"
end
else
"^(#{type.param_to_s}) -> #{type.return_to_s}"
end
end