@@ -15,19 +15,18 @@ import Data.Map ((!))
1515import qualified Data.Map as Map
1616import qualified Data.Name as Name
1717import qualified Data.Set as Set
18−import qualified Data.Text as Text
19−import qualified Data.Text.Encoding as Text
18+import qualified Data.Utf8 as Utf8
2019
2120import qualified AST.Canonical as Can
2221import qualified AST.Optimized as Opt
2322import qualified Data.Index as Index
2423import qualified Elm.Interface as I
24+import qualified Elm.Kernel as K
2525import qualified Elm.ModuleName as ModuleName
2626import qualified Generate.JavaScript.Builder as JS
2727import qualified Generate.JavaScript.Expression as Expr
2828import qualified Generate.JavaScript.Name as JsName
2929import qualified Generate.JavaScript.Mode as Mode
30−import qualified Reporting.Doc as D
3130import qualified Reporting.Render.Type as RT
3231import qualified Reporting.Render.Type.Localizer as L
3332
@@ -192,16 +191,11 @@ addGlobalHelp mode graph global state =
192191 Opt.Manager effectsType ->
193192 generateManager mode graph global effectsType state
194193
195− Opt.Kernel (Opt.KContent clientChunks clientDeps) maybeServer ->
194+ Opt.Kernel chunks deps ->
196195 if isDebugger global && not (Mode.isDebug mode) then
197196 state
198197 else
199− case maybeServer of
200− Just (Opt.KContent serverChunks serverDeps) | Mode.isServer mode ->
201− addKernel (addDeps serverDeps state) (generateKernel mode serverChunks)
202−
203− _ ->
204− addKernel (addDeps clientDeps state) (generateKernel mode clientChunks)
198+ addKernel (addDeps deps state) (generateKernel mode chunks)
205199
206200 Opt.Enum index ->
207201 addStmt state (
@@ -321,33 +315,33 @@ drawCycle names =
321315-- GENERATE KERNEL
322316
323317
324−generateKernel :: Mode.Mode -> [Opt.KChunk] -> B.Builder
318+generateKernel :: Mode.Mode -> [K.Chunk] -> B.Builder
325319generateKernel mode chunks =
326− List.foldl' (addChunk mode) mempty chunks
320+ List.foldr (addChunk mode) mempty chunks
327321
328322
329−addChunk :: Mode.Mode -> B.Builder -> Opt.KChunk -> B.Builder
330−addChunk mode builder chunk =
323+addChunk :: Mode.Mode -> K.Chunk -> B.Builder -> B.Builder
324+addChunk mode chunk builder =
331325 case chunk of
332− Opt.JS javascript ->
333− B.byteString javascript <> builder
326+ K.JS javascript ->
327+ Utf8.toBuilder javascript <> builder
334328
335− Opt.ElmVar home name ->
329+ K.ElmVar home name ->
336330 JsName.toBuilder (JsName.fromGlobal home name) <> builder
337331
338− Opt.JsVar home name ->
332+ K.JsVar home name ->
339333 JsName.toBuilder (JsName.fromKernel home name) <> builder
340334
341− Opt.ElmField name ->
335+ K.ElmField name ->
342336 JsName.toBuilder (Expr.generateField mode name) <> builder
343337
344− Opt.JsField int ->
338+ K.JsField int ->
345339 JsName.toBuilder (JsName.fromInt int) <> builder
346340
347− Opt.JsEnum int ->
341+ K.JsEnum int ->
348342 B.intDec int <> builder
349343
350− Opt.Debug ->
344+ K.Debug ->
351345 case mode of
352346 Mode.Dev _ _ ->
353347 builder
@@ -355,7 +349,7 @@ addChunk mode builder chunk =
355349 Mode.Prod _ _ ->
356350 "_UNUSED" <> builder
357351
358− Opt.Prod ->
352+ K.Prod ->
359353 case mode of
360354 Mode.Dev _ _ ->
361355 "_UNUSED" <> builder
@@ -520,14 +514,14 @@ generateExports mode (Trie maybeMain subs) =
520514
521515 (name, subTrie) : otherSubTries ->
522516 starter "," <>
523− "'" <> Text.encodeUtf8Builder name <> "':"
517+ "'" <> Utf8.toBuilder name <> "':"
524518 <> generateExports mode subTrie
525519 <> List.foldl' (addSubTrie mode) "}" otherSubTries
526520
527521
528−addSubTrie :: Mode.Mode -> B.Builder -> (Text.Text, Trie) -> B.Builder
522+addSubTrie :: Mode.Mode -> B.Builder -> (Utf8.String, Trie) -> B.Builder
529523addSubTrie mode end (name, trie) =
530− ",'" <> Text.encodeUtf8Builder name <> "':" <> generateExports mode trie <> end
524+ ",'" <> Utf8.toBuilder name <> "':" <> generateExports mode trie <> end
531525
532526
533527
@@ -537,7 +531,7 @@ addSubTrie mode end (name, trie) =
537531data Trie =
538532 Trie
539533 { _main :: Maybe (ModuleName.Canonical, Opt.Main)
540− , _subs :: Map.Map Text.Text Trie
534+ , _subs :: Map.Map Utf8.String Trie
541535 }
542536
543537
@@ -548,10 +542,14 @@ emptyTrie =
548542
549543addToTrie :: ModuleName.Canonical -> Opt.Main -> Trie -> Trie
550544addToTrie home@(ModuleName.Canonical _ moduleName) main trie =
551− merge trie $ segmentsToTrie home (Text.splitOn "." (Name.toText moduleName)) main
545+ let
546+ segments =
547+ Utf8.split 0x2E {-.-} (Name.toUtf8 moduleName)
548+ in
549+ merge trie $ segmentsToTrie home segments main
552550
553551
554−segmentsToTrie :: ModuleName.Canonical -> [Text.Text] -> Opt.Main -> Trie
552+segmentsToTrie :: ModuleName.Canonical -> [Utf8.String] -> Opt.Main -> Trie
555553segmentsToTrie home segments main =
556554 case segments of
557555 [] ->