on master help sign in
Fix how kernel data is turned into Obj.Graph info

There are two main things here: 1. Gotta use the short name. No Elm.Kernel. prefix. 2. Register all the ElmField names

commitcff909cc12a21be7a22272e13a83a2186e102dad authorEvan Czaplicki <evancz@users.noreply.github.com> dateThu 25 Jan 2018, 20:20 (9 years ago) parentd284233
1 file changed+30−2
src/Elm/Compiler/Objects.hs+30−2
src/Elm/Compiler/Objects.hs+30−2
@@ -69,14 +69,42 @@ fromKernels kernels =
6969 Opt.Graph
7070 Map.empty
7171 (Map.mapKeys toGlobal (Map.map toNode kernels))
72− Map.empty
72+ (Map.foldl' addKernel Map.empty kernels)
73+
74+
75+
76+-- KERNEL TO NODES
7377
7478
7579toGlobal :: N.Name -> Opt.Global
7680toGlobal home =
77− Opt.Global (ModuleName.Canonical Pkg.kernel home) N.dollar
81+ Opt.Global (ModuleName.Canonical Pkg.kernel (ModuleName.getKernel home)) N.dollar
7882
7983
8084toNode :: Kernel -> Opt.Node
8185toNode (Kernel client server) =
8286 Opt.Kernel client server
87+
88+
89+
90+-- KERNEL TO ELM FIELDS
91+
92+
93+addKernel :: Map.Map N.Name Int -> Kernel -> Map.Map N.Name Int
94+addKernel fields (Kernel client maybeServer) =
95+ addContent (maybe fields (addContent fields) maybeServer) client
96+
97+
98+addContent :: Map.Map N.Name Int -> Opt.KContent -> Map.Map N.Name Int
99+addContent fields (Opt.KContent chunks _) =
100+ List.foldl' addChunk fields chunks
101+
102+
103+addChunk :: Map.Map N.Name Int -> Opt.KChunk -> Map.Map N.Name Int
104+addChunk fields chunk =
105+ case chunk of
106+ Opt.ElmField name ->
107+ Map.insertWith (+) name 1 fields
108+
109+ _ ->
110+ fields