Class: RBI::Type::All
Overview
A type that is intersection of multiple types like ‘T.all(String, Integer)`.
Instance Attribute Summary
Attributes inherited from Composite
Instance Method Summary collapse
-
#normalize ⇒ Object
: -> Type.
-
#simplify ⇒ Object
: -> Type.
-
#to_rbi ⇒ Object
: -> String.
Methods inherited from Composite
Methods inherited from RBI::Type
#==, all, any, anything, attached_class, boolean, class_of, #eql?, generic, #hash, #initialize, #nilable, nilable, #nilable?, #non_nilable, noreturn, parse_node, parse_string, proc, #rbs_string, self_type, shape, simple, t_class, t_module, #to_s, tuple, type_alias, type_parameter, untyped, void
Constructor Details
This class inherits a constructor from RBI::Type::Composite
Instance Method Details
#normalize ⇒ Object
: -> Type
429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 |
# File 'lib/rbi/type.rb', line 429 def normalize flattened = @types.flat_map do |type| type = type.normalize case type when All type.types.map(&:normalize) else type end end.uniq if flattened.size == 1 return flattened.first #: as !nil end All.new(flattened) end |
#simplify ⇒ Object
: -> Type
449 450 451 452 453 454 455 456 457 458 |
# File 'lib/rbi/type.rb', line 449 def simplify type = normalize case type when All All.new(type.types.map(&:simplify)) else type.simplify end end |
#to_rbi ⇒ Object
: -> String
423 424 425 |
# File 'lib/rbi/type.rb', line 423 def to_rbi "::T.all(#{@types.map(&:to_rbi).join(", ")})" end |