@@ -146,7 +146,7 @@ loadIBC reexport phase fp
146 Right archive -> do
146 Right archive -> do
147 if fullLoad
147 if fullLoad
148 then process reexport phase archive fp
148 then process reexport phase archive fp
149− else unhide phase archive
149+ else unhide phase fp archive
150 addImported reexport fp
150 addImported reexport fp
152-- | Load an entire package from its index file
152-- | Load an entire package from its index file
@@ -359,9 +359,9 @@ getEntry alt f a = case findEntryByPath f a of
359 Nothing -> return alt
359 Nothing -> return alt
360 Just e -> return $! (force . decode . fromEntry) e
360 Just e -> return $! (force . decode . fromEntry) e
362−unhide :: IBCPhase -> Archive -> Idris ()
362+unhide :: IBCPhase -> FilePath -> Archive -> Idris ()
363−unhide phase ar = do
363+unhide phase fp ar = do
364− processImports True phase ar
364+ processImports True phase fp ar
365 processAccess True phase ar
365 processAccess True phase ar
367process :: Bool -- ^ Reexporting
367process :: Bool -- ^ Reexporting
@@ -393,7 +393,7 @@ process reexp phase archive fn = do
393 when srcok $ timestampOlder source fn
393 when srcok $ timestampOlder source fn
394 processImportDirs archive
394 processImportDirs archive
395 processSourceDirs archive
395 processSourceDirs archive
396− processImports reexp phase archive
396+ processImports reexp phase fn archive
397 processImplicits archive
397 processImplicits archive
398 processInfix archive
398 processInfix archive
399 processStatics archive
399 processStatics archive
@@ -405,7 +405,7 @@ process reexp phase archive fn = do
405 processOptimise archive
405 processOptimise archive
406 processSyntax archive
406 processSyntax archive
407 processKeywords archive
407 processKeywords archive
408− processObjectFiles archive
408+ processObjectFiles fn archive
409 processLibs archive
409 processLibs archive
410 processCodegenFlags archive
410 processCodegenFlags archive
411 processDynamicLibs archive
411 processDynamicLibs archive
@@ -509,28 +509,21 @@ processSourceDirs ar = do
509 fs <- getEntry [] "ibc_sourcedirs" ar
509 fs <- getEntry [] "ibc_sourcedirs" ar
510 mapM_ addSourceDir fs
510 mapM_ addSourceDir fs
512−processImports :: Bool -> IBCPhase -> Archive -> Idris ()
512+processImports :: Bool -> IBCPhase -> FilePath -> Archive -> Idris ()
513−processImports reexp phase ar = do
513+processImports reexp phase fname ar = do
514 fs <- getEntry [] "ibc_imports" ar
514 fs <- getEntry [] "ibc_imports" ar
515 mapM_ (\(re, f) -> do
515 mapM_ (\(re, f) -> do
516 i <- getIState
516 i <- getIState
517 ibcsd <- valIBCSubDir i
517 ibcsd <- valIBCSubDir i
518− ids <- allImportDirs
518+ ids <- rankedImportDirs fname
519− fp <- findImport ids ibcsd f
520−-- if (f `elem` imported i)
521−-- then logLvl 1 $ "Already read " ++ f
522 putIState (i { imported = f : imported i })
519 putIState (i { imported = f : imported i })
523 let phase' = case phase of
520 let phase' = case phase of
524 IBC_REPL _ -> IBC_REPL False
521 IBC_REPL _ -> IBC_REPL False
523+ fp <- findIBC ids ibcsd f
526 case fp of
524 case fp of
528− logIBC 2 $ "Failed at " ++ fn
525+ Nothing -> do logIBC 2 $ "Failed to load ibc " ++ f
529− ifail "Must be an ibc"
531− logIBC 2 $ "Failed at " ++ fn
532− ifail "Must be an ibc"
533− IBC fn src -> loadIBC (reexp && re) phase' fn) fs
526+ Just fn -> do loadIBC (reexp && re) phase' fn) fs
535processImplicits :: Archive -> Idris ()
528processImplicits :: Archive -> Idris ()
536processImplicits ar = do
529processImplicits ar = do
@@ -605,11 +598,11 @@ processKeywords ar = do
605 k <- getEntry [] "ibc_keywords" ar
598 k <- getEntry [] "ibc_keywords" ar
606 updateIState (\i -> i { syntax_keywords = k ++ syntax_keywords i })
599 updateIState (\i -> i { syntax_keywords = k ++ syntax_keywords i })
608−processObjectFiles :: Archive -> Idris ()
601+processObjectFiles :: FilePath -> Archive -> Idris ()
609−processObjectFiles ar = do
602+processObjectFiles fn ar = do
610 os <- getEntry [] "ibc_objs" ar
603 os <- getEntry [] "ibc_objs" ar
611 mapM_ (\ (cg, obj) -> do
604 mapM_ (\ (cg, obj) -> do
612− dirs <- allImportDirs
605+ dirs <- rankedImportDirs fn
613 o <- runIO $ findInPath dirs obj
606 o <- runIO $ findInPath dirs obj
614 addObjectFile cg o) os
607 addObjectFile cg o) os