X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=c%CE%BBash%2FCLasH%2FUtils.hs;fp=c%CE%BBash%2FCLasH%2FUtils.hs;h=c539c790125937b00363e77f0b333367a5c685ef;hb=20bfd1175196d07cb1da80813d6eb958560e62bd;hp=0000000000000000000000000000000000000000;hpb=46f158b38c85034e5bef234df4436ea279f895f9;p=matthijs%2Fmaster-project%2Fc%CE%BBash.git diff --git "a/c\316\273ash/CLasH/Utils.hs" "b/c\316\273ash/CLasH/Utils.hs" new file mode 100644 index 0000000..c539c79 --- /dev/null +++ "b/c\316\273ash/CLasH/Utils.hs" @@ -0,0 +1,49 @@ +module CLasH.Utils + ( listBindings + , listBind + ) where + +-- Standard Imports +import qualified Maybe + +-- GHC API +import qualified CoreSyn +import qualified CoreUtils +import qualified HscTypes +import qualified Outputable +import qualified Var + +-- Local Imports +import CLasH.Utils.GhcTools +import CLasH.Utils.Pretty + +listBindings :: FilePath -> [FilePath] -> IO [()] +listBindings libdir filenames = do + (cores,_,_,_,_) <- loadModules libdir filenames bogusFinder bogusFinder bogusFinder + let binds = concat $ map (CoreSyn.flattenBinds . HscTypes.cm_binds) cores + mapM (listBinding) binds + where + bogusFinder = (\x -> return $ Nothing) + +listBinding :: (CoreSyn.CoreBndr, CoreSyn.CoreExpr) -> IO () +listBinding (b, e) = do + putStr "\nBinder: " + putStr $ show b + putStr "\nType of Binder: \n" + putStr $ Outputable.showSDoc $ Outputable.ppr $ Var.varType b + putStr "\n\nExpression: \n" + putStr $ prettyShow e + putStr "\n\n" + putStr $ Outputable.showSDoc $ Outputable.ppr e + putStr "\n\nType of Expression: \n" + putStr $ Outputable.showSDoc $ Outputable.ppr $ CoreUtils.exprType e + putStr "\n\n" + +-- | Show the core structure of the given binds in the given file. +listBind :: FilePath -> [FilePath] -> String -> IO () +listBind libdir filenames name = do + (_,corebind,_,coreexpr,_) <- loadModules libdir filenames bindFinder bindFinder exprFinder + listBinding (Maybe.fromJust $ head corebind, Maybe.fromJust $ head coreexpr) + where + bindFinder = findBind (hasVarName name) + exprFinder = findExpr (hasVarName name) \ No newline at end of file