class Dhallish::Ast::UnionType

Attributes

map[RW]

map: maps labels to ast-nodes that should be types

Public Class Methods

new(map) click to toggle source
# File lib/ast.rb, line 713
def initialize(map)
        @map = map
end

Public Instance Methods

compute_type(ctx) click to toggle source
# File lib/ast.rb, line 717
def compute_type(ctx)
        types_map = {}
        @map.each { |key, type|
                assert ("Duplicate labels in Union Types are not allowed") { !types_map.include? key }
                type_type = type.compute_type ctx
                assert ("annotated type in union type not a type") { type_type.is_a? Types::Type }
                types_map[key] = type_type.metadata
        }
        Types::Type.new(Types::Union.new types_map)
end
evaluate(ctx) click to toggle source
# File lib/ast.rb, line 728
def evaluate(ctx)
        res = {}
        @map.each { |key, node|
                res[key] = node.evaluate ctx
        }
        Types::Union.new(res)
end