on master help sign in
Allow specific values for Obj.Roots
179ab45Evan Czaplicki
src/Elm/Compiler/Objects.hs+1
@@ -8,6 +8,7 @@ module Elm.Compiler.Objects
8 , unions
8 , unions
9 , Roots
9 , Roots
10 , mains
10 , mains
11+ , value
11 )
12 )
12 where
13 where
13
14
src/Elm/Compiler/Objects/Internal.hs+23−3
@@ -11,6 +11,7 @@ module Elm.Compiler.Objects.Internal
11 , lookup
11 , lookup
12 , Roots
12 , Roots
13 , mains
13 , mains
14+ , value
14 , toGlobals
15 , toGlobals
15 )
16 )
16 where
17 where
@@ -21,6 +22,7 @@ import Control.Arrow (first)
21import Control.Monad (liftM, liftM2)
22import Control.Monad (liftM, liftM2)
22import Data.Binary
23import Data.Binary
23import qualified Data.Map as Map
24import qualified Data.Map as Map
25+import qualified Data.Text as Text
24
26
25import qualified AST.Expression.Optimized as Opt
27import qualified AST.Expression.Optimized as Opt
26import qualified AST.Module.Name as ModuleName
28import qualified AST.Module.Name as ModuleName
@@ -92,6 +94,7 @@ lookup var (SymbolTable symbols) =
92
94
93data Roots
95data Roots
94 = Mains [ModuleName.Canonical]
96 = Mains [ModuleName.Canonical]
97+ | Value ModuleName.Canonical Text.Text
95
98
96
99
97mains :: [ModuleName.Canonical] -> Roots
100mains :: [ModuleName.Canonical] -> Roots
@@ -99,11 +102,28 @@ mains =
99 Mains
102 Mains
100
103
101
104
105+value :: ModuleName.Canonical -> String -> Roots
106+value home name =
107+ Value home (Text.pack name)
108+
109+
102toGlobals :: Roots -> [Var.Global]
110toGlobals :: Roots -> [Var.Global]
103toGlobals roots =
111toGlobals roots =
112+ hiddenDependencies ++
104− case roots of
113+ case roots of
105− Mains modules ->
114+ Mains modules ->
106− map (\home -> Var.Global home "main") modules
115+ map (\home -> Var.Global home "main") modules
116+
117+ Value home name ->
118+ [ Var.Global home name ]
119+
120+
121+-- needed for (==) and toString
122+hiddenDependencies :: [Var.Global]
123+hiddenDependencies =
124+ [ Var.Global (ModuleName.inCore "Dict") "toList"
125+ , Var.Global (ModuleName.inCore "Set") "toList"
126+ ]
107
127
108
128
109
129