Module: Dhall::Parser::UnionTypeOrLiteralVariantType

Defined in:
lib/dhall/parser.rb

Instance Method Summary collapse

Instance Method Details

#value(label) ⇒ Object



400
401
402
403
404
405
406
407
408
409
410
# File 'lib/dhall/parser.rb', line 400

def value(label)
  rest = capture(:non_empty_union_type_or_literal)&.value
  type = UnionType.new(
    alternatives: { label => capture(:expression)&.value }
  )
  if rest.is_a?(Union)
    rest.with(alternatives: type.merge(rest.alternatives))
  else
    rest ? type.merge(rest) : type
  end
end