@@ -11,6 +11,7 @@ module Elm.Compiler.Objects.Internal
14 , toGlobals
15 , toGlobals
@@ -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
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) =
94 = Mains [ModuleName.Canonical]
96 = Mains [ModuleName.Canonical]
97+ | Value ModuleName.Canonical Text.Text
97mains :: [ModuleName.Canonical] -> Roots
100mains :: [ModuleName.Canonical] -> Roots
@@ -99,11 +102,28 @@ mains =
105+value :: ModuleName.Canonical -> String -> Roots
107+ Value home (Text.pack name)
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
118+ [ Var.Global home name ]
121+-- needed for (==) and toString
122+hiddenDependencies :: [Var.Global]
124+ [ Var.Global (ModuleName.inCore "Dict") "toList"
125+ , Var.Global (ModuleName.inCore "Set") "toList"