{-# OPTIONS_GHC -Wunused-imports #-}

{-# OPTIONS_GHC -fno-warn-orphans #-}

-- Only instances exported
module Agda.TypeChecking.Serialise.Instances () where

import Agda.Syntax.Position
import Agda.Syntax.TopLevelModuleName
import Agda.TypeChecking.Monad.Base
import Agda.TypeChecking.Serialise.Base
import Agda.TypeChecking.Serialise.Instances.Common (SerialisedRange(..))
import Agda.TypeChecking.Serialise.Instances.Errors ()
import Agda.TypeChecking.Serialise.Instances.General ()
import Agda.TypeChecking.Serialise.Instances.Highlighting ()
import Agda.Utils.Hash

type RangedImportedModules =
  [(SerialisedRange, TopLevelModuleName, Hash)]

fromImportedModules ::
  [(TopLevelModuleName, Hash)] -> RangedImportedModules
fromImportedModules :: [(TopLevelModuleName, Hash)] -> RangedImportedModules
fromImportedModules [(TopLevelModuleName, Hash)]
ms = [(Range -> SerialisedRange
SerialisedRange (Range -> SerialisedRange) -> Range -> SerialisedRange
forall a b. (a -> b) -> a -> b
$ TopLevelModuleName -> Range
forall a. HasRange a => a -> Range
getRange TopLevelModuleName
x, TopLevelModuleName
x, Hash
hash) | (TopLevelModuleName
x, Hash
hash) <- [(TopLevelModuleName, Hash)]
ms]

toImportedModules ::
  RangedImportedModules -> [(TopLevelModuleName, Hash)]
toImportedModules :: RangedImportedModules -> [(TopLevelModuleName, Hash)]
toImportedModules RangedImportedModules
ms = [(Range -> TopLevelModuleName -> TopLevelModuleName
forall a. SetRange a => Range -> a -> a
setRange (SerialisedRange -> Range
underlyingRange SerialisedRange
r) TopLevelModuleName
x, Hash
hash) | (SerialisedRange
r, TopLevelModuleName
x, Hash
hash) <- RangedImportedModules
ms]

instance EmbPrj Interface where
  icod_ :: Interface -> S Word32
icod_ (Interface Hash
a Text
b FileType
c [(TopLevelModuleName, Hash)]
d ModuleName
e TopLevelModuleName
f Map ModuleName Scope
g ScopeInfo
h Signature
i RemoteMetaStore
j DisplayForms
k UserWarnings
l Maybe Text
m BuiltinThings' (PrimitiveId, QName)
n Map Text ForeignCodeStack
o HighlightingInfo
p [OptionsPragma]
q [OptionsPragma]
r PragmaOptions
s PatternSynDefns
t Set TCWarning
u Set QName
v Map OpaqueId OpaqueBlock
w Map QName OpaqueId
x) =
      (Hash
 -> Text
 -> FileType
 -> RangedImportedModules
 -> ModuleName
 -> TopLevelModuleName
 -> Map ModuleName Scope
 -> ScopeInfo
 -> Signature
 -> RemoteMetaStore
 -> DisplayForms
 -> UserWarnings
 -> Maybe Text
 -> BuiltinThings' (PrimitiveId, QName)
 -> Map Text ForeignCodeStack
 -> HighlightingInfo
 -> [OptionsPragma]
 -> [OptionsPragma]
 -> PragmaOptions
 -> PatternSynDefns
 -> Set TCWarning
 -> Set QName
 -> Map OpaqueId OpaqueBlock
 -> Map QName OpaqueId
 -> Interface)
-> Arrows
     (Domains
        (Hash
         -> Text
         -> FileType
         -> RangedImportedModules
         -> ModuleName
         -> TopLevelModuleName
         -> Map ModuleName Scope
         -> ScopeInfo
         -> Signature
         -> RemoteMetaStore
         -> DisplayForms
         -> UserWarnings
         -> Maybe Text
         -> BuiltinThings' (PrimitiveId, QName)
         -> Map Text ForeignCodeStack
         -> HighlightingInfo
         -> [OptionsPragma]
         -> [OptionsPragma]
         -> PragmaOptions
         -> PatternSynDefns
         -> Set TCWarning
         -> Set QName
         -> Map OpaqueId OpaqueBlock
         -> Map QName OpaqueId
         -> Interface))
     (S Word32)
forall t.
(ICODE t (IsBase t), StrictCurrying (Domains t) (S Word32),
 All EmbPrj (Domains t)) =>
t -> Arrows (Domains t) (S Word32)
icodeN' Hash
-> Text
-> FileType
-> RangedImportedModules
-> ModuleName
-> TopLevelModuleName
-> Map ModuleName Scope
-> ScopeInfo
-> Signature
-> RemoteMetaStore
-> DisplayForms
-> UserWarnings
-> Maybe Text
-> BuiltinThings' (PrimitiveId, QName)
-> Map Text ForeignCodeStack
-> HighlightingInfo
-> [OptionsPragma]
-> [OptionsPragma]
-> PragmaOptions
-> PatternSynDefns
-> Set TCWarning
-> Set QName
-> Map OpaqueId OpaqueBlock
-> Map QName OpaqueId
-> Interface
interface Hash
a Text
b FileType
c ([(TopLevelModuleName, Hash)] -> RangedImportedModules
fromImportedModules [(TopLevelModuleName, Hash)]
d) ModuleName
e TopLevelModuleName
f Map ModuleName Scope
g ScopeInfo
h Signature
i RemoteMetaStore
j DisplayForms
k UserWarnings
l Maybe Text
m BuiltinThings' (PrimitiveId, QName)
n Map Text ForeignCodeStack
o HighlightingInfo
p [OptionsPragma]
q [OptionsPragma]
r PragmaOptions
s PatternSynDefns
t Set TCWarning
u Set QName
v Map OpaqueId OpaqueBlock
w Map QName OpaqueId
x
    where interface :: Hash
-> Text
-> FileType
-> RangedImportedModules
-> ModuleName
-> TopLevelModuleName
-> Map ModuleName Scope
-> ScopeInfo
-> Signature
-> RemoteMetaStore
-> DisplayForms
-> UserWarnings
-> Maybe Text
-> BuiltinThings' (PrimitiveId, QName)
-> Map Text ForeignCodeStack
-> HighlightingInfo
-> [OptionsPragma]
-> [OptionsPragma]
-> PragmaOptions
-> PatternSynDefns
-> Set TCWarning
-> Set QName
-> Map OpaqueId OpaqueBlock
-> Map QName OpaqueId
-> Interface
interface Hash
a Text
b FileType
c = Hash
-> Text
-> FileType
-> [(TopLevelModuleName, Hash)]
-> ModuleName
-> TopLevelModuleName
-> Map ModuleName Scope
-> ScopeInfo
-> Signature
-> RemoteMetaStore
-> DisplayForms
-> UserWarnings
-> Maybe Text
-> BuiltinThings' (PrimitiveId, QName)
-> Map Text ForeignCodeStack
-> HighlightingInfo
-> [OptionsPragma]
-> [OptionsPragma]
-> PragmaOptions
-> PatternSynDefns
-> Set TCWarning
-> Set QName
-> Map OpaqueId OpaqueBlock
-> Map QName OpaqueId
-> Interface
Interface Hash
a Text
b FileType
c ([(TopLevelModuleName, Hash)]
 -> ModuleName
 -> TopLevelModuleName
 -> Map ModuleName Scope
 -> ScopeInfo
 -> Signature
 -> RemoteMetaStore
 -> DisplayForms
 -> UserWarnings
 -> Maybe Text
 -> BuiltinThings' (PrimitiveId, QName)
 -> Map Text ForeignCodeStack
 -> HighlightingInfo
 -> [OptionsPragma]
 -> [OptionsPragma]
 -> PragmaOptions
 -> PatternSynDefns
 -> Set TCWarning
 -> Set QName
 -> Map OpaqueId OpaqueBlock
 -> Map QName OpaqueId
 -> Interface)
-> (RangedImportedModules -> [(TopLevelModuleName, Hash)])
-> RangedImportedModules
-> ModuleName
-> TopLevelModuleName
-> Map ModuleName Scope
-> ScopeInfo
-> Signature
-> RemoteMetaStore
-> DisplayForms
-> UserWarnings
-> Maybe Text
-> BuiltinThings' (PrimitiveId, QName)
-> Map Text ForeignCodeStack
-> HighlightingInfo
-> [OptionsPragma]
-> [OptionsPragma]
-> PragmaOptions
-> PatternSynDefns
-> Set TCWarning
-> Set QName
-> Map OpaqueId OpaqueBlock
-> Map QName OpaqueId
-> Interface
forall b c a. (b -> c) -> (a -> b) -> a -> c
. RangedImportedModules -> [(TopLevelModuleName, Hash)]
toImportedModules

  value :: Word32 -> R Interface
value = (Hash
 -> Text
 -> FileType
 -> RangedImportedModules
 -> ModuleName
 -> TopLevelModuleName
 -> Map ModuleName Scope
 -> ScopeInfo
 -> Signature
 -> RemoteMetaStore
 -> DisplayForms
 -> UserWarnings
 -> Maybe Text
 -> BuiltinThings' (PrimitiveId, QName)
 -> Map Text ForeignCodeStack
 -> HighlightingInfo
 -> [OptionsPragma]
 -> [OptionsPragma]
 -> PragmaOptions
 -> PatternSynDefns
 -> Set TCWarning
 -> Set QName
 -> Map OpaqueId OpaqueBlock
 -> Map QName OpaqueId
 -> Interface)
-> Word32
-> R (CoDomain
        (Hash
         -> Text
         -> FileType
         -> RangedImportedModules
         -> ModuleName
         -> TopLevelModuleName
         -> Map ModuleName Scope
         -> ScopeInfo
         -> Signature
         -> RemoteMetaStore
         -> DisplayForms
         -> UserWarnings
         -> Maybe Text
         -> BuiltinThings' (PrimitiveId, QName)
         -> Map Text ForeignCodeStack
         -> HighlightingInfo
         -> [OptionsPragma]
         -> [OptionsPragma]
         -> PragmaOptions
         -> PatternSynDefns
         -> Set TCWarning
         -> Set QName
         -> Map OpaqueId OpaqueBlock
         -> Map QName OpaqueId
         -> Interface))
forall t.
(VALU t (IsBase t), All EmbPrj (CoDomain t : Domains t)) =>
t -> Word32 -> R (CoDomain t)
valueN Hash
-> Text
-> FileType
-> RangedImportedModules
-> ModuleName
-> TopLevelModuleName
-> Map ModuleName Scope
-> ScopeInfo
-> Signature
-> RemoteMetaStore
-> DisplayForms
-> UserWarnings
-> Maybe Text
-> BuiltinThings' (PrimitiveId, QName)
-> Map Text ForeignCodeStack
-> HighlightingInfo
-> [OptionsPragma]
-> [OptionsPragma]
-> PragmaOptions
-> PatternSynDefns
-> Set TCWarning
-> Set QName
-> Map OpaqueId OpaqueBlock
-> Map QName OpaqueId
-> Interface
interface
    where interface :: Hash
-> Text
-> FileType
-> RangedImportedModules
-> ModuleName
-> TopLevelModuleName
-> Map ModuleName Scope
-> ScopeInfo
-> Signature
-> RemoteMetaStore
-> DisplayForms
-> UserWarnings
-> Maybe Text
-> BuiltinThings' (PrimitiveId, QName)
-> Map Text ForeignCodeStack
-> HighlightingInfo
-> [OptionsPragma]
-> [OptionsPragma]
-> PragmaOptions
-> PatternSynDefns
-> Set TCWarning
-> Set QName
-> Map OpaqueId OpaqueBlock
-> Map QName OpaqueId
-> Interface
interface Hash
a Text
b FileType
c = Hash
-> Text
-> FileType
-> [(TopLevelModuleName, Hash)]
-> ModuleName
-> TopLevelModuleName
-> Map ModuleName Scope
-> ScopeInfo
-> Signature
-> RemoteMetaStore
-> DisplayForms
-> UserWarnings
-> Maybe Text
-> BuiltinThings' (PrimitiveId, QName)
-> Map Text ForeignCodeStack
-> HighlightingInfo
-> [OptionsPragma]
-> [OptionsPragma]
-> PragmaOptions
-> PatternSynDefns
-> Set TCWarning
-> Set QName
-> Map OpaqueId OpaqueBlock
-> Map QName OpaqueId
-> Interface
Interface Hash
a Text
b FileType
c ([(TopLevelModuleName, Hash)]
 -> ModuleName
 -> TopLevelModuleName
 -> Map ModuleName Scope
 -> ScopeInfo
 -> Signature
 -> RemoteMetaStore
 -> DisplayForms
 -> UserWarnings
 -> Maybe Text
 -> BuiltinThings' (PrimitiveId, QName)
 -> Map Text ForeignCodeStack
 -> HighlightingInfo
 -> [OptionsPragma]
 -> [OptionsPragma]
 -> PragmaOptions
 -> PatternSynDefns
 -> Set TCWarning
 -> Set QName
 -> Map OpaqueId OpaqueBlock
 -> Map QName OpaqueId
 -> Interface)
-> (RangedImportedModules -> [(TopLevelModuleName, Hash)])
-> RangedImportedModules
-> ModuleName
-> TopLevelModuleName
-> Map ModuleName Scope
-> ScopeInfo
-> Signature
-> RemoteMetaStore
-> DisplayForms
-> UserWarnings
-> Maybe Text
-> BuiltinThings' (PrimitiveId, QName)
-> Map Text ForeignCodeStack
-> HighlightingInfo
-> [OptionsPragma]
-> [OptionsPragma]
-> PragmaOptions
-> PatternSynDefns
-> Set TCWarning
-> Set QName
-> Map OpaqueId OpaqueBlock
-> Map QName OpaqueId
-> Interface
forall b c a. (b -> c) -> (a -> b) -> a -> c
. RangedImportedModules -> [(TopLevelModuleName, Hash)]
toImportedModules