on master help sign in
Switch AST over to Elm.String and Elm.Float / use parse snippets for doc comments
83aae2eEvan Czaplicki
compiler/src/AST/Canonical.hs+8−7
@@ -56,13 +56,14 @@ import Data.Binary
56import qualified Data.List as List
56import qualified Data.List as List
57import qualified Data.Map as Map
57import qualified Data.Map as Map
58import Data.Name (Name)
58import Data.Name (Name)
59−import qualified Data.Utf8 as Utf8
60
59
61import qualified AST.Source as Src
60import qualified AST.Source as Src
62import qualified AST.Utils.Binop as Binop
61import qualified AST.Utils.Binop as Binop
63import qualified AST.Utils.Shader as Shader
62import qualified AST.Utils.Shader as Shader
64import qualified Data.Index as Index
63import qualified Data.Index as Index
64+import qualified Elm.Float as EF
65import qualified Elm.ModuleName as ModuleName
65import qualified Elm.ModuleName as ModuleName
66+import qualified Elm.String as ES
66import qualified Reporting.Annotation as A
67import qualified Reporting.Annotation as A
67
68
68
69
@@ -83,10 +84,10 @@ data Expr_
83 | VarCtor CtorOpts ModuleName.Canonical Name Index.ZeroBased Annotation
84 | VarCtor CtorOpts ModuleName.Canonical Name Index.ZeroBased Annotation
84 | VarDebug ModuleName.Canonical Name Annotation
85 | VarDebug ModuleName.Canonical Name Annotation
85 | VarOperator Name ModuleName.Canonical Name Annotation -- CACHE real name for optimization
86 | VarOperator Name ModuleName.Canonical Name Annotation -- CACHE real name for optimization
86− | Chr Utf8.String
87+ | Chr ES.String
87− | Str Utf8.String
88+ | Str ES.String
88 | Int Int
89 | Int Int
89− | Float (Utf8.Under256 Float)
90+ | Float EF.Float
90 | List [Expr]
91 | List [Expr]
91 | Negate Expr
92 | Negate Expr
92 | Binop Name ModuleName.Canonical Name Annotation Expr Expr -- CACHE real name for optimization
93 | Binop Name ModuleName.Canonical Name Annotation Expr Expr -- CACHE real name for optimization
@@ -151,8 +152,8 @@ data Pattern_
151 | PList [Pattern]
152 | PList [Pattern]
152 | PCons Pattern Pattern
153 | PCons Pattern Pattern
153 | PBool Union Bool
154 | PBool Union Bool
154− | PChr Utf8.String
155+ | PChr ES.String
155− | PStr Utf8.String
156+ | PStr ES.String
156 | PInt Int
157 | PInt Int
157 | PCtor
158 | PCtor
158 { _p_home :: ModuleName.Canonical
159 { _p_home :: ModuleName.Canonical
@@ -232,7 +233,7 @@ data Module =
232 Module
233 Module
233 { _name :: ModuleName.Canonical
234 { _name :: ModuleName.Canonical
234 , _exports :: Exports
235 , _exports :: Exports
235− , _docs :: Maybe Src.Docs
236+ , _docs :: Src.Docs
236 , _decls :: Decls
237 , _decls :: Decls
237 , _unions :: Map.Map Name Union
238 , _unions :: Map.Map Name Union
238 , _aliases :: Map.Map Name Alias
239 , _aliases :: Map.Map Name Alias
compiler/src/AST/Optimized.hs+5−4
@@ -27,14 +27,15 @@ import qualified Data.Map as Map
27import qualified Data.Name as Name
27import qualified Data.Name as Name
28import Data.Name (Name)
28import Data.Name (Name)
29import qualified Data.Set as Set
29import qualified Data.Set as Set
30−import qualified Data.Utf8 as Utf8
31
30
32import qualified AST.Canonical as Can
31import qualified AST.Canonical as Can
33import qualified AST.Utils.Shader as Shader
32import qualified AST.Utils.Shader as Shader
34import qualified Data.Index as Index
33import qualified Data.Index as Index
34+import qualified Elm.Float as EF
35import qualified Elm.Kernel as K
35import qualified Elm.Kernel as K
36import qualified Elm.ModuleName as ModuleName
36import qualified Elm.ModuleName as ModuleName
37import qualified Elm.Package as Pkg
37import qualified Elm.Package as Pkg
38+import qualified Elm.String as ES
38import qualified Optimize.DecisionTree as DT
39import qualified Optimize.DecisionTree as DT
39import qualified Reporting.Annotation as A
40import qualified Reporting.Annotation as A
40
41
@@ -45,10 +46,10 @@ import qualified Reporting.Annotation as A
45
46
46data Expr
47data Expr
47 = Bool Bool
48 = Bool Bool
48− | Chr Utf8.String
49+ | Chr ES.String
49− | Str Utf8.String
50+ | Str ES.String
50 | Int Int
51 | Int Int
51− | Float (Utf8.Under256 Float)
52+ | Float EF.Float
52 | VarLocal Name
53 | VarLocal Name
53 | VarGlobal Global
54 | VarGlobal Global
54 | VarEnum Global Index.ZeroBased
55 | VarEnum Global Index.ZeroBased
compiler/src/AST/Source.hs+16−27
@@ -1,5 +1,4 @@
1{-# OPTIONS_GHC -Wall #-}
1{-# OPTIONS_GHC -Wall #-}
2−{-# LANGUAGE OverloadedStrings #-}
3module AST.Source
2module AST.Source
4 ( Expr, Expr_(..), VarType(..)
3 ( Expr, Expr_(..), VarType(..)
5 , Def(..)
4 , Def(..)
@@ -26,12 +25,13 @@ module AST.Source
26
25
27
26
28import Data.Name (Name)
27import Data.Name (Name)
29−import qualified Data.Utf8 as Utf8
28+import qualified Data.Name as Name
30−import Data.Word (Word8)
31−import Foreign.Ptr (Ptr)
32
29
33import qualified AST.Utils.Binop as Binop
30import qualified AST.Utils.Binop as Binop
34import qualified AST.Utils.Shader as Shader
31import qualified AST.Utils.Shader as Shader
32+import qualified Elm.Float as EF
33+import qualified Elm.String as ES
34+import qualified Parse.Primitives as P
35import qualified Reporting.Annotation as A
35import qualified Reporting.Annotation as A
36
36
37
37
@@ -43,10 +43,10 @@ type Expr = A.Located Expr_
43
43
44
44
45data Expr_
45data Expr_
46− = Chr Utf8.String
46+ = Chr ES.String
47− | Str Utf8.String
47+ | Str ES.String
48 | Int Int
48 | Int Int
49− | Float (Utf8.Under256 Float)
49+ | Float EF.Float
50 | Var VarType Name
50 | Var VarType Name
51 | VarQual VarType Name Name
51 | VarQual VarType Name Name
52 | List [Expr]
52 | List [Expr]
@@ -97,8 +97,8 @@ data Pattern_
97 | PCtorQual A.Region Name Name [Pattern]
97 | PCtorQual A.Region Name Name [Pattern]
98 | PList [Pattern]
98 | PList [Pattern]
99 | PCons Pattern Pattern
99 | PCons Pattern Pattern
100− | PChr Utf8.String
100+ | PChr ES.String
101− | PStr Utf8.String
101+ | PStr ES.String
102 | PInt Int
102 | PInt Int
103
103
104
104
@@ -128,7 +128,7 @@ data Module =
128 Module
128 Module
129 { _name :: Maybe (A.Located Name)
129 { _name :: Maybe (A.Located Name)
130 , _exports :: A.Located Exposing
130 , _exports :: A.Located Exposing
131− , _docs :: Maybe Docs
131+ , _docs :: Docs
132 , _imports :: [Import]
132 , _imports :: [Import]
133 , _values :: [A.Located Value]
133 , _values :: [A.Located Value]
134 , _unions :: [A.Located Union]
134 , _unions :: [A.Located Union]
@@ -145,13 +145,7 @@ getName (Module maybeName _ _ _ _ _ _ _ _) =
145 name
145 name
146
146
147 Nothing ->
147 Nothing ->
148− defaultModuleName
148+ Name._Main
149−
150−
151−{-# NOINLINE defaultModuleName #-}
152−defaultModuleName :: Name
153−defaultModuleName =
154− "Main"
155
149
156
150
157getImportName :: Import -> Name
151getImportName :: Import -> Name
@@ -186,18 +180,13 @@ data Manager
186 | Fx (A.Located Name) (A.Located Name)
180 | Fx (A.Located Name) (A.Located Name)
187
181
188
182
189−data Docs =
183+data Docs
190− Docs
184+ = NoDocs A.Region
191− { _overview :: Comment
192− , _comments :: [(Name, Comment)]
185+ | YesDocs Comment [(Name, Comment)]
193− }
194
186
195
187
196−data Comment =
188+newtype Comment =
197− Comment
189+ Comment P.Snippet
198− { _start :: Ptr Word8
199− , _end :: Ptr Word8
200− }
201
190
202
191
203
192