class Dhall::AsDhall::ExpressionList::Union

Public Class Methods

new(values, exprs, types) click to toggle source
# File lib/dhall/as_dhall.rb, line 197
def initialize(values, exprs, types)
        @tags, @types = values.zip(types).map { |(value, type)|
                if type.is_a?(UnionType) && type.alternatives.length == 1
                        type.alternatives.to_a.first
                else
                        [AsDhall.tag_for(value), type]
                end
        }.transpose
        @exprs = exprs
        @inferer = UnionInferer.new
end

Public Instance Methods

list() click to toggle source
# File lib/dhall/as_dhall.rb, line 209
def list
        final_inferer =
                @tags
                .zip(@exprs, @types)
                .reduce(@inferer) do |inferer, (tag, expr, type)|
                        inferer.with(
                                tag,
                                type.nil? ? nil : TypeAnnotation.new(value: expr, type: type)
                        )
                end
        List.new(elements: @exprs.map(&final_inferer.method(:union_for)))
end