2 ( Header(..), Module(..), Tag(..)
4 , Source, SourceInfo(..)
6 , Canonical, Optimized, Info(..)
8 , UserImport, DefaultImport, ImportMethod(..)
13 , Unions, UnionInfo, CanonicalUnion
15 , Interfaces, Interface(..), toInterface
20import qualified Data.Map as Map
22import qualified AST.Declaration as Decl
23import qualified AST.Expression.Canonical as Canonical
24import qualified AST.Expression.Optimized as Optimized
25import qualified AST.Expression.Valid as Valid
26import qualified AST.Module.Name as Name
27import qualified AST.Type as Type
28import qualified AST.Variable as Var
29import qualified Docs.AST as Docs
30import qualified Elm.Package as Package
31import qualified Elm.Compiler.Version as Compiler
32import qualified Reporting.Annotation as A
33import qualified Reporting.Region as R
40{-| Basic info needed to identify modules and determine dependencies. -}
45 , _docs :: A.Located (Maybe String)
46 , _exports :: Var.Listing (A.Located Var.Value)
58 , name :: Name.Canonical
76 { srcDocs :: A.Located (Maybe String)
77 , srcExports :: Var.Listing (A.Located Var.Value)
78 , srcImports :: [UserImport]
79 , srcDecls :: [Decl.Source]
89 { validDocs :: A.Located (Maybe String)
90 , validExports :: Var.Listing (A.Located Var.Value)
91 , validImports :: ([DefaultImport], [UserImport])
92 , validDecls :: [Decl.Valid]
93 , validEffects :: Valid.Effects
98 Module (Info Canonical.Expr)
102 Module (Info [Optimized.Def])
109type UserImport = A.Located (Name.Raw, ImportMethod)
112type DefaultImport = (Name.Raw, ImportMethod)
117 { alias :: Maybe String
118 , exposedVars :: !(Var.Listing Var.Value)
123-- LATE PHASE MODULE INFORMATION
128 { docs :: A.Located (Maybe Docs.Centralized)
129 , exports :: [Var.Value]
130 , imports :: [Name.Raw]
133 , fixities :: [(Decl.Assoc, Int, String)]
141 Map.Map String Type.Canonical
145 Map.Map String ([String], Type.Canonical)
149 Map.Map String (UnionInfo String)
153 ( [String], [(v, [Type.Canonical])] )
157 ( Var.Canonical, UnionInfo Var.Canonical )
172 Map.Map Name.Canonical Interface
175{-| Key facts about a module, used when reading info from .elmi files. -}
178 { iVersion :: Package.Version
179 , iPackage :: Package.Name
180 , iExports :: [Var.Value]
181 , iImports :: [Name.Raw]
184 , iAliases :: Aliases
185 , iFixities :: [(Decl.Assoc, Int, String)]
189toInterface :: Package.Name -> Optimized -> Interface
190toInterface pkgName modul =
196 { iVersion = Compiler.version
198 , iExports = exports myInfo
199 , iImports = imports myInfo
200 , iTypes = types myInfo
201 , iUnions = unions myInfo
202 , iAliases = aliases myInfo
203 , iFixities = fixities myInfo
207instance Binary Interface where
209 Interface <$> get <*> get <*> get <*> get <*> get <*> get <*> get <*> get
212 do put (iVersion modul)
219 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