on master help sign in
Update Generate/JavaScript/* for all the name/string type changes
0d943a5Evan Czaplicki
compiler/src/Generate/JavaScript.hs+5−9
@@ -314,7 +314,7 @@ addChunk :: Mode.Mode -> K.Chunk -> B.Builder -> B.Builder
314addChunk mode chunk builder =
314addChunk mode chunk builder =
315 case chunk of
315 case chunk of
316 K.JS javascript ->
316 K.JS javascript ->
317− Utf8.toBuilder javascript <> builder
317+ B.byteString javascript <> builder
318
318
319 K.ElmVar home name ->
319 K.ElmVar home name ->
320 JsName.toBuilder (JsName.fromGlobal home name) <> builder
320 JsName.toBuilder (JsName.fromGlobal home name) <> builder
@@ -498,7 +498,7 @@ generateExports mode (Trie maybeMain subs) =
498 <> List.foldl' (addSubTrie mode) "}" otherSubTries
498 <> List.foldl' (addSubTrie mode) "}" otherSubTries
499
499
500
500
501−addSubTrie :: Mode.Mode -> B.Builder -> (Utf8.String, Trie) -> B.Builder
501+addSubTrie :: Mode.Mode -> B.Builder -> (Name.Name, Trie) -> B.Builder
502addSubTrie mode end (name, trie) =
502addSubTrie mode end (name, trie) =
503 ",'" <> Utf8.toBuilder name <> "':" <> generateExports mode trie <> end
503 ",'" <> Utf8.toBuilder name <> "':" <> generateExports mode trie <> end
504
504
@@ -510,7 +510,7 @@ addSubTrie mode end (name, trie) =
510data Trie =
510data Trie =
511 Trie
511 Trie
512 { _main :: Maybe (ModuleName.Canonical, Opt.Main)
512 { _main :: Maybe (ModuleName.Canonical, Opt.Main)
513− , _subs :: Map.Map Utf8.String Trie
513+ , _subs :: Map.Map Name.Name Trie
514 }
514 }
515
515
516
516
@@ -521,14 +521,10 @@ emptyTrie =
521
521
522addToTrie :: ModuleName.Canonical -> Opt.Main -> Trie -> Trie
522addToTrie :: ModuleName.Canonical -> Opt.Main -> Trie -> Trie
523addToTrie home@(ModuleName.Canonical _ moduleName) main trie =
523addToTrie home@(ModuleName.Canonical _ moduleName) main trie =
524− let
525− segments =
526− Utf8.split 0x2E {-.-} (Name.toUtf8 moduleName)
527− in
528− merge trie $ segmentsToTrie home segments main
524+ merge trie $ segmentsToTrie home (Name.splitDots moduleName) main
529
525
530
526
531−segmentsToTrie :: ModuleName.Canonical -> [Utf8.String] -> Opt.Main -> Trie
527+segmentsToTrie :: ModuleName.Canonical -> [Name.Name] -> Opt.Main -> Trie
532segmentsToTrie home segments main =
528segmentsToTrie home segments main =
533 case segments of
529 case segments of
534 [] ->
530 [] ->
compiler/src/Generate/JavaScript/Expression.hs+5−3
@@ -22,6 +22,7 @@ import qualified Data.Utf8 as Utf8
22
22
23import qualified AST.Canonical as Can
23import qualified AST.Canonical as Can
24import qualified AST.Optimized as Opt
24import qualified AST.Optimized as Opt
25+import qualified AST.Utils.Shader as Shader
25import qualified Data.Index as Index
26import qualified Data.Index as Index
26import qualified Elm.Compiler.Type as Type
27import qualified Elm.Compiler.Type as Type
27import qualified Elm.Compiler.Type.Extract as Extract
28import qualified Elm.Compiler.Type.Extract as Extract
@@ -32,6 +33,7 @@ import qualified Generate.JavaScript.Builder as JS
32import qualified Generate.JavaScript.Name as JsName
33import qualified Generate.JavaScript.Name as JsName
33import qualified Generate.Mode as Mode
34import qualified Generate.Mode as Mode
34import qualified Json.Encode as Encode
35import qualified Json.Encode as Encode
36+import Json.Encode ((==>))
35import qualified Optimize.DecisionTree as DT
37import qualified Optimize.DecisionTree as DT
36import qualified Reporting.Annotation as A
38import qualified Reporting.Annotation as A
37
39
@@ -189,7 +191,7 @@ generate mode expression =
189 JS.Object (map toTranlation (Set.toList fields))
191 JS.Object (map toTranlation (Set.toList fields))
190 in
192 in
191 JsExpr $ JS.Object $
193 JsExpr $ JS.Object $
192− [ ( JsName.fromLocal "src", JS.String (Utf8.toBuilder src) )
194+ [ ( JsName.fromLocal "src", JS.String (Shader.toJsStringBuilder src) )
193 , ( JsName.fromLocal "attributes", toTranslationObject attributes )
195 , ( JsName.fromLocal "attributes", toTranslationObject attributes )
194 , ( JsName.fromLocal "uniforms", toTranslationObject uniforms )
196 , ( JsName.fromLocal "uniforms", toTranslationObject uniforms )
195 ]
197 ]
@@ -1063,6 +1065,6 @@ toDebugMetadata mode msgType =
1063
1065
1064 Mode.Dev (Just interfaces) ->
1066 Mode.Dev (Just interfaces) ->
1065 JS.Json $ Encode.object $
1067 JS.Json $ Encode.object $
1066− [ ("versions", Encode.object [ ("elm", V.encode V.compiler) ])
1068+ [ "versions" ==> Encode.object [ "elm" ==> V.encode V.compiler ]
1067− , ("types", Type.encodeMetadata (Extract.fromMsg interfaces msgType))
1069+ , "types" ==> Type.encodeMetadata (Extract.fromMsg interfaces msgType)
1068 ]
1070 ]
compiler/src/Generate/JavaScript/Name.hs+22−12
@@ -62,19 +62,13 @@ fromLocal name =
62
62
63
63
64fromGlobal :: ModuleName.Canonical -> Name.Name -> Name
64fromGlobal :: ModuleName.Canonical -> Name.Name -> Name
65−fromGlobal (ModuleName.Canonical (Pkg.Name author project) home) name =
65+fromGlobal home name =
66− Name $ Name.toEscapedBuilder 0x2D {- - -} 0x5F {- _ -} author
67− <> "$" <> Name.toEscapedBuilder 0x2D {- - -} 0x5F {- _ -} project
68− <> "$" <> Name.toEscapedBuilder 0x2E {- . -} 0x24 {- $ -} home
69− <> "$" <> Name.toBuilder name
66+ Name $ homeToBuilder home <> usd <> Name.toBuilder name
70
67
71
68
72fromCycle :: ModuleName.Canonical -> Name.Name -> Name
69fromCycle :: ModuleName.Canonical -> Name.Name -> Name
73−fromCycle (ModuleName.Canonical (Pkg.Name author project) home) name =
70+fromCycle home name =
74− Name $ Name.toEscapedBuilder 0x2D {- - -} 0x5F {- _ -} author
75− <> "$" <> Name.toEscapedBuilder 0x2D {- - -} 0x5F {- _ -} project
76− <> "$" <> Name.toEscapedBuilder 0x2E {- . -} 0x24 {- $ -} home
77− <> "$cyclic$" <> Name.toBuilder name
71+ Name $ homeToBuilder home <> "$cyclic$" <> Name.toBuilder name
78
72
79
73
80fromKernel :: Name.Name -> Name.Name -> Name
74fromKernel :: Name.Name -> Name.Name -> Name
@@ -82,6 +76,17 @@ fromKernel home name =
82 Name ("_" <> Name.toBuilder home <> "_" <> Name.toBuilder name)
76 Name ("_" <> Name.toBuilder home <> "_" <> Name.toBuilder name)
83
77
84
78
79+{-# INLINE homeToBuilder #-}
80+homeToBuilder :: ModuleName.Canonical -> B.Builder
81+homeToBuilder (ModuleName.Canonical (Pkg.Name author project) home) =
82+ usd <>
83+ Utf8.toEscapedBuilder 0x2D {- - -} 0x5F {- _ -} author
84+ <> usd <>
85+ Utf8.toEscapedBuilder 0x2D {- - -} 0x5F {- _ -} project
86+ <> usd <>
87+ Utf8.toEscapedBuilder 0x2E {- . -} 0x24 {- $ -} home
88+
89+
85
90
86-- TEMPORARY NAMES
91-- TEMPORARY NAMES
87
92
@@ -98,7 +103,7 @@ makeA n =
98
103
99makeLabel :: Name.Name -> Int -> Name
104makeLabel :: Name.Name -> Int -> Name
100makeLabel name index =
105makeLabel name index =
101− Name (Name.toBuilder name <> "$" <> B.intDec index)
106+ Name (Name.toBuilder name <> usd <> B.intDec index)
102
107
103
108
104makeTemp :: Name.Name -> Name
109makeTemp :: Name.Name -> Name
@@ -108,7 +113,12 @@ makeTemp name =
108
113
109dollar :: Name
114dollar :: Name
110dollar =
115dollar =
116+ Name usd
117+
118+
119+usd :: B.Builder
120+usd =
111− Name (Name.toBuilder Name.dollar)
121+ Name.toBuilder Name.dollar
112
122
113
123
114
124