module Main where

import GHC
import GHC.Paths
import HscTypes

main :: IO ()
main = do
    loadProj "Test.hs"

loadProj :: FilePath -> IO ()
loadProj src = do
    modgutss <- runGhc (Just libdir) $ do
        flags <- getSessionDynFlags
        _ <- setSessionDynFlags flags

        target <- guessTarget src Nothing
        _ <- setTargets [target]
        _ <- load LoadAllTargets
        
        mod_graph <- getModuleGraph
        parsed_mods <- mapM parseModule mod_graph
        typed_mods <- mapM typecheckModule parsed_mods
        desug_mods <- mapM desugarModule typed_mods

        return $ map coreModule desug_mods

    let rules = map (\mg -> ( moduleNameString . moduleName $ mg_module mg
                            , length $ mg_rules mg)
                    ) modgutss
    print $ rules

    return ()