@@ -5,20 +5,20 @@ Copyright :
55License : BSD3
66Maintainer : The Idris Community.
77-}
8+
89{-# LANGUAGE FlexibleInstances, TypeSynonymInstances #-}
910{-# OPTIONS_GHC -fwarn-incomplete-patterns #-}
11+{-# OPTIONS_GHC -fwarn-unused-imports #-}
1012
1113module Idris.IBC (loadIBC, loadPkgIndex,
1214 writeIBC, writePkgIndex,
1315 hasValidIBCVersion, IBCPhase(..)) where
1416
1517import Idris.AbsSyntax
16−import Idris.Core.Binary
1718import Idris.Core.CaseTree
1819import Idris.Core.Evaluate
1920import Idris.Core.TT
20−import Idris.DeepSeq
21−import Idris.Delaborate
21+import Idris.DeepSeq ()
2222import Idris.Docstrings (Docstring)
2323import qualified Idris.Docstrings as D
2424import Idris.Error
@@ -27,23 +27,15 @@ import Idris.Options
2727import Idris.Output
2828import IRTS.System (getIdrisLibDir)
2929
30−import Paths_idris
31−
3230import qualified Cheapskate.Types as CT
3331import Codec.Archive.Zip
3432import Control.DeepSeq
3533import Control.Monad
36−import Control.Monad.State.Strict hiding (get, put)
37−import qualified Control.Monad.State.Strict as ST
3834import Data.Binary
3935import Data.ByteString.Lazy as B hiding (elem, length, map)
40−import Data.Functor
4136import Data.List as L
4237import Data.Maybe (catMaybes)
4338import qualified Data.Set as S
44−import qualified Data.Text as T
45−import Data.Vector.Binary
46−import Debug.Trace
4739import System.Directory
4840import System.FilePath
4941
@@ -131,7 +123,9 @@ loadIBC :: Bool -- ^ True = reexport, False = make everything private
131123 -> IBCPhase
132124 -> FilePath -> Idris ()
133125loadIBC reexport phase fp
134− = do imps <- getImported
126+ = do logIBC 1 $ "loadIBC (reexport, phase, fp)" ++ show (reexport, phase, fp)
127+ imps <- getImported
128+ logIBC 3 $ "loadIBC imps" ++ show imps
135129 case lookup fp imps of
136130 Nothing -> load True
137131 Just p -> if (not p && reexport) then load False else return ()
@@ -517,13 +511,15 @@ processImports reexp phase fname ar = do
517511 ibcsd <- valIBCSubDir i
518512 ids <- rankedImportDirs fname
519513 putIState (i { imported = f : imported i })
520− let phase' = case phase of
521− IBC_REPL _ -> IBC_REPL False
522− p -> p
514+ let (phase', reexp') = case phase of
515+ IBC_REPL True -> (IBC_REPL False, reexp)
516+ IBC_REPL False -> (IBC_Building, reexp && re)
517+ p -> (p, reexp && re)
523518 fp <- findIBC ids ibcsd f
519+ logIBC 4 $ "processImports (fp, phase')" ++ show (fp, phase')
524520 case fp of
525521 Nothing -> do logIBC 2 $ "Failed to load ibc " ++ f
526− Just fn -> do loadIBC (reexp && re) phase' fn) fs
522+ Just fn -> do loadIBC reexp' phase' fn) fs
527523
528524processImplicits :: Archive -> Idris ()
529525processImplicits ar = do
@@ -639,6 +635,7 @@ processPatternDefs ar = do
639635processDefs :: Archive -> Idris ()
640636processDefs ar = do
641637 ds <- getEntry [] "ibc_defs" ar
638+ logIBC 4 $ "processDefs ds" ++ show ds
642639 mapM_ (\ (n, d) -> do
643640 d' <- updateDef d
644641 case d' of
@@ -735,8 +732,11 @@ processAccess :: Bool -- ^ Reexporting?
735732 -> IBCPhase
736733 -> Archive -> Idris ()
737734processAccess reexp phase ar = do
735+ logIBC 3 $ "processAccess (reexp, phase)" ++ show (reexp, phase)
738736 ds <- getEntry [] "ibc_access" ar
737+ logIBC 3 $ "processAccess ds" ++ show ds
739738 mapM_ (\ (n, a_in) -> do
739+
740740 let a = if reexp then a_in else Hidden
741741 logIBC 3 $ "Setting " ++ show (a, n) ++ " to " ++ show a
742742 updateIState (\i -> i { tt_ctxt = setAccess n a (tt_ctxt i) })
@@ -745,10 +745,15 @@ processAccess reexp phase ar = do
745745 then do
746746 logIBC 2 $ "Not exporting " ++ show n
747747 setAccessibility n Hidden
748− else logIBC 2 $ "Exporting " ++ show n
748+ else
749+ logIBC 2 $ "Exporting " ++ show n
750+
749751 -- Everything should be available at the REPL from
750− -- things imported publicly
751− when (phase == IBC_REPL True) $ setAccessibility n Public) ds
752+ -- things imported publicly.
753+ when (phase == IBC_REPL True) $ do
754+ logIBC 2 $ "Top level, exporting " ++ show n
755+ setAccessibility n Public
756+ ) ds
752757
753758processFlags :: Archive -> Idris ()
754759processFlags ar = do