3 , Types, Aliases, Unions
4 , UnionInfo, CanonicalUnion
5 , SourceModule, ValidModule, CanonicalModule, Optimized
6 , Module(..), Kind(..), Body(..)
8 , Interface(..), toInterface
9 , UserImport, DefaultImport, ImportMethod(..)
13import qualified Data.Map as Map
15import qualified AST.Declaration as Decl
16import qualified AST.Expression.Canonical as Canonical
17import qualified AST.Expression.Optimized as Optimized
18import qualified AST.Module.Name as Name
19import qualified AST.Type as Type
20import qualified AST.Variable as Var
21import qualified Docs.AST as Docs
22import qualified Elm.Package as Package
23import qualified Elm.Compiler.Version as Compiler
24import qualified Reporting.Annotation as A
28-- HELPFUL TYPE ALIASES
32 Map.Map Name.Canonical Interface
36 Map.Map String Type.Canonical
40 Map.Map String ([String], Type.Canonical)
44 Map.Map String (UnionInfo String)
48 ( [String], [(v, [Type.Canonical])] )
52 ( Var.Canonical, UnionInfo Var.Canonical )
63 (Var.Listing (A.Located Var.Value))
70 ([DefaultImport], [UserImport])
71 (Var.Listing (A.Located Var.Value))
76 Module Docs.Centralized [Name.Raw] [Var.Value] (Body Canonical.Expr)
80 Module Docs.Centralized [Name.Raw] [Var.Value] (Body [Optimized.Def])
83data Module docs imports exports body =
86 , name :: Name.Canonical
88 , docs :: A.Located (Maybe docs)
105 , fixities :: [(Decl.Assoc, Int, String)]
115{-| Basic info needed to identify modules and determine dependencies. -}
120 , _docs :: A.Located (Maybe String)
121 , _exports :: Var.Listing (A.Located Var.Value)
122 , _imports :: imports
130type UserImport = A.Located (Name.Raw, ImportMethod)
133type DefaultImport = (Name.Raw, ImportMethod)
138 { alias :: Maybe String
139 , exposedVars :: !(Var.Listing Var.Value)
147{-| Key facts about a module, used when reading info from .elmi files. -}
150 { iVersion :: Package.Version
151 , iPackage :: Package.Name
152 , iExports :: [Var.Value]
154 , iImports :: [Name.Raw]
156 , iAliases :: Aliases
157 , iFixities :: [(Decl.Assoc, Int, String)]
161toInterface :: Package.Name -> Optimized -> Interface
162toInterface pkgName modul =
168 { iVersion = Compiler.version
170 , iExports = exports modul
171 , iTypes = types body'
172 , iImports = imports modul
173 , iUnions = unions body'
174 , iAliases = aliases body'
175 , iFixities = fixities body'
179instance Binary Interface where
181 Interface <$> get <*> get <*> get <*> get <*> get <*> get <*> get <*> get
184 do put (iVersion modul)
191 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