2 ( Header(..), Module(..), Tag(..)
4 , Source, SourceInfo(..)
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 , _docs :: A.Located (Maybe String)
44 , _exports :: Var.Listing (A.Located Var.Value)
56 , name :: Name.Canonical
64 | Effect (Maybe (A.Located String)) (Maybe (A.Located String))
74 { srcDocs :: A.Located (Maybe String)
75 , srcExports :: Var.Listing (A.Located Var.Value)
76 , srcImports :: [UserImport]
77 , srcDecls :: [Decl.Source]
87 { validDocs :: A.Located (Maybe String)
88 , validExports :: Var.Listing (A.Located Var.Value)
89 , validImports :: ([DefaultImport], [UserImport])
90 , validDecls :: [Decl.Valid]
95 Module (Info Canonical.Expr)
99 Module (Info [Optimized.Def])
106type UserImport = A.Located (Name.Raw, ImportMethod)
109type DefaultImport = (Name.Raw, ImportMethod)
114 { alias :: Maybe String
115 , exposedVars :: !(Var.Listing Var.Value)
120-- LATE PHASE MODULE INFORMATION
125 { docs :: A.Located (Maybe Docs.Centralized)
126 , exports :: [Var.Value]
127 , imports :: [Name.Raw]
130 , fixities :: [(Decl.Assoc, Int, String)]
137 Map.Map String Type.Canonical
141 Map.Map String ([String], Type.Canonical)
145 Map.Map String (UnionInfo String)
149 ( [String], [(v, [Type.Canonical])] )
153 ( Var.Canonical, UnionInfo Var.Canonical )
161 Map.Map Name.Canonical Interface
164{-| Key facts about a module, used when reading info from .elmi files. -}
167 { iVersion :: Package.Version
168 , iPackage :: Package.Name
169 , iExports :: [Var.Value]
170 , iImports :: [Name.Raw]
173 , iAliases :: Aliases
174 , iFixities :: [(Decl.Assoc, Int, String)]
178toInterface :: Package.Name -> Optimized -> Interface
179toInterface pkgName modul =
185 { iVersion = Compiler.version
187 , iExports = exports myInfo
188 , iImports = imports myInfo
189 , iTypes = types myInfo
190 , iUnions = unions myInfo
191 , iAliases = aliases myInfo
192 , iFixities = fixities myInfo
196instance Binary Interface where
198 Interface <$> get <*> get <*> get <*> get <*> get <*> get <*> get <*> get
201 do put (iVersion modul)
208 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