@@ -146,7 +146,7 @@ loadIBC reexport phase fp
146146 Right archive -> do
147147 if fullLoad
148148 then process reexport phase archive fp
149− else unhide phase archive
149+ else unhide phase fp archive
150150 addImported reexport fp
151151
152152-- | Load an entire package from its index file
@@ -359,9 +359,9 @@ getEntry alt f a = case findEntryByPath f a of
359359 Nothing -> return alt
360360 Just e -> return $! (force . decode . fromEntry) e
361361
362−unhide :: IBCPhase -> Archive -> Idris ()
363−unhide phase ar = do
364− processImports True phase ar
362+unhide :: IBCPhase -> FilePath -> Archive -> Idris ()
363+unhide phase fp ar = do
364+ processImports True phase fp ar
365365 processAccess True phase ar
366366
367367process :: Bool -- ^ Reexporting
@@ -393,7 +393,7 @@ process reexp phase archive fn = do
393393 when srcok $ timestampOlder source fn
394394 processImportDirs archive
395395 processSourceDirs archive
396− processImports reexp phase archive
396+ processImports reexp phase fn archive
397397 processImplicits archive
398398 processInfix archive
399399 processStatics archive
@@ -405,7 +405,7 @@ process reexp phase archive fn = do
405405 processOptimise archive
406406 processSyntax archive
407407 processKeywords archive
408− processObjectFiles archive
408+ processObjectFiles fn archive
409409 processLibs archive
410410 processCodegenFlags archive
411411 processDynamicLibs archive
@@ -509,28 +509,21 @@ processSourceDirs ar = do
509509 fs <- getEntry [] "ibc_sourcedirs" ar
510510 mapM_ addSourceDir fs
511511
512−processImports :: Bool -> IBCPhase -> Archive -> Idris ()
513−processImports reexp phase ar = do
512+processImports :: Bool -> IBCPhase -> FilePath -> Archive -> Idris ()
513+processImports reexp phase fname ar = do
514514 fs <- getEntry [] "ibc_imports" ar
515515 mapM_ (\(re, f) -> do
516516 i <- getIState
517517 ibcsd <- valIBCSubDir i
518− ids <- allImportDirs
519− fp <- findImport ids ibcsd f
520−-- if (f `elem` imported i)
521−-- then logLvl 1 $ "Already read " ++ f
518+ ids <- rankedImportDirs fname
522519 putIState (i { imported = f : imported i })
523520 let phase' = case phase of
524521 IBC_REPL _ -> IBC_REPL False
525522 p -> p
523+ fp <- findIBC ids ibcsd f
526524 case fp of
527− LIDR fn -> do
528− logIBC 2 $ "Failed at " ++ fn
529− ifail "Must be an ibc"
530− IDR fn -> do
531− logIBC 2 $ "Failed at " ++ fn
532− ifail "Must be an ibc"
533− IBC fn src -> loadIBC (reexp && re) phase' fn) fs
525+ Nothing -> do logIBC 2 $ "Failed to load ibc " ++ f
526+ Just fn -> do loadIBC (reexp && re) phase' fn) fs
534527
535528processImplicits :: Archive -> Idris ()
536529processImplicits ar = do
@@ -605,11 +598,11 @@ processKeywords ar = do
605598 k <- getEntry [] "ibc_keywords" ar
606599 updateIState (\i -> i { syntax_keywords = k ++ syntax_keywords i })
607600
608−processObjectFiles :: Archive -> Idris ()
609−processObjectFiles ar = do
601+processObjectFiles :: FilePath -> Archive -> Idris ()
602+processObjectFiles fn ar = do
610603 os <- getEntry [] "ibc_objs" ar
611604 mapM_ (\ (cg, obj) -> do
612− dirs <- allImportDirs
605+ dirs <- rankedImportDirs fn
613606 o <- runIO $ findInPath dirs obj
614607 addObjectFile cg o) os
615608