on master help sign in
Start threading docs all the way through to canonical modules
commit23c9c2a17f4754409eab6cd1d21dee74a79d0b40 authorEvan Czaplicki <evancz@users.noreply.github.com> dateTue 14 May 2019, 18:18 (7 years ago) parent407b1cf
10 files changed+42−21
builder/src/Build.hs+5−5 builder/src/Elm/Details.hs+1−1 compiler/src/AST/Canonical.hs+2 compiler/src/AST/Source.hs+23−4 compiler/src/Canonicalize/Environment/Local.hs+3−3 compiler/src/Canonicalize/Module.hs+4−4 compiler/src/Elm/Interface.hs+1−1 compiler/src/Nitpick/PatternMatches.hs+1−1 compiler/src/Optimize/Module.hs+1−1 compiler/src/Type/Constrain/Module.hs+1−1
builder/src/Build.hs+5−5
@@ -267,7 +267,7 @@ crawlFile env@(Env _ root pkg _ _ _) mvar expectedName path =
267267 Left err ->
268268 return $ SBadSyntax path time source err
269269
270− Right modul@(Src.Module maybeActualName _ imports values _ _ _ _) ->
270+ Right modul@(Src.Module maybeActualName _ _ imports values _ _ _ _) ->
271271 case maybeActualName of
272272 Nothing ->
273273 return $ SBadSyntax path time source (Syntax.ModuleNameUnspecified expectedName)
@@ -339,13 +339,13 @@ checkModule env@(Env _ root pkg _ _ _) foreigns resultsMVar name status =
339339 do source <- File.readUtf8 path
340340 return $ RProblem $ Error.Module name path time source $
341341 case Parse.fromByteString pkg source of
342− Right (Src.Module _ _ imports _ _ _ _ _) ->
342+ Right (Src.Module _ _ _ imports _ _ _ _ _) ->
343343 Error.BadImports (toImportErrors env results imports problems)
344344
345345 Left err ->
346346 Error.BadSyntax err
347347
348− SChanged local@(Details.Local path time deps _) source modul@(Src.Module _ _ imports _ _ _ _ _) ->
348+ SChanged local@(Details.Local path time deps _) source modul@(Src.Module _ _ _ imports _ _ _ _ _) ->
349349 do results <- readMVar resultsMVar
350350 depsStatus <- checkDeps root results deps
351351 case depsStatus of
@@ -859,7 +859,7 @@ crawlMain env@(Env _ _ pkg _ _ _) mvar given =
859859 do time <- File.getTime path
860860 source <- File.readUtf8 path
861861 case Parse.fromByteString pkg source of
862− Right modul@(Src.Module _ _ imports values _ _ _ _) ->
862+ Right modul@(Src.Module _ _ _ imports values _ _ _ _) ->
863863 do let deps = map Src.getImportName imports
864864 let local = Details.Local path time deps (any isMain values)
865865 crawlDeps env mvar deps (SOutsideOk local source modul)
@@ -889,7 +889,7 @@ checkMain env@(Env _ root _ _ _ _) results pendingMain =
889889 SOutsideErr err ->
890890 return (ROutsideErr err)
891891
892− SOutsideOk local@(Details.Local path time deps _) source modul@(Src.Module _ _ imports _ _ _ _ _) ->
892+ SOutsideOk local@(Details.Local path time deps _) source modul@(Src.Module _ _ _ imports _ _ _ _ _) ->
893893 do depsStatus <- checkDeps root results deps
894894 case depsStatus of
895895 DepsChange ifaces ->
builder/src/Elm/Details.hs+1−1
@@ -568,7 +568,7 @@ crawlFile :: Map.Map ModuleName.Raw ForeignInterface -> MVar StatusDict -> Pkg.N
568568crawlFile foreignDeps mvar pkg src expectedName path =
569569 do bytes <- File.readUtf8 path
570570 case Parse.fromByteString pkg bytes of
571− Right modul@(Src.Module (Just (A.At _ actualName)) _ imports _ _ _ _ _) | expectedName == actualName ->
571+ Right modul@(Src.Module (Just (A.At _ actualName)) _ _ imports _ _ _ _ _) | expectedName == actualName ->
572572 do deps <- crawlImports foreignDeps mvar pkg src imports
573573 return (Just (SLocal deps modul))
574574
compiler/src/AST/Canonical.hs+2
@@ -58,6 +58,7 @@ import qualified Data.Map as Map
5858import Data.Name (Name)
5959import qualified Data.Utf8 as Utf8
6060
61+import qualified AST.Source as Src
6162import qualified AST.Utils.Binop as Binop
6263import qualified AST.Utils.Shader as Shader
6364import qualified Data.Index as Index
@@ -231,6 +232,7 @@ data Module =
231232 Module
232233 { _name :: ModuleName.Canonical
233234 , _exports :: Exports
235+ , _docs :: Maybe Src.Docs
234236 , _decls :: Decls
235237 , _unions :: Map.Map Name Union
236238 , _aliases :: Map.Map Name Alias
compiler/src/AST/Source.hs+23−4
@@ -12,10 +12,12 @@ module AST.Source
1212 , Value(..)
1313 , Union(..)
1414 , Alias(..)
15− , Binop(..)
15+ , Infix(..)
1616 , Port(..)
1717 , Effects(..)
1818 , Manager(..)
19+ , Docs(..)
20+ , Comment(..)
1921 , Exposing(..)
2022 , Exposed(..)
2123 , Privacy(..)
@@ -25,6 +27,8 @@ module AST.Source
2527
2628import Data.Name (Name)
2729import qualified Data.Utf8 as Utf8
30+import Data.Word (Word8)
31+import Foreign.Ptr (Ptr)
2832
2933import qualified AST.Utils.Binop as Binop
3034import qualified AST.Utils.Shader as Shader
@@ -124,17 +128,18 @@ data Module =
124128 Module
125129 { _name :: Maybe (A.Located Name)
126130 , _exports :: A.Located Exposing
131+ , _docs :: Maybe Docs
127132 , _imports :: [Import]
128133 , _values :: [A.Located Value]
129134 , _unions :: [A.Located Union]
130135 , _aliases :: [A.Located Alias]
131− , _binops :: [A.Located Binop]
136+ , _binops :: [A.Located Infix]
132137 , _effects :: Effects
133138 }
134139
135140
136141getName :: Module -> Name
137−getName (Module maybeName _ _ _ _ _ _ _) =
142+getName (Module maybeName _ _ _ _ _ _ _ _) =
138143 case maybeName of
139144 Just (A.At _ name) ->
140145 name
@@ -165,7 +170,7 @@ data Import =
165170data Value = Value (A.Located Name) [Pattern] Expr (Maybe Type)
166171data Union = Union (A.Located Name) [A.Located Name] [(A.Located Name, [Type])]
167172data Alias = Alias (A.Located Name) [A.Located Name] Type
168−data Binop = Binop Name Binop.Associativity Binop.Precedence Name
173+data Infix = Infix Name Binop.Associativity Binop.Precedence Name
169174data Port = Port (A.Located Name) Type
170175
171176
@@ -181,6 +186,20 @@ data Manager
181186 | Fx (A.Located Name) (A.Located Name)
182187
183188
189+data Docs =
190+ Docs
191+ { _overview :: Comment
192+ , _comments :: [(Name, Comment)]
193+ }
194+
195+
196+data Comment =
197+ Comment
198+ { _start :: Ptr Word8
199+ , _end :: Ptr Word8
200+ }
201+
202+
184203
185204-- EXPOSING
186205
compiler/src/Canonicalize/Environment/Local.hs+3−3
@@ -54,7 +54,7 @@ addVars module_ (Env.Env home vs ts cs bs qvs qts qcs) =
5454
5555
5656collectVars :: Src.Module -> Result i w (Map.Map Name.Name Env.Var)
57−collectVars (Src.Module _ _ _ values _ _ _ effects) =
57+collectVars (Src.Module _ _ _ _ values _ _ _ effects) =
5858 let
5959 addDecl dict (A.At _ (Src.Value (A.At region name) _ _ _)) =
6060 Dups.insert name region (Env.TopLevel region) dict
@@ -95,7 +95,7 @@ toEffectDups effects =
9595
9696
9797addTypes :: Src.Module -> Env.Env -> Result i w Env.Env
98−addTypes (Src.Module _ _ _ _ unions aliases _ _) (Env.Env home vs ts cs bs qvs qts qcs) =
98+addTypes (Src.Module _ _ _ _ _ unions aliases _ _) (Env.Env home vs ts cs bs qvs qts qcs) =
9999 let
100100 addAliasDups dups (A.At _ (Src.Alias (A.At region name) _ _)) = Dups.insert name region () dups
101101 addUnionDups dups (A.At _ (Src.Union (A.At region name) _ _)) = Dups.insert name region () dups
@@ -262,7 +262,7 @@ addFreeVars freeVars (A.At region tipe) =
262262
263263
264264addCtors :: Src.Module -> Env.Env -> Result i w (Env.Env, Unions, Aliases)
265−addCtors (Src.Module _ _ _ _ unions aliases _ _) env@(Env.Env home vs ts cs bs qvs qts qcs) =
265+addCtors (Src.Module _ _ _ _ _ unions aliases _ _) env@(Env.Env home vs ts cs bs qvs qts qcs) =
266266 do unionInfo <- traverse (canonicalizeUnion env) unions
267267 aliasInfo <- traverse (canonicalizeAlias env) aliases
268268
compiler/src/Canonicalize/Module.hs+4−4
@@ -42,7 +42,7 @@ type Result i w a =
4242
4343
4444canonicalize :: Pkg.Name -> Map.Map ModuleName.Raw I.Interface -> Src.Module -> Result i [W.Warning] Can.Module
45−canonicalize pkg ifaces modul@(Src.Module _ exports imports values _ _ binops effects) =
45+canonicalize pkg ifaces modul@(Src.Module _ exports docs imports values _ _ binops effects) =
4646 do let home = ModuleName.Canonical pkg (Src.getName modul)
4747 let cbinops = Map.fromList (map canonicalizeBinop binops)
4848
@@ -54,15 +54,15 @@ canonicalize pkg ifaces modul@(Src.Module _ exports imports values _ _ binops ef
5454 ceffects <- Effects.canonicalize env values cunions effects
5555 cexports <- canonicalizeExports values cunions caliases cbinops ceffects exports
5656
57− return $ Can.Module home cexports cvalues cunions caliases cbinops ceffects
57+ return $ Can.Module home cexports docs cvalues cunions caliases cbinops ceffects
5858
5959
6060
6161-- CANONICALIZE BINOP
6262
6363
64−canonicalizeBinop :: A.Located Src.Binop -> ( Name.Name, Can.Binop )
65−canonicalizeBinop (A.At _ (Src.Binop op associativity precedence func)) =
64+canonicalizeBinop :: A.Located Src.Infix -> ( Name.Name, Can.Binop )
65+canonicalizeBinop (A.At _ (Src.Infix op associativity precedence func)) =
6666 ( op, Can.Binop_ associativity precedence func )
6767
6868
compiler/src/Elm/Interface.hs+1−1
@@ -73,7 +73,7 @@ data Binop =
7373
7474
7575fromModule :: Pkg.Name -> Can.Module -> Map.Map Name.Name Can.Annotation -> Interface
76−fromModule home (Can.Module _ exports _ unions aliases binops _) annotations =
76+fromModule home (Can.Module _ exports _ _ unions aliases binops _) annotations =
7777 Interface
7878 { _home = home
7979 , _values = restrict exports annotations
compiler/src/Nitpick/PatternMatches.hs+1−1
@@ -204,7 +204,7 @@ data Context
204204
205205
206206check :: Can.Module -> Either (NE.List Error) ()
207−check (Can.Module _ _ decls _ _ _ _) =
207+check (Can.Module _ _ _ decls _ _ _ _) =
208208 case checkDecls decls [] of
209209 [] ->
210210 Right ()
compiler/src/Optimize/Module.hs+1−1
@@ -41,7 +41,7 @@ type Annotations =
4141
4242
4343optimize :: Annotations -> Can.Module -> Result i [W.Warning] Opt.LocalGraph
44−optimize annotations (Can.Module home _ decls unions aliases _ effects) =
44+optimize annotations (Can.Module home _ _ decls unions aliases _ effects) =
4545 addDecls home annotations decls $
4646 addEffects home effects $
4747 addUnions home unions $
compiler/src/Type/Constrain/Module.hs+1−1
@@ -23,7 +23,7 @@ import Type.Type (Type(..), Constraint(..), (==>), mkFlexVar, nameToRigid, never
2323
2424
2525constrain :: Can.Module -> IO Constraint
26−constrain (Can.Module home _ decls _ _ _ effects) =
26+constrain (Can.Module home _ _ decls _ _ _ effects) =
2727 case effects of
2828 Can.NoEffects ->
2929 constrainDecls decls CSaveTheEnvironment