packages feed

fortran-src-extras 0.2.0 → 0.3.0

raw patch · 6 files changed

+30/−85 lines, 6 filesdep +eitherdep ~fortran-srcPVP ok

version bump matches the API change (PVP)

Dependencies added: either

Dependency ranges changed: fortran-src

API changes (from Hackage documentation)

- Language.Fortran.Extras.ModFiles: decodeModFiles :: [FilePath] -> IO ModFiles
- Language.Fortran.Extras.ModFiles: isModFile :: String -> Bool

Files

CHANGELOG.md view
@@ -1,3 +1,9 @@+## 0.3.0 (2022-02-15)+  * Update to fortran-src 0.9.0+  * Remove `Language.Fortran.Extras.ModFiles`. The functions are available+    in fortran-src 0.9.0. `decodeModFiles` is renamed to+    `Language.Fortran.Util.ModFile.decodeModFiles'`.+ ## 0.2.0 (2021-06-30)   * Minor changes to the documentation   * Minor changes to provided `withProgramAnalysis` interface to include verbose mode
fortran-src-extras.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack  name:           fortran-src-extras-version:        0.2.0+version:        0.3.0 synopsis:       Common functions and utils for fortran-src. description:    Various utility functions and orphan instances which may be useful when using fortran-src. category:       Language@@ -28,7 +28,6 @@       Language.Fortran.Extras       Language.Fortran.Extras.Analysis       Language.Fortran.Extras.Encoding-      Language.Fortran.Extras.ModFiles       Language.Fortran.Extras.ProgramFile       Language.Fortran.Extras.RunOptions       Language.Fortran.Extras.Test@@ -44,8 +43,9 @@     , bytestring >=0.10.8.1     , containers >=0.5.0.0     , directory >=1.3.0.2+    , either >=5.0.0 && <5.1     , filepath >=1.4.1.2-    , fortran-src >=0.5.0+    , fortran-src >=0.9.0     , optparse-applicative >=0.14     , text >=1.2.2.2     , uniplate >=1.6.10@@ -65,7 +65,8 @@       hspec-discover:hspec-discover   build-depends:       base >=4.7 && <5-    , fortran-src >=0.5.0+    , either >=5.0.0 && <5.1+    , fortran-src >=0.9.0     , fortran-src-extras     , hspec >=2.2 && <3     , silently ==1.2.*
src/Language/Fortran/Extras.hs view
@@ -32,8 +32,7 @@                                                as P import qualified Language.Fortran.Extras.Analysis                                                as A-import           Language.Fortran.Extras.ModFiles-                                                ( decodeModFiles )+import           Language.Fortran.Util.ModFile  ( decodeModFiles' ) import           Language.Fortran.Extras.RunOptions                                                 ( unwrapFortranSrcOptions                                                 , getFortranSrcRunOptions@@ -98,7 +97,7 @@     _ -> if null pfIncludes       then return $ A.versionedProgramAnalysis fVersion pfPath pfContents       else do-        pfMods <- decodeModFiles pfIncludes+        pfMods <- decodeModFiles' pfIncludes         return $ A.versionedProgramAnalysisWithMods fVersion                                                     pfMods                                                     pfPath
src/Language/Fortran/Extras/Analysis.hs view
@@ -1,5 +1,5 @@ -- | This module exposes functions obtaining both explicitly versioned--- and implicitly versionied analyses of source code.+-- and implicitly versioned analyses of source code. module Language.Fortran.Extras.Analysis   ( versionedExpandedProgramAnalysis   , versionedProgramAnalysis
− src/Language/Fortran/Extras/ModFiles.hs
@@ -1,50 +0,0 @@--- | This module provides functions for handling FORTRAN source modules.-module Language.Fortran.Extras.ModFiles-  ( isModFile-  , decodeModFiles-  )-where--import           Control.Monad                  ( foldM-                                                , forM-                                                )-import           Data.Binary                    ( decodeFileOrFail )-import           Language.Fortran.Util.ModFile  ( emptyModFile-                                                , emptyModFiles-                                                , ModFiles-                                                , modFileSuffix-                                                )-import           Language.Fortran.Util.Files    ( rGetDirContents )-import           System.FilePath                ( takeExtension-                                                , (</>)-                                                )---- | Return TRUE iff the file extension indicates a module file.-isModFile :: String -> Bool-isModFile = (== modFileSuffix) . takeExtension---- | Read suspected module files from a list of files and obtain the--- 'Language.Fortran.Util.ModFiles' object populated by their contents.------ TODO: almost equal to Language.Fortran.Analysis.ModGraph.decodeModFiles-decodeModFiles :: [FilePath] -> IO ModFiles-decodeModFiles = foldM-  (\modFiles d -> do-    modFileNames  <- filter isModFile `fmap` rGetDirContents d-    addedModFiles <- forM modFileNames $ \modFileName -> do-      eResult <- decodeFileOrFail (d </> modFileName)-      case eResult of-        Left (offset, msg) -> do-          putStrLn-            $  modFileName-            ++ ": Error at offset "-            ++ show offset-            ++ ": "-            ++ msg-          return emptyModFile-        Right modFile -> do-          putStrLn $ modFileName ++ ": successfully parsed precompiled file."-          return modFile-    return $ addedModFiles ++ modFiles-  )-  emptyModFiles
src/Language/Fortran/Extras/ProgramFile.hs view
@@ -2,21 +2,16 @@ -- 'Language.Fortran.AST.ProgramFile' from a valid file name. module Language.Fortran.Extras.ProgramFile where -import qualified Data.ByteString.Char8         as B-import           Language.Fortran.AST           ( A0-                                                , ProgramFile-                                                )-import           Language.Fortran.Version       ( deduceFortranVersion-                                                , FortranVersion(..)-                                                )-import           Language.Fortran.Parser.Any    ( parserVersions-                                                )-import           Language.Fortran.ParserMonad   ( fromParseResult-                                                , fromRight-                                                )-import           Language.Fortran.Parser.Fortran77-                                                ( legacy77ParserWithIncludes )-import           System.FilePath                ( takeDirectory )+import qualified Data.ByteString.Char8      as B+import           Language.Fortran.AST       ( A0+                                            , ProgramFile+                                            )+import           Language.Fortran.Version   ( deduceFortranVersion+                                            , FortranVersion(..)+                                            )+import qualified Language.Fortran.Parser    as Parser+import           System.FilePath            ( takeDirectory )+import           Data.Either.Combinators    ( fromRight' )  -- | Obtain a 'ProgramFile' from a specific version of the parser with include -- statements expanded.@@ -24,22 +19,16 @@ -- TODO: cover all FortranVersions, instead of just Fortran77Legacy versionedExpandedProgramFile   :: FortranVersion -> [String] -> String -> B.ByteString -> IO (ProgramFile A0)-versionedExpandedProgramFile version importDirs path contents = case version of-  Fortran77Legacy ->-    let parserF b s =-            fromRight-              . fromParseResult-              <$> legacy77ParserWithIncludes (takeDirectory path : importDirs) b s-    in  parserF contents path-  _ -> error ("Unsupported version: " ++ show version)+versionedExpandedProgramFile v importDirs path contents =+    case v of+      Fortran77Legacy ->+        Parser.f77lIncludes (takeDirectory path : importDirs) [] path contents+      _ -> error $ "Unsupported version: " ++ show v  -- | Obtain a 'ProgramFile' from a specific version of the parser. versionedProgramFile   :: FortranVersion -> String -> B.ByteString -> ProgramFile A0-versionedProgramFile version path contents =-  let parserF = parserVersions version-      pf      = fromRight $ parserF contents path -- Parse contents of file-  in  pf+versionedProgramFile v p c = fromRight' $ (Parser.byVer v) p c  -- | Obtain a 'ProgramFile' from a parser version deduced by inspection -- of the file extension.