Method: Puppet::Pops::Types::PStructType#iterable_type

Defined in:
lib/puppet/pops/types/types.rb

#iterable_type(guard = nil) ⇒ Object

API:

  • public



1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
# File 'lib/puppet/pops/types/types.rb', line 1950

def iterable_type(guard = nil)
  if self == DEFAULT
    PIterableType.new(PHashType::DEFAULT_KEY_PAIR_TUPLE)
  else
    tc = TypeCalculator.singleton
    PIterableType.new(
      PTupleType.new([
        PVariantType.maybe_create(@elements.map {|se| se.key_type }),
        PVariantType.maybe_create(@elements.map {|se| se.value_type })],
        PHashType::KEY_PAIR_TUPLE_SIZE))
  end
end