X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=HsTools.hs;h=22cd57f06de9d90350cb2c39e67b90b254ba058d;hb=aa23b0116eaf65b01499cd1eba93a92f7c8c36e8;hp=0f3e463040a02777dbb068cba06c4769efc9eedd;hpb=1c0228a91d0b3ba02697c092818333d95fcc3100;p=matthijs%2Fmaster-project%2Fc%CE%BBash.git diff --git a/HsTools.hs b/HsTools.hs index 0f3e463..22cd57f 100644 --- a/HsTools.hs +++ b/HsTools.hs @@ -3,7 +3,7 @@ module HsTools where -- Standard modules import qualified Unsafe.Coerce - +import qualified Maybe -- GHC API import qualified GHC @@ -31,6 +31,7 @@ import qualified RnEnv import qualified TcExpr import qualified TcEnv import qualified TcSimplify +import qualified TcTyFuns import qualified Desugar import qualified InstEnv import qualified FamInstEnv @@ -123,6 +124,20 @@ mkId rdr_name = do TcEnv.tcLookupId name return id +normaliseType :: + HscTypes.HscEnv + -> Type.Type + -> IO Type.Type +normaliseType env ty = do + (err, nty) <- MonadUtils.liftIO $ + -- Initialize the typechecker monad + TcRnMonad.initTcPrintErrors env PrelNames.iNTERACTIVE $ do + -- Normalize the type + (_, nty) <- TcTyFuns.tcNormaliseFamInst ty + return nty + let normalized_ty = Maybe.fromJust nty + return normalized_ty + -- | Translate a core Type to an HsType. Far from complete so far. coreToHsType :: Type.Type -> HsTypes.LHsType RdrName.RdrName -- Translate TyConApps