From c5666fabddca9eaf9786a310bc14d77ffc0bc51e Mon Sep 17 00:00:00 2001 From: aarne Date: Thu, 23 Feb 2006 09:58:59 +0000 Subject: the -gfc option --- src/GF/Infra/ReadFiles.hs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'src/GF/Infra/ReadFiles.hs') diff --git a/src/GF/Infra/ReadFiles.hs b/src/GF/Infra/ReadFiles.hs index 538af5b8f..bb0d5e630 100644 --- a/src/GF/Infra/ReadFiles.hs +++ b/src/GF/Infra/ReadFiles.hs @@ -62,7 +62,7 @@ getAllFiles opts ps env file = do else do - ds2 <- ioeIO $ mapM (selectFormat env) pds1 + ds2 <- ioeIO $ mapM (selectFormat opts env) pds1 let ds4 = needCompile opts (map fst ds0) ds2 return ds4 @@ -80,15 +80,19 @@ data CompStatus = -- for gfc, we also return ModTime to cope with earlier compilation of libs -selectFormat :: ModEnv -> (InitPath,ModName) -> +selectFormat :: Options -> ModEnv -> (InitPath,ModName) -> IO (ModName,(InitPath,(CompStatus,Maybe ModTime))) -selectFormat env (p,f) = do + +selectFormat opts env (p,f) = do let pf = prefixPathName p f let mtenv = lookup f env -- Nothing if f is not in env let rtenv = lookup (resModName f) env + let fromComp = oElem isCompiled opts -- i -gfc mtgfc <- getModTime $ gfcFile pf mtgf <- getModTime $ gfFile pf let stat = case (rtenv,mtenv,mtgfc,mtgf) of + (_,Just tenv,_,_) | fromComp -> (CSEnv, Just tenv) + (_,_,Just tgfc,_) | fromComp -> (CSRead,Just tgfc) (Just tenv,_,_,Just tgf) | laterModTime tenv tgf -> (CSEnvR,Just tenv) (_,Just tenv,_,Just tgf) | laterModTime tenv tgf -> (CSEnv, Just tenv) (_,_,Just tgfc,Just tgf) | laterModTime tgfc tgf -> (CSRead,Just tgfc) @@ -96,7 +100,6 @@ selectFormat env (p,f) = do _ -> (CSComp,Nothing) return $ (f, (p,stat)) - needCompile :: Options -> [ModuleHeader] -> [(ModName,(InitPath,(CompStatus,Maybe ModTime)))] -> [FullPath] -- cgit v1.2.3