@@ -37,6 +37,7 @@ import Control.Monad
37import Control.Monad.Trans (lift)
37import Control.Monad.Trans (lift)
38import Control.Monad.Trans.Except (runExceptT)
38import Control.Monad.Trans.Except (runExceptT)
39import Control.Monad.Trans.State.Strict (execStateT)
39import Control.Monad.Trans.State.Strict (execStateT)
40import Data.Maybe
41import Data.Maybe
41import Prelude hiding (id, (.), (<$>))
42import Prelude hiding (id, (.), (<$>))
42import System.Console.Haskeline as H
43import System.Console.Haskeline as H
@@ -138,9 +139,21 @@ idrisMain opts =
139 setNoBanner nobanner
140 setNoBanner nobanner
142+ -- Check if listed packages are actually installed
144+ idrisCatch (do ipkgs <- runIO $ getIdrisInstalledPackages
145+ let diff_pkgs = (\\) pkgdirs ipkgs
147+ when (not $ null diff_pkgs) $ do
148+ iputStrLn "The following packages were specified but cannot be found:"
149+ iputStr $ unlines $ map (\x -> unwords ["-", x]) diff_pkgs
150+ runIO $ exitWith (ExitFailure 1))
141 when (not (NoBasePkgs `elem` opts)) $ do
153 when (not (NoBasePkgs `elem` opts)) $ do
142 addPkgDir "prelude"
154 addPkgDir "prelude"
143 addPkgDir "base"
155 addPkgDir "base"
144 mapM_ addPkgDir pkgdirs
157 mapM_ addPkgDir pkgdirs
145 elabPrims
158 elabPrims
146 when (not (NoBuiltins `elem` opts)) $ do x <- loadModule "Builtins" (IBC_REPL True)
159 when (not (NoBuiltins `elem` opts)) $ do x <- loadModule "Builtins" (IBC_REPL True)