on master help sign in
Make sure types defined in REPL get localized when printed
a843469Evan Czaplicki
builder/src/Elm/Project.hs+1−1
@@ -78,7 +78,7 @@ compileForRepl localizer source maybeName =
78 (dirty, ifaces) <- Plan.plan Nothing summary graph
78 (dirty, ifaces) <- Plan.plan Nothing summary graph
79 answers <- Compile.compile project Nothing ifaces dirty
79 answers <- Compile.compile project Nothing ifaces dirty
80 results <- Artifacts.write root answers
80 results <- Artifacts.write root answers
81− let (Compiler.Artifacts elmi _ _) = results ! "Elm_Repl"
81+ let (Compiler.Artifacts elmi _ _) = results ! N.replModule
82 traverse (Output.generateReplFile localizer summary graph elmi) maybeName
82 traverse (Output.generateReplFile localizer summary graph elmi) maybeName
83
83
84
84
builder/src/Generate/Output.hs+1−1
@@ -155,7 +155,7 @@ generateReplFile localizer summary@(Summary.Summary _ project _ _ _) graph iface
155 do
155 do
156 objectGraph <- organize summary graph
156 objectGraph <- organize summary graph
157
157
158− let home = Module.Canonical (Project.getName project) "Elm_Repl"
158+ let home = Module.Canonical (Project.getName project) N.replModule
159 let builder = Obj.generateForRepl True localizer objectGraph iface home name
159 let builder = Obj.generateForRepl True localizer objectGraph iface home name
160
160
161 liftIO $ IO.writeBuilder (Paths.temp "js") $
161 liftIO $ IO.writeBuilder (Paths.temp "js") $
compiler/src/Elm/Name.hs+6
@@ -30,6 +30,7 @@ module Elm.Name
30 , shader, debug, debugger, bitwise, basics
30 , shader, debug, debugger, bitwise, basics
31 , utils, negate, value
31 , utils, negate, value
32 , node, program, main, dollar, identity
32 , node, program, main, dollar, identity
33+ , replModule
33 )
34 )
34 where
35 where
35
36
@@ -329,3 +330,8 @@ dollar = "$"
329{-# NOINLINE identity #-}
330{-# NOINLINE identity #-}
330identity :: Name
331identity :: Name
331identity = "identity"
332identity = "identity"
333+
334+
335+{-# NOINLINE replModule #-}
336+replModule :: Name
337+replModule = "Elm_Repl"
compiler/src/Reporting/Render/Type/Localizer.hs+3−2
@@ -122,8 +122,9 @@ addType (A.At _ exposed) types =
122
122
123replEmpty :: Localizer
123replEmpty :: Localizer
124replEmpty =
124replEmpty =
125− Localizer $ Map.fromList $ map toPair $
125+ Localizer $
126+ Map.insert N.replModule (Import Nothing All) $
126− Imports.addDefaults Pkg.dummyName []
127+ Map.fromList $ map toPair $ Imports.addDefaults Pkg.dummyName []
127
128
128
129
129replAdd :: N.Name -> Maybe N.Name -> Src.Exposing -> Localizer -> Localizer
130replAdd :: N.Name -> Maybe N.Name -> Src.Exposing -> Localizer -> Localizer
ui/terminal/src/Repl.hs+4−1
@@ -234,8 +234,11 @@ initialState =
234compile :: Output -> State -> Task.Task (Maybe FilePath)
234compile :: Output -> State -> Task.Task (Maybe FilePath)
235compile output (State count imports types defs tricks localizer) =
235compile output (State count imports types defs tricks localizer) =
236 let
236 let
237+ header =
238+ "module " <> N.toBuilder N.replModule <> " exposing (..)\n\n"
239+
237 elmSourceCode =
240 elmSourceCode =
238− (<>) "module Elm_Repl exposing (..)\n\n" $
241+ (<>) header $
239 addLines imports $ addLines types $ addLines defs $
242 addLines imports $ addLines types $ addLines defs $
240 List.foldr (<>) mempty (map Text.encodeUtf8Builder tricks)
243 List.foldr (<>) mempty (map Text.encodeUtf8Builder tricks)
241 in
244 in