@@ -37,6 +37,7 @@ import Control.Monad
3737import Control.Monad.Trans (lift)
3838import Control.Monad.Trans.Except (runExceptT)
3939import Control.Monad.Trans.State.Strict (execStateT)
40+import Data.List
4041import Data.Maybe
4142import Prelude hiding (id, (.), (<$>))
4243import System.Console.Haskeline as H
@@ -138,9 +139,21 @@ idrisMain opts =
138139
139140 setNoBanner nobanner
140141
142+ -- Check if listed packages are actually installed
143+
144+ idrisCatch (do ipkgs <- runIO $ getIdrisInstalledPackages
145+ let diff_pkgs = (\\) pkgdirs ipkgs
146+
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))
151+ (\e -> return ())
152+
141153 when (not (NoBasePkgs `elem` opts)) $ do
142154 addPkgDir "prelude"
143155 addPkgDir "base"
156+
144157 mapM_ addPkgDir pkgdirs
145158 elabPrims
146159 when (not (NoBuiltins `elem` opts)) $ do x <- loadModule "Builtins" (IBC_REPL True)