clash-lib-1.2.2: tests/Clash/Tests/Core/Subst.hs
{-# LANGUAGE OverloadedStrings #-}
module Clash.Tests.Core.Subst (tests) where
import SrcLoc (noSrcSpan)
import Test.Tasty
import Test.Tasty.HUnit
import Clash.Core.Name (Name(..), NameSort(..))
import Clash.Core.Term (Term(Var))
import Clash.Core.Type (ConstTy(..), Type(ConstTy))
import Clash.Core.Subst
import Clash.Core.VarEnv
import Clash.Core.Var (IdScope(..), Var(..))
fakeName :: Name a
fakeName =
Name
{ nameSort=User
, nameOcc="fake"
, nameUniq=0
, nameLoc=noSrcSpan
}
unique :: Int
unique = 20
termVar :: Var Term
termVar = Id {
varName = fakeName {nameUniq=unique, nameOcc="term"}
, varUniq = unique
, varType = ConstTy (TyCon fakeName)
, idScope = LocalId
}
term1 :: Term
term1 = Var termVar
tests :: TestTree
tests =
testGroup
"Clash.Tests.Core.Subst"
[ testCase "deShadow type/term" $
term1 @=? deShadowTerm (extendInScopeSet emptyInScopeSet termVar) term1
]