swh:1:snp:aeaf3dbb58f5be84b565e73b5ade1503ee8cb6d6
Raw File
Tip revision: b6407e0f026cf5491ca5ed0a35ea5cf316ebe8ca authored by Anish Tondwalkar on 21 May 2021, 03:15:25 UTC
formatted for submission
Tip revision: b6407e0
SimpleTypes.hs
{-# LANGUAGE PatternSynonyms #-}

module Tests.SimpleTypes
  (
    T.Prim (..)
  , T.Id
  , T.Type (..), T.TVar (..), T.Ctor (..)
  , T.RType (..)

  -- -- * Abstract syntax of Mist
  , T.Expr
  , pattern Number
  , pattern AnnNumber
  , pattern Boolean
  , pattern AnnBoolean
  , pattern Unit
  , pattern AnnUnit
  , pattern Id
  , pattern AnnId
  , pattern Prim
  , pattern AnnPrim
  , pattern If
  , pattern AnnIf
  , pattern Let
  , pattern AnnLet
  , pattern App
  , pattern AnnApp
  , pattern Lam
  , pattern AnnLam
  , pattern TApp
  , pattern AnnTApp
  , pattern TAbs
  , pattern AnnTAbs

  , T.ParsedAnnotation (..)
  , T.ParsedExpr, T.ParsedBind

  , T.ElaboratedAnnotation
  , pattern T.ElabUnrefined, pattern T.ElabRefined
  , T.ElaboratedExpr, T.ElaboratedBind

  , T.Bind
  , pattern Bind
  , pattern AnnBind
  ) where

import qualified Language.Mist.Types as T
import qualified Language.Mist.UX as UX
import Text.Megaparsec.Pos (initialPos)

pattern Number i = T.Number i ()
pattern Boolean b = T.Boolean b ()
pattern Unit = T.Unit ()
pattern Id x = T.Id x ()
pattern Prim p = T.Prim p ()
pattern If e1 e2 e3 = T.If e1 e2 e3 ()
pattern Let b e1 e2 = T.Let b e1 e2 ()
pattern App e1 e2 = T.App e1 e2 ()
pattern Lam b e = T.Lam b e ()
pattern TApp e t = T.TApp e t ()
pattern TAbs alpha e = T.TAbs alpha e ()

pattern Bind x = T.Bind x ()

pattern AnnNumber i tag = T.AnnNumber i tag ()
pattern AnnBoolean b tag = T.AnnBoolean b tag ()
pattern AnnUnit tag = T.AnnUnit tag ()
pattern AnnId x tag = T.AnnId x tag ()
pattern AnnPrim p tag = T.AnnPrim p tag ()
pattern AnnIf e1 e2 e3 tag = T.AnnIf e1 e2 e3 tag ()
pattern AnnLet b e1 e2 tag = T.AnnLet b e1 e2 tag ()
pattern AnnApp e1 e2 tag = T.AnnApp e1 e2 tag ()
pattern AnnLam b e tag = T.AnnLam b e tag ()
pattern AnnTApp e t tag = T.AnnTApp e t tag ()
pattern AnnTAbs alpha e tag = T.AnnTAbs alpha e tag ()

pattern AnnBind {bindId, bindAnn} = T.AnnBind{ T.bindId = bindId
                                             , T.bindAnn = bindAnn
                                             , T.bindTag = ()}

instance UX.Located () where
  sourceSpan () = UX.SS
    { UX.ssBegin = initialPos "test"
    , UX.ssEnd = initialPos "test"
    }
back to top