1{-# OPTIONS_GHC -Wall #-}
2{-# LANGUAGE OverloadedStrings #-}
4 ( Header(..), defaultHeader, Module(..)
6 , Source, SourceInfo(..), SourceTag(..), SourceSettings, emptySettings
8 , Canonical, Optimized, Info(..)
10 , UserImport, DefaultImport, ImportMethod(..)
14 , Unions, UnionInfo, CanonicalUnion
16 , Interfaces, Interface(..), toInterface
21import qualified Data.Map as Map
22import Data.Text (Text)
24import qualified AST.Declaration as Decl
25import qualified AST.Effects as Effects
26import qualified AST.Expression.Canonical as Canonical
27import qualified AST.Expression.Optimized as Optimized
28import qualified AST.Module.Name as Name
29import qualified AST.Type as Type
30import qualified AST.Variable as Var
31import qualified Docs.AST as Docs
32import qualified Elm.Package as Package
33import qualified Elm.Compiler.Version as Compiler
34import qualified Reporting.Annotation as A
35import qualified Reporting.Region as R
42{-| Basic info needed to identify modules and determine dependencies. -}
47 , _exports :: Var.Listing (A.Located Var.Value)
48 , _settings :: SourceSettings
49 , _docs :: A.Located (Maybe Text)
54instance Show (Header a) where
59defaultHeader :: R.Position -> R.Position -> imports -> Header imports
60defaultHeader start end imports_ =
61 Header Normal "Main" Var.openListing emptySettings (A.at start end Nothing) imports_
70 { name :: Name.Canonical
83 , srcSettings :: SourceSettings
84 , srcDocs :: A.Located (Maybe Text)
85 , srcExports :: Var.Listing (A.Located Var.Value)
86 , srcImports :: [UserImport]
87 , srcDecls :: [Decl.Source]
98 A.Located [(A.Located Text, A.Located Text)]
101emptySettings :: SourceSettings
103 A.A (error "region of empty settings should not be needed") []
112 { validDocs :: A.Located (Maybe Text)
113 , validExports :: Var.Listing (A.Located Var.Value)
114 , validImports :: ([DefaultImport], [UserImport])
115 , validDecls :: Decl.Valid
116 , validEffects :: Effects.Raw
121 Module (Info Canonical.Expr)
125 Module (Info [Optimized.Def])
132type UserImport = A.Located (Name.Raw, ImportMethod)
135type DefaultImport = (Name.Raw, ImportMethod)
140 { alias :: Maybe Text
141 , exposedVars :: !(Var.Listing Var.Value)
146-- LATE PHASE MODULE INFORMATION
151 { docs :: A.Located (Maybe Docs.Centralized)
152 , exports :: [Var.Value]
153 , imports :: [Name.Raw]
156 , fixities :: [Decl.Infix]
159 , effects :: Effects.Canonical
164 Map.Map Text Type.Canonical
168 Map.Map Text ([Text], Type.Canonical)
172 Map.Map Text (UnionInfo Text)
176 ( [Text], [(v, [Type.Canonical])] )
180 ( Var.Canonical, UnionInfo Var.Canonical )
188 Map.Map Name.Canonical Interface
191{-| Key facts about a module, used when reading info from .elmi files. -}
194 { iVersion :: Package.Version
195 , iPackage :: Package.Name
196 , iExports :: [Var.Value]
197 , iImports :: [Name.Raw]
200 , iAliases :: Aliases
201 , iFixities :: [Decl.Infix]
205toInterface :: Package.Name -> Optimized -> Interface
206toInterface pkgName modul =
212 { iVersion = Compiler.version
214 , iExports = exports myInfo
215 , iImports = imports myInfo
216 , iTypes = types myInfo
217 , iUnions = unions myInfo
218 , iAliases = aliases myInfo
219 , iFixities = fixities myInfo
223instance Binary Interface where
225 Interface <$> get <*> get <*> get <*> get <*> get <*> get <*> get <*> get
228 do put (iVersion modul)
235 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