2 ( Header(..), Module(..)
4 , Source, SourceInfo(..), SourceTag(..), SourceSettings, emptySettings
5 , Valid, ValidInfo(..), ValidEffects(..)
6 , Canonical, Optimized, Info(..)
8 , UserImport, DefaultImport, ImportMethod(..)
12 , Unions, UnionInfo, CanonicalUnion
14 , Interfaces, Interface(..), toInterface
19import qualified Data.Map as Map
21import qualified AST.Declaration as Decl
22import qualified AST.Expression.Canonical as Canonical
23import qualified AST.Expression.Optimized as Optimized
24import qualified AST.Module.Name as Name
25import qualified AST.Type as Type
26import qualified AST.Variable as Var
27import qualified Docs.AST as Docs
28import qualified Elm.Package as Package
29import qualified Elm.Compiler.Version as Compiler
30import qualified Reporting.Annotation as A
31import qualified Reporting.Region as R
38{-| Basic info needed to identify modules and determine dependencies. -}
43 , _exports :: Var.Listing (A.Located Var.Value)
44 , _settings :: SourceSettings
45 , _docs :: A.Located (Maybe String)
56 { name :: Name.Canonical
69 , srcSettings :: SourceSettings
70 , srcDocs :: A.Located (Maybe String)
71 , srcExports :: Var.Listing (A.Located Var.Value)
72 , srcImports :: [UserImport]
73 , srcDecls :: [Decl.Source]
84 A.Located [(A.Located String, A.Located String)]
87emptySettings :: SourceSettings
89 A.A (error "region of empty settings should not be needed") []
98 { validDocs :: A.Located (Maybe String)
99 , validExports :: Var.Listing (A.Located Var.Value)
100 , validImports :: ([DefaultImport], [UserImport])
101 , validDecls :: [Decl.Valid]
102 , validEffects :: ValidEffects
108 | ValidEffect (Maybe (A.Located String)) (Maybe (A.Located String))
113 Module (Info Canonical.Expr)
117 Module (Info [Optimized.Def])
124type UserImport = A.Located (Name.Raw, ImportMethod)
127type DefaultImport = (Name.Raw, ImportMethod)
132 { alias :: Maybe String
133 , exposedVars :: !(Var.Listing Var.Value)
138-- LATE PHASE MODULE INFORMATION
143 { docs :: A.Located (Maybe Docs.Centralized)
144 , exports :: [Var.Value]
145 , imports :: [Name.Raw]
148 , fixities :: [(Decl.Assoc, Int, String)]
155 Map.Map String Type.Canonical
159 Map.Map String ([String], Type.Canonical)
163 Map.Map String (UnionInfo String)
167 ( [String], [(v, [Type.Canonical])] )
171 ( Var.Canonical, UnionInfo Var.Canonical )
179 Map.Map Name.Canonical Interface
182{-| Key facts about a module, used when reading info from .elmi files. -}
185 { iVersion :: Package.Version
186 , iPackage :: Package.Name
187 , iExports :: [Var.Value]
188 , iImports :: [Name.Raw]
191 , iAliases :: Aliases
192 , iFixities :: [(Decl.Assoc, Int, String)]
196toInterface :: Package.Name -> Optimized -> Interface
197toInterface pkgName modul =
203 { iVersion = Compiler.version
205 , iExports = exports myInfo
206 , iImports = imports myInfo
207 , iTypes = types myInfo
208 , iUnions = unions myInfo
209 , iAliases = aliases myInfo
210 , iFixities = fixities myInfo
214instance Binary Interface where
216 Interface <$> get <*> get <*> get <*> get <*> get <*> get <*> get <*> get
219 do put (iVersion modul)
226 put (iFixities modul)
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list