compiler: allow ext-types file to have comments
diff --git a/cogent/Main.hs b/cogent/Main.hs index 96a9a29..7496b78 100644 --- a/cogent/Main.hs +++ b/cogent/Main.hs
@@ -61,11 +61,6 @@ import Cogent.Util as UT -- import BuildInfo_cogent (githash, buildtime) -#if __GLASGOW_HASKELL__ < 709 -import Control.Applicative (liftA, (<$>)) -#else -import Control.Applicative (liftA) -#endif import Control.Monad (forM, forM_, unless, when, (<=<)) import Control.Monad.Trans.Except (runExceptT) -- import Control.Monad.Cont @@ -647,7 +642,7 @@ parseWithIncludes source __cogent_include >>= \case Left err -> hPutStrLn stderr err >> exitFailure Right (parsed,pragmas) -> do - prune <- T.forM __cogent_prune_call_graph $ return . parseEntryFuncs <=< readFile + prune <- T.forM __cogent_prune_call_graph simpleLineParser putProgressLn "Resolving dependencies..." case reorganize prune parsed of Left err -> printError prettyRE [err] >> exitFailure @@ -763,7 +758,7 @@ let stg = STGMono putProgressLn "Monomorphising..." efuns <- T.forM __cogent_entry_funcs $ - return . (,empty) <=< (readEntryFuncs tced tcst typedefs fts) <=< return . parseEntryFuncs <=< readFile + return . (,empty) <=< (readEntryFuncs tced tcst typedefs fts) <=< simpleLineParser entryFuncs <- case efuns of Nothing -> return Nothing Just (Nothing, _) -> exitFailure @@ -897,7 +892,7 @@ output csfile $ flip LJ.hPutDoc corresSetupThy when cp $ do putProgressLn "Generating C-refinement proofs..." - ent <- T.forM __cogent_entry_funcs $ (liftA parseEntryFuncs) . readFile -- a simple parser + ent <- T.forM __cogent_entry_funcs simpleLineParser -- a simple parser let corresProofThy = corresProof thy inputc (map SY.CoreFunName confns) (map SY.CoreFunName <$> ent) log writeFileMsg cpfile output cpfile $ flip LJ.hPutDoc corresProofThy @@ -1049,8 +1044,6 @@ writeFileMsg bifile output bifile $ flip hPutStrLn buildinfo - -- --entry-funcs expects one function name per line; lines starting with -- are comments - parseEntryFuncs = filter (not . isPrefixOf "--") . filter (not . null) . map (dropWhile isSpace) . lines -- ------------------------------------------------------------------------ -- Helper functions
diff --git a/cogent/cogent.cabal b/cogent/cogent.cabal index b459aa4..378c3d6 100644 --- a/cogent/cogent.cabal +++ b/cogent/cogent.cabal
@@ -75,7 +75,7 @@ custom-setup setup-depends: - base >= 4.10 && < 4.14 + base >= 4.10 && < 4.15 , Cabal >= 3.0 -- ^^^ 3.0 is needed as we use Cabal in Setup.hs , directory >= 1.2 @@ -175,7 +175,7 @@ build-depends: ansi-wl-pprint >= 0.6 - , base >= 4.10 && < 4.14 + , base >= 4.10 && < 4.15 , binary , bytestring >= 0.10 , containers >= 0.5.8 @@ -255,7 +255,7 @@ cogent , ansi-wl-pprint >= 0.6 , atomic-write >= 0.2.0.4 - , base >= 4.10 && < 4.14 + , base >= 4.10 && < 4.15 , binary , containers >= 0.5.8 , directory >=1.2 @@ -302,7 +302,7 @@ main-is: test-util.hs build-depends: cogent - , base >= 4.10 && < 4.14 + , base >= 4.10 && < 4.15 , containers >= 0.5.8 , directory >=1.2 , filepath >= 1.4.0.0 @@ -324,7 +324,7 @@ , CogentTests.Core build-depends: cogent - , base >= 4.10 && < 4.14 + , base >= 4.10 && < 4.15 , Cabal >= 3.0 , containers >= 0.5.8 , mainland-pretty >= 0.2.6
diff --git a/cogent/examples/files/types.cfg b/cogent/examples/files/types.cfg index c7152c4..1f0d456 100644 --- a/cogent/examples/files/types.cfg +++ b/cogent/examples/files/types.cfg
@@ -1 +1,3 @@ FILE +-- This line is a comment, and the next line is empty +
diff --git a/cogent/src/Cogent/Glue.hs b/cogent/src/Cogent/Glue.hs index d4fa4b7..4cefa67 100644 --- a/cogent/src/Cogent/Glue.hs +++ b/cogent/src/Cogent/Glue.hs
@@ -103,7 +103,7 @@ let start = startPos filename #endif s <- lift $ B.readFile filename - typnames <- case __cogent_ext_types of Nothing -> lift (return deftypnames); Just f -> lift $ getTypnames f + typnames <- case __cogent_ext_types of Nothing -> lift (return deftypnames); Just f -> lift $ simpleLineParser f case CP.evalP (__fixme CP.parseUnit) (CP.emptyPState exts typnames s start) of -- FIXME: check for other antiquotes Left err -> throwE $ "Error: Failed to parse C: " ++ show err Right ds -> return ds @@ -114,9 +114,6 @@ defaultTypnames :: [String] defaultTypnames = [] -getTypnames :: FilePath -> IO [String] -getTypnames = liftA lines . readFile - -- Desugaring, Monomorphising, and CG
diff --git a/cogent/src/Cogent/Util.hs b/cogent/src/Cogent/Util.hs index 294f557..49778ba 100644 --- a/cogent/src/Cogent/Util.hs +++ b/cogent/src/Cogent/Util.hs
@@ -428,6 +428,11 @@ getStdIncFullPath fp = do sdir <- getLibgumDir return (sdir </> fp) +-- reads a file, ignoring all lines starting with "--" and blank lines, eliminate spaces +simpleLineParser :: FilePath -> IO [String] +simpleLineParser = (return . filter (not . L.isPrefixOf "--") . filter (not . null) . map (dropWhile isSpace) . lines) <=< readFile + + -- If the domain of some maps contains duplicate keys. -- Returns Left ks for overlapping keys ks, Right ks for with the set of non-overlapping keys ks. overlapping :: (Eq k) => [M.Map k v] -> Either [k] [k]