packages feed

cspmchecker 0.2.1 → 1.0.0

raw patch · 5 files changed

+39/−23 lines, 5 filesdep ~haskelinedep ~libcspm

Dependency ranges changed: haskeline, libcspm

Files

cspmchecker.cabal view
@@ -10,7 +10,7 @@ Build-type: Simple Cabal-version: >=1.9.2 Synopsis: A command line type checker for CSPM files.-Version: 0.2.1+Version: 1.0.0  Source-Repository head     type:     git@@ -21,7 +21,7 @@     type:     git     location: git://github.com/tomgr/libcspm.git     subdir:   cspmchecker-    tag: release-0.2.1+    tag: release-1.0.0    Executable cspmchecker     Main-is: Main.hs@@ -31,7 +31,7 @@      Build-depends:          base >= 4 && < 5,-        libcspm >= 0.2.1,+        libcspm,         filepath >= 1.2,         mtl >= 2.0,         directory >= 1.0@@ -48,6 +48,6 @@         filepath >= 1.2,          mtl >= 2.0,         directory >= 1.0,-        haskeline >= 0.6+        haskeline >= 0.7        Hs-Source-Dirs: src/InteractiveChecker
src/Checker/Main.hs view
@@ -14,6 +14,7 @@ import Data.Version (showVersion)  import CSPM+import qualified CSPM.CommandLineOptions as CSPM import CSPM.PrettyPrinter import Monad import Util.Annotated@@ -44,10 +45,11 @@     fss <- mapM getFilesFromDir [dir | dir <- dirs']     return $ files'++concat fss -doFile :: FilePath -> Checker Bool-doFile fp = do+doFile :: Options -> FilePath -> Checker Bool+doFile opts fp = do     liftIO $ putStr $ "Checking "++fp++"....."-    res <- tryM $ do+    res <- tryM $ convertExceptionsToPanics $ do+        CSPM.setOptions (cspmOptions opts)         ms <- parseFile fp         rms <- CSPM.renameFile ms         typeCheckFile rms@@ -70,12 +72,16 @@ data Options = Options {         recursive :: Bool,         help :: Bool,-        printVersion :: Bool+        printVersion :: Bool,+        cspmOptions :: CSPM.Options     }++defaultOptions :: Options defaultOptions = Options {          recursive = False,          help = False,-        printVersion = False+        printVersion = False,+        cspmOptions = CSPM.defaultOptions     }  options :: [OptDescr (Options -> Options)]@@ -90,6 +96,7 @@         (NoArg (\o -> o { help = True }))          "Display usage message"     ]+    ++ CSPM.allOptions cspmOptions (\ opts x -> opts { cspmOptions = x })  header :: String header = "Usage: cspmchecker [OPTION...] files..."@@ -99,7 +106,7 @@     args <- getArgs     st <- initCheckerState     runChecker st $ case getOpt RequireOrder options args of-        (_,_,e:es) -> liftIO $ putStr $ show $ concat (e:es) ++ usageInfo header options+        (_,_,e:es) -> liftIO $ putStr $ concat (e:es) ++ usageInfo header options         (o,files, []) -> do             let opts = foldl (flip id) defaultOptions o             case (opts, files) of@@ -112,8 +119,8 @@                     liftIO $ putStr $ usageInfo header options                 (Options { recursive = True }, dirs) -> do                     tasks <- mapM (liftIO . getFilesFromDir) dirs-                    countSuccesses (map doFile (concat tasks))+                    countSuccesses (map (doFile opts) (concat tasks))                 (_, []) ->                      liftIO $ putStr $ usageInfo header options                 (_, files) -> -                    countSuccesses (map doFile files)+                    countSuccesses (map (doFile opts) files)
src/Checker/Monad.hs view
@@ -14,12 +14,12 @@  initCheckerState :: IO CheckerState initCheckerState = do-    sess <- newCSPMSession+    sess <- newCSPMSession defaultEvaluatorOptions     return $ CheckerState sess []  resetCSPM :: Checker () resetCSPM = do-    sess <- liftIO $ newCSPMSession+    sess <- liftIO $ newCSPMSession defaultEvaluatorOptions     modify (\st -> st { cspmSession = sess, lastWarnings = [] })  type Checker = StateT CheckerState IO
src/InteractiveChecker/Main.hs view
@@ -6,15 +6,18 @@ import Data.List import Prelude hiding (catch) import System.Console.Haskeline+import System.Environment import System.FilePath import System.IO  import CSPM-import CSPM.Compiler.Processes+import CSPM.Evaluator.ProcessValues+import CSPM.Evaluator.ValuePrettyPrinter import Monad import Util.Annotated import Util.Exception import Util.Monad+import qualified Util.MonadicPrettyPrint as M import Util.Prelude import Util.PrettyPrint @@ -32,7 +35,12 @@             historyFile = Just $                  joinPath [settingsDir, "interactive", "prompt_history"]         }-    runInputT settings interactiveLoop+    runInputT settings $ do+        args <- liftIO $ getArgs+        case args of+            [f] -> handleSourceError () (loadFileCommand f)+            _ -> return ()+        interactiveLoop  interactiveLoop :: InputT IChecker () interactiveLoop = do@@ -128,7 +136,7 @@ completeExpression :: CompletionFunc IChecker completeExpression = wrapCompleter expressionBreakers $ \str -> do     ns <- getBoundNames-    return [s | n <- ns, let OccName s = nameOccurrence n, str `isPrefixOf` s]+    return [s | n <- ns, let s = show n, str `isPrefixOf` s]      -- Commands @@ -144,7 +152,7 @@     rnExpr <- renameExpression pExpr     typ <- typeOfExpression rnExpr     outputStrLn $ show $ -        text str <+> text "::" <+> prettyPrint typ+        text (trim str) <+> text "::" <+> prettyPrint typ     return ()  loadFileCommand :: String -> InputT IChecker ()@@ -177,10 +185,11 @@     tcStmt <- typeCheckInteractiveStmt rnStmt     dsStmt <- desugarInteractiveStmt tcStmt     case (unAnnotate dsStmt) of-        Bind d -> bindDeclaration d+        Bind ds -> mapM_ bindDeclaration ds         Evaluate e -> do             v <- evaluateExpression e-            outputStrLn $ show $ prettyPrint v+            d <- M.prettyPrint v+            outputStrLn $ show $ d   printProcCommand :: String -> InputT IChecker () printProcCommand str = do
src/InteractiveChecker/Monad.hs view
@@ -1,7 +1,7 @@ {-# LANGUAGE FlexibleInstances, TypeSynonymInstances #-} module Monad where -import Control.Monad.State+import Control.Monad.State.Strict import System.Console.Haskeline import System.Directory import System.FilePath@@ -20,12 +20,12 @@ initICheckerState = do     settingsDirectory <- getAppUserDataDirectory "cspmchecker"     createDirectoryIfMissing True $ joinPath [settingsDirectory, "interactive"]-    sess <- newCSPMSession+    sess <- newCSPMSession defaultEvaluatorOptions     return $ ICheckerState settingsDirectory sess Nothing  resetCSPM :: IChecker () resetCSPM = do-    sess <- liftIO $ newCSPMSession+    sess <- liftIO $ newCSPMSession defaultEvaluatorOptions     modify (\st -> st { cspmSession = sess })  type IChecker = StateT ICheckerState IO