{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE PatternSynonyms   #-}

module Dhall.JSON.Util
    ( pattern V
    , pattern FA
    ) where

import Data.Text  (Text)
import Dhall.Core (Expr, FieldSelection)

import qualified Dhall.Core as Core

pattern V :: Int -> Expr s a
pattern $bV :: Int -> Expr s a
$mV :: forall r s a. Expr s a -> (Int -> r) -> (Void# -> r) -> r
V n = Core.Var (Core.V "_" n)

pattern FA :: Text -> FieldSelection s
pattern $bFA :: Text -> FieldSelection s
$mFA :: forall r s. FieldSelection s -> (Text -> r) -> (Void# -> r) -> r
FA t <- Core.FieldSelection _ t _
  where FA = Text -> FieldSelection s
forall s. Text -> FieldSelection s
Core.makeFieldSelection