@@ -31,12 +31,13 @@ import Codec.Compression.Zlib (compress)
31import Util.Zlib (decompressEither)
31import Util.Zlib (decompressEither)
33ibcVersion :: Word8
33ibcVersion :: Word8
34−ibcVersion = 75
34+ibcVersion = 76
36data IBCFile = IBCFile { ver :: Word8,
36data IBCFile = IBCFile { ver :: Word8,
37 sourcefile :: FilePath,
37 sourcefile :: FilePath,
38 symbols :: [Name],
38 symbols :: [Name],
39 ibc_imports :: [FilePath],
39 ibc_imports :: [FilePath],
40+ ibc_importdirs :: [FilePath],
40 ibc_implicits :: [(Name, [PArg])],
41 ibc_implicits :: [(Name, [PArg])],
41 ibc_fixes :: [FixDecl],
42 ibc_fixes :: [FixDecl],
42 ibc_statics :: [(Name, [Bool])],
43 ibc_statics :: [(Name, [Bool])],
@@ -78,7 +79,7 @@ deriving instance Binary IBCFile
80initIBC :: IBCFile
81initIBC :: IBCFile
81−initIBC = IBCFile ibcVersion "" [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] Nothing
82+initIBC = IBCFile ibcVersion "" [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] Nothing
83loadIBC :: FilePath -> Idris ()
84loadIBC :: FilePath -> Idris ()
84loadIBC fp = do imps <- getImported
85loadIBC fp = do imps <- getImported
@@ -149,6 +150,7 @@ ibc i (IBCOpt n) f = case lookupCtxt n (idris_optimisation i) of
149ibc i (IBCSyntax n) f = return f { ibc_syntax = n : ibc_syntax f }
150ibc i (IBCSyntax n) f = return f { ibc_syntax = n : ibc_syntax f }
150ibc i (IBCKeyword n) f = return f { ibc_keywords = n : ibc_keywords f }
151ibc i (IBCKeyword n) f = return f { ibc_keywords = n : ibc_keywords f }
151ibc i (IBCImport n) f = return f { ibc_imports = n : ibc_imports f }
152ibc i (IBCImport n) f = return f { ibc_imports = n : ibc_imports f }
153+ibc i (IBCImportDir n) f = return f { ibc_importdirs = n : ibc_importdirs f }
152ibc i (IBCObj tgt n) f = return f { ibc_objs = (tgt, n) : ibc_objs f }
154ibc i (IBCObj tgt n) f = return f { ibc_objs = (tgt, n) : ibc_objs f }
153ibc i (IBCLib tgt n) f = return f { ibc_libs = (tgt, n) : ibc_libs f }
155ibc i (IBCLib tgt n) f = return f { ibc_libs = (tgt, n) : ibc_libs f }
154ibc i (IBCCGFlag tgt n) f = return f { ibc_cgflags = (tgt, n) : ibc_cgflags f }
156ibc i (IBCCGFlag tgt n) f = return f { ibc_cgflags = (tgt, n) : ibc_cgflags f }
@@ -255,6 +257,7 @@ process i fn
255 v <- verbose
257 v <- verbose
256 quiet <- getQuiet
258 quiet <- getQuiet
257-- when (v && srcok && not quiet) $ iputStrLn $ "Skipping " ++ sourcefile i
259-- when (v && srcok && not quiet) $ iputStrLn $ "Skipping " ++ sourcefile i
260+ pImportDirs (ibc_importdirs i)
258 pImports (ibc_imports i)
261 pImports (ibc_imports i)
259 pImps (ibc_implicits i)
262 pImps (ibc_implicits i)
260 pFixes (ibc_fixes i)
263 pFixes (ibc_fixes i)
@@ -307,6 +310,9 @@ pParsedSpan :: Maybe FC -> Idris ()
307pParsedSpan fc = do ist <- getIState
310pParsedSpan fc = do ist <- getIState
308 putIState ist { idris_parsedSpan = fc }
311 putIState ist { idris_parsedSpan = fc }
313+pImportDirs :: [FilePath] -> Idris ()
314+pImportDirs fs = mapM_ addImportDir fs
310pImports :: [FilePath] -> Idris ()
316pImports :: [FilePath] -> Idris ()
311pImports fs
317pImports fs
312 = do mapM_ (\f -> do i <- getIState
318 = do mapM_ (\f -> do i <- getIState
@@ -831,7 +837,7 @@ instance Binary MetaInformation where
831 return (DataMI x1)
837 return (DataMI x1)
833instance Binary IBCFile where
839instance Binary IBCFile where
834− put x@(IBCFile x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15 x16 x17 x18 x19 x20 x21 x22 x23 x24 x25 x26 x27 x28 x29 x30 x31 x32 x33 x34 x35 x36 x37 x38)
840+ put x@(IBCFile x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15 x16 x17 x18 x19 x20 x21 x22 x23 x24 x25 x26 x27 x28 x29 x30 x31 x32 x33 x34 x35 x36 x37 x38 x39)
835 = {-# SCC "putIBCFile" #-}
841 = {-# SCC "putIBCFile" #-}
836 do put x1
842 do put x1
@@ -871,6 +877,7 @@ instance Binary IBCFile where
876 = do x1 <- get
883 = do x1 <- get
@@ -912,7 +919,8 @@ instance Binary IBCFile where
912 x36 <- get
919 x36 <- get
913 x37 <- get
920 x37 <- get
914 x38 <- get
921 x38 <- get
915− return (IBCFile x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15 x16 x17 x18 x19 x20 x21 x22 x23 x24 x25 x26 x27 x28 x29 x30 x31 x32 x33 x34 x35 x36 x37 x38)
923+ return (IBCFile x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15 x16 x17 x18 x19 x20 x21 x22 x23 x24 x25 x26 x27 x28 x29 x30 x31 x32 x33 x34 x35 x36 x37 x38 x39)
916 else return (initIBC { ver = x1 })
924 else return (initIBC { ver = x1 })
918instance Binary DataOpt where
926instance Binary DataOpt where