@@ -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