727
728
729
730
731
732
733
734
735
736
737
|
# File 'lib/puppet/pops/types/type_calculator.rb', line 727
def infer_set_Hash(o)
if o.empty?
PHashType::EMPTY
elsif o.keys.all? { |k| PStringType::NON_EMPTY.instance?(k) }
PStructType.new(o.each_pair.map { |k, v| PStructElement.new(PStringType.new(k), infer_set(v)) })
else
ktype = PVariantType.maybe_create(o.keys.map { |k| infer_set(k) })
etype = PVariantType.maybe_create(o.values.map { |e| infer_set(e) })
PHashType.new(unwrap_single_variant(ktype), unwrap_single_variant(etype), size_as_type(o))
end
end
|