2 ( Header(..), Module(..)
4 , Source, SourceInfo(..), SourceTag(..), SourceSettings, emptySettings
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.Effects as Effects
23import qualified AST.Expression.Canonical as Canonical
24import qualified AST.Expression.Optimized as Optimized
25import qualified AST.Module.Name as Name
26import qualified AST.Type as Type
27import qualified AST.Variable as Var
28import qualified Docs.AST as Docs
29import qualified Elm.Package as Package
30import qualified Elm.Compiler.Version as Compiler
31import qualified Reporting.Annotation as A
32import qualified Reporting.Region as R
39{-| Basic info needed to identify modules and determine dependencies. -}
44 , _exports :: Var.Listing (A.Located Var.Value)
45 , _settings :: SourceSettings
46 , _docs :: A.Located (Maybe String)
57 { name :: Name.Canonical
70 , srcSettings :: SourceSettings
71 , srcDocs :: A.Located (Maybe String)
72 , srcExports :: Var.Listing (A.Located Var.Value)
73 , srcImports :: [UserImport]
74 , srcDecls :: [Decl.Source]
85 A.Located [(A.Located String, A.Located String)]
88emptySettings :: SourceSettings
90 A.A (error "region of empty settings should not be needed") []
99 { validDocs :: A.Located (Maybe String)
100 , validExports :: Var.Listing (A.Located Var.Value)
101 , validImports :: ([DefaultImport], [UserImport])
102 , validDecls :: Decl.Valid
103 , validEffects :: Effects.Raw
108 Module (Info Canonical.Expr)
112 Module (Info [Optimized.Def])
119type UserImport = A.Located (Name.Raw, ImportMethod)
122type DefaultImport = (Name.Raw, ImportMethod)
127 { alias :: Maybe String
128 , exposedVars :: !(Var.Listing Var.Value)
133-- LATE PHASE MODULE INFORMATION
138 { docs :: A.Located (Maybe Docs.Centralized)
139 , exports :: [Var.Value]
140 , imports :: [Name.Raw]
143 , fixities :: [Decl.Infix]
146 , effects :: Effects.Canonical
151 Map.Map String Type.Canonical
155 Map.Map String ([String], Type.Canonical)
159 Map.Map String (UnionInfo String)
163 ( [String], [(v, [Type.Canonical])] )
167 ( Var.Canonical, UnionInfo Var.Canonical )
175 Map.Map Name.Canonical Interface
178{-| Key facts about a module, used when reading info from .elmi files. -}
181 { iVersion :: Package.Version
182 , iPackage :: Package.Name
183 , iExports :: [Var.Value]
184 , iImports :: [Name.Raw]
187 , iAliases :: Aliases
188 , iFixities :: [Decl.Infix]
192toInterface :: Package.Name -> Optimized -> Interface
193toInterface pkgName modul =
199 { iVersion = Compiler.version
201 , iExports = exports myInfo
202 , iImports = imports myInfo
203 , iTypes = types myInfo
204 , iUnions = unions myInfo
205 , iAliases = aliases myInfo
206 , iFixities = fixities myInfo
210instance Binary Interface where
212 Interface <$> get <*> get <*> get <*> get <*> get <*> get <*> get <*> get
215 do put (iVersion modul)
222 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