@@ -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,16 @@ 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') =
515+ case phase of
516+ IBC_REPL True -> (IBC_REPL False, reexp)
517+ IBC_REPL False -> (IBC_Building, reexp && re)
518+ p -> (p, reexp && re)
523519 fp <- findIBC ids ibcsd f
520+ logIBC 4 $ "processImports (fp, phase')" ++ show (fp, phase')
524521 case fp of
525522 Nothing -> do logIBC 2 $ "Failed to load ibc " ++ f
526− Just fn -> do loadIBC (reexp && re) phase' fn) fs
523+ Just fn -> do loadIBC reexp' phase' fn) fs
527524
528525processImplicits :: Archive -> Idris ()
529526processImplicits ar = do
@@ -639,6 +636,7 @@ processPatternDefs ar = do
639636processDefs :: Archive -> Idris ()
640637processDefs ar = do
641638 ds <- getEntry [] "ibc_defs" ar
639+ logIBC 4 $ "processDefs ds" ++ show ds
642640 mapM_ (\ (n, d) -> do
643641 d' <- updateDef d
644642 case d' of
@@ -735,8 +733,11 @@ processAccess :: Bool -- ^ Reexporting?
735733 -> IBCPhase
736734 -> Archive -> Idris ()
737735processAccess reexp phase ar = do
736+ logIBC 3 $ "processAccess (reexp, phase)" ++ show (reexp, phase)
738737 ds <- getEntry [] "ibc_access" ar
738+ logIBC 3 $ "processAccess ds" ++ show ds
739739 mapM_ (\ (n, a_in) -> do
740+
740741 let a = if reexp then a_in else Hidden
741742 logIBC 3 $ "Setting " ++ show (a, n) ++ " to " ++ show a
742743 updateIState (\i -> i { tt_ctxt = setAccess n a (tt_ctxt i) })
@@ -745,10 +746,15 @@ processAccess reexp phase ar = do
745746 then do
746747 logIBC 2 $ "Not exporting " ++ show n
747748 setAccessibility n Hidden
748− else logIBC 2 $ "Exporting " ++ show n
749+ else
750+ logIBC 2 $ "Exporting " ++ show n
751+
749752 -- Everything should be available at the REPL from
750− -- things imported publicly
751− when (phase == IBC_REPL True) $ setAccessibility n Public) ds
753+ -- things imported publicly.
754+ when (phase == IBC_REPL True) $ do
755+ logIBC 2 $ "Top level, exporting " ++ show n
756+ setAccessibility n Public
757+ ) ds
752758
753759processFlags :: Archive -> Idris ()
754760processFlags ar = do