on master help sign in
Get rid of client/server distinction in Mode for now

Not used and can be added back easily if needed.

commit390be8d2e676a5b487c2aeb90c94aac6e68b609f authorEvan Czaplicki <evancz@users.noreply.github.com> dateTue 12 Feb 2019, 19:08 (8 years ago) parentae9ecd5
3 files changed+62−103
compiler/src/Generate/JavaScript.hs+18−17 compiler/src/Generate/JavaScript/Expression.hs+34−34 compiler/src/Generate/JavaScript/Mode.hs → compiler/src/Generate/Mode.hs+10−52
compiler/src/Generate/JavaScript.hs+18−17
@@ -26,7 +26,8 @@ import 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
29−import qualified Generate.JavaScript.Mode as Mode
29+import qualified Generate.Mode as Mode
30+import qualified Reporting.Doc as D
3031import qualified Reporting.Render.Type as RT
3132import qualified Reporting.Render.Type.Localizer as L
3233
@@ -41,7 +42,7 @@ data Output
4142
4243
4344generate :: Mode.Mode -> Opt.Graph -> [ModuleName.Canonical] -> Output
44−generate mode (Opt.Graph mains graph _fields) roots =
45+generate mode (Opt.Graph mains graph _) roots =
4546 let
4647 rootSet = Set.fromList roots
4748 rootMap = Map.restrictKeys mains rootSet
@@ -66,15 +67,15 @@ addMain mode graph home _ state =
6667perfNote :: Mode.Mode -> B.Builder
6768perfNote mode =
6869 case mode of
69− Mode.Prod _ _ ->
70+ Mode.Prod _ ->
7071 ""
7172
72− Mode.Dev _ Nothing ->
73+ Mode.Dev Nothing ->
7374 "console.warn('Compiled in DEV mode. Follow the advice at "
7475 <> B.stringUtf8 (D.makeNakedLink "optimize")
7576 <> " for better performance and smaller assets.');"
7677
77− Mode.Dev _ (Just _) ->
78+ Mode.Dev (Just _) ->
7879 "console.warn('Compiled in DEBUG mode. Follow the advice at "
7980 <> B.stringUtf8 (D.makeNakedLink "optimize")
8081 <> " for better performance and smaller assets.');"
@@ -87,13 +88,13 @@ perfNote mode =
8788generateForRepl :: Bool -> L.Localizer -> Opt.Graph -> I.Interface -> ModuleName.Canonical -> Name.Name -> B.Builder
8889generateForRepl ansi localizer (Opt.Graph _ graph _) iface home name =
8990 let
90− mode = Mode.dev Mode.Client
91+ mode = Mode.Dev Nothing
9192 debugState = addGlobal mode graph emptyState (Opt.Global ModuleName.debug "toString")
9293 evalState = addGlobal mode graph debugState (Opt.Global home name)
9394 in
9495 stateToBuilder evalState
9596 <>
96− print ansi localizer home name (I._types iface ! name)
97+ print ansi localizer home name (I._values iface ! name)
9798
9899
99100print :: Bool -> L.Localizer -> ModuleName.Canonical -> Name.Name -> Can.Annotation -> B.Builder
@@ -258,10 +259,10 @@ generateCycle mode (Opt.Global home _) names values functions =
258259
259260 realBlock@(_:_) ->
260261 case mode of
261− Mode.Prod _ _ ->
262+ Mode.Prod _ ->
262263 JS.Block realBlock
263264
264− Mode.Dev _ _ ->
265+ Mode.Dev _ ->
265266 JS.Try (JS.Block realBlock) JsName.dollar $ JS.Throw $ JS.String $
266267 "Some top-level definitions from `" <> Name.toBuilder (ModuleName._module home) <> "` are causing infinite recursion:\\n"
267268 <> drawCycle names
@@ -343,18 +344,18 @@ addChunk mode chunk builder =
343344
344345 K.Debug ->
345346 case mode of
346− Mode.Dev _ _ ->
347+ Mode.Dev _ ->
347348 builder
348349
349− Mode.Prod _ _ ->
350+ Mode.Prod _ ->
350351 "_UNUSED" <> builder
351352
352353 K.Prod ->
353354 case mode of
354− Mode.Dev _ _ ->
355+ Mode.Dev _ ->
355356 "_UNUSED" <> builder
356357
357− Mode.Prod _ _ ->
358+ Mode.Prod _ ->
358359 builder
359360
360361
@@ -367,10 +368,10 @@ generateEnum mode global@(Opt.Global home name) index =
367368 let
368369 definition =
369370 case mode of
370− Mode.Dev _ _ ->
371+ Mode.Dev _ ->
371372 Expr.codeToExpr (Expr.generateCtor mode global index 0)
372373
373− Mode.Prod _ _ ->
374+ Mode.Prod _ ->
374375 JS.Int (Index.toMachine index)
375376 in
376377 JS.Var [ (JsName.fromGlobal home name, Just definition) ]
@@ -385,10 +386,10 @@ generateBox mode global@(Opt.Global home name) =
385386 let
386387 definition =
387388 case mode of
388− Mode.Dev _ _ ->
389+ Mode.Dev _ ->
389390 Expr.codeToExpr (Expr.generateCtor mode global Index.first 1)
390391
391− Mode.Prod _ _ ->
392+ Mode.Prod _ ->
392393 JS.Ref (JsName.fromGlobal ModuleName.basics Name.identity)
393394 in
394395 JS.Var [ (JsName.fromGlobal home name, Just definition) ]
compiler/src/Generate/JavaScript/Expression.hs+34−34
@@ -29,8 +29,8 @@ import qualified Elm.Version as V
2929import qualified Elm.ModuleName as ModuleName
3030import qualified Elm.Package as Pkg
3131import qualified Generate.JavaScript.Builder as JS
32−import qualified Generate.JavaScript.Mode as Mode
3332import qualified Generate.JavaScript.Name as JsName
33+import qualified Generate.Mode as Mode
3434import qualified Json.Encode as Encode
3535import qualified Optimize.DecisionTree as DT
3636import qualified Reporting.Annotation as A
@@ -54,10 +54,10 @@ generate mode expression =
5454 Opt.Chr char ->
5555 JsExpr $
5656 case mode of
57− Mode.Dev _ _ ->
57+ Mode.Dev _ ->
5858 JS.Call toChar [ JS.String (Utf8.toBuilder char) ]
5959
60− Mode.Prod _ _ ->
60+ Mode.Prod _ ->
6161 JS.String (Utf8.toBuilder char)
6262
6363 Opt.Str string ->
@@ -77,17 +77,17 @@ generate mode expression =
7777
7878 Opt.VarEnum (Opt.Global home name) index ->
7979 case mode of
80− Mode.Dev _ _ ->
80+ Mode.Dev _ ->
8181 JsExpr $ JS.Ref (JsName.fromGlobal home name)
8282
83− Mode.Prod _ _ ->
83+ Mode.Prod _ ->
8484 JsExpr $ JS.Int (Index.toMachine index)
8585
8686 Opt.VarBox (Opt.Global home name) ->
8787 JsExpr $ JS.Ref $
8888 case mode of
89− Mode.Dev _ _ -> JsName.fromGlobal home name
90− Mode.Prod _ _ -> JsName.fromGlobal ModuleName.basics Name.identity
89+ Mode.Dev _ -> JsName.fromGlobal home name
90+ Mode.Prod _ -> JsName.fromGlobal ModuleName.basics Name.identity
9191
9292 Opt.VarCycle home name ->
9393 JsExpr $ JS.Call (JS.Ref (JsName.fromCycle home name)) []
@@ -157,10 +157,10 @@ generate mode expression =
157157
158158 Opt.Unit ->
159159 case mode of
160− Mode.Dev _ _ ->
160+ Mode.Dev _ ->
161161 JsExpr $ JS.Ref (JsName.fromKernel Name.utils "Tuple0")
162162
163− Mode.Prod _ _ ->
163+ Mode.Prod _ ->
164164 JsExpr $ JS.Int 0
165165
166166 Opt.Tuple a b maybeC ->
@@ -269,8 +269,8 @@ generateCtor mode (Opt.Global home name) index arity =
269269
270270 ctorTag =
271271 case mode of
272− Mode.Dev _ _ -> JS.String (Name.toBuilder name)
273− Mode.Prod _ _ -> JS.Int (ctorToInt home name index)
272+ Mode.Dev _ -> JS.String (Name.toBuilder name)
273+ Mode.Prod _ -> JS.Int (ctorToInt home name index)
274274 in
275275 generateFunction argNames $ JsExpr $ JS.Object $
276276 (JsName.dollar, ctorTag) : map (\n -> (n, JS.Ref n)) argNames
@@ -300,10 +300,10 @@ generateRecord mode fields =
300300generateField :: Mode.Mode -> Name.Name -> JsName.Name
301301generateField mode name =
302302 case mode of
303− Mode.Dev _ _ ->
303+ Mode.Dev _ ->
304304 JsName.fromLocal name
305305
306− Mode.Prod _ fields ->
306+ Mode.Prod fields ->
307307 fields ! name
308308
309309
@@ -390,10 +390,10 @@ generateCall mode func args =
390390
391391 Opt.VarBox _ ->
392392 case mode of
393− Mode.Dev _ _ ->
393+ Mode.Dev _ ->
394394 generateCallHelp mode func args
395395
396− Mode.Prod _ _ ->
396+ Mode.Prod _ ->
397397 case args of
398398 [arg] ->
399399 generateJsExpr mode arg
@@ -747,10 +747,10 @@ generatePath mode path =
747747
748748 Opt.Unbox subPath ->
749749 case mode of
750− Mode.Dev _ _ ->
750+ Mode.Dev _ ->
751751 JS.Access (generatePath mode subPath) (JsName.fromIndex Index.first)
752752
753− Mode.Prod _ _ ->
753+ Mode.Prod _ ->
754754 generatePath mode subPath
755755
756756
@@ -876,8 +876,8 @@ generateIfTest mode root (path, test) =
876876 let
877877 tag =
878878 case mode of
879− Mode.Dev _ _ -> JS.Access value JsName.dollar
880− Mode.Prod _ _ ->
879+ Mode.Dev _ -> JS.Access value JsName.dollar
880+ Mode.Prod _ ->
881881 case opts of
882882 Can.Normal -> JS.Access value JsName.dollar
883883 Can.Enum -> value
@@ -885,8 +885,8 @@ generateIfTest mode root (path, test) =
885885 in
886886 strictEq tag $
887887 case mode of
888− Mode.Dev _ _ -> JS.String (Name.toBuilder name)
889− Mode.Prod _ _ -> JS.Int (ctorToInt home name index)
888+ Mode.Dev _ -> JS.String (Name.toBuilder name)
889+ Mode.Prod _ -> JS.Int (ctorToInt home name index)
890890
891891 DT.IsBool True ->
892892 value
@@ -900,8 +900,8 @@ generateIfTest mode root (path, test) =
900900 DT.IsChr char ->
901901 strictEq (JS.String (Utf8.toBuilder char)) $
902902 case mode of
903− Mode.Dev _ _ -> JS.Call (JS.Access value (JsName.fromLocal "valueOf")) []
904− Mode.Prod _ _ -> value
903+ Mode.Dev _ -> JS.Call (JS.Access value (JsName.fromLocal "valueOf")) []
904+ Mode.Prod _ -> value
905905
906906 DT.IsStr string ->
907907 strictEq value (JS.String (Utf8.toBuilder string))
@@ -930,8 +930,8 @@ generateCaseValue mode test =
930930 case test of
931931 DT.IsCtor home name index _ _ ->
932932 case mode of
933− Mode.Dev _ _ -> JS.String (Name.toBuilder name)
934− Mode.Prod _ _ -> JS.Int (ctorToInt home name index)
933+ Mode.Dev _ -> JS.String (Name.toBuilder name)
934+ Mode.Prod _ -> JS.Int (ctorToInt home name index)
935935
936936 DT.IsInt int ->
937937 JS.Int int
@@ -966,10 +966,10 @@ generateCaseTest mode root path exampleTest =
966966 value
967967 else
968968 case mode of
969− Mode.Dev _ _ ->
969+ Mode.Dev _ ->
970970 JS.Access value JsName.dollar
971971
972− Mode.Prod _ _ ->
972+ Mode.Prod _ ->
973973 case opts of
974974 Can.Normal ->
975975 JS.Access value JsName.dollar
@@ -988,10 +988,10 @@ generateCaseTest mode root path exampleTest =
988988
989989 DT.IsChr _ ->
990990 case mode of
991− Mode.Dev _ _ ->
991+ Mode.Dev _ ->
992992 JS.Call (JS.Access value (JsName.fromLocal "valueOf")) []
993993
994− Mode.Prod _ _ ->
994+ Mode.Prod _ ->
995995 value
996996
997997 DT.IsBool _ ->
@@ -1019,10 +1019,10 @@ pathToJsExpr mode root path =
10191019
10201020 DT.Unbox subPath ->
10211021 case mode of
1022− Mode.Dev _ _ ->
1022+ Mode.Dev _ ->
10231023 JS.Access (pathToJsExpr mode root subPath) (JsName.fromIndex Index.first)
10241024
1025− Mode.Prod _ _ ->
1025+ Mode.Prod _ ->
10261026 pathToJsExpr mode root subPath
10271027
10281028 DT.Empty ->
@@ -1056,13 +1056,13 @@ generateMain mode home main =
10561056toDebugMetadata :: Mode.Mode -> Can.Type -> JS.Expr
10571057toDebugMetadata mode msgType =
10581058 case mode of
1059− Mode.Prod _ _ ->
1059+ Mode.Prod _ ->
10601060 JS.Int 0
10611061
1062− Mode.Dev _ Nothing ->
1062+ Mode.Dev Nothing ->
10631063 JS.Int 0
10641064
1065− Mode.Dev _ (Just interfaces) ->
1065+ Mode.Dev (Just interfaces) ->
10661066 JS.Json $ Encode.object $
10671067 [ ("versions", Encode.object [ ("elm", V.encode V.compiler) ])
10681068 , ("types", Type.encodeMetadata (Extract.fromMsg interfaces msgType))
compiler/src/Generate/JavaScript/Mode.hs → compiler/src/Generate/Mode.hsrenamed+10−52
@@ -1,11 +1,8 @@
1−module Generate.JavaScript.Mode
1+module Generate.Mode
22 ( Mode(..)
3− , Target(..)
4− , debug
5− , dev
6− , prod
73 , isDebug
8− , isServer
4+ , ShortFieldNames
5+ , shortenFieldNames
96 )
107 where
118
@@ -16,7 +13,7 @@ import qualified Data.Maybe as Maybe
1613import qualified Data.Name as Name
1714
1815import qualified AST.Optimized as Opt
19−import qualified Elm.Interface as I
16+import qualified Elm.Compiler.Type.Extract as Extract
2017import qualified Generate.JavaScript.Name as JsName
2118
2219
@@ -25,54 +22,15 @@ import qualified Generate.JavaScript.Name as JsName
2522
2623
2724data Mode
28− = Dev Target (Maybe I.Interfaces)
29− | Prod Target ShortFieldNames
30−
31−
32−data Target = Client | Server
33−
34−
35−debug :: Target -> I.Interfaces -> Mode
36−debug target interfaces =
37− Dev target (Just interfaces)
38−
39−
40−dev :: Target -> Mode
41−dev target =
42− Dev target Nothing
43−
44−
45−prod :: Target -> Opt.Graph -> Mode
46−prod target (Opt.Graph _ _ fieldCounts) =
47− Prod target (shortenFieldNames fieldCounts)
48−
49−
50−
51−-- IS DEBUG?
25+ = Dev (Maybe Extract.Types)
26+ | Prod ShortFieldNames
5227
5328
5429isDebug :: Mode -> Bool
5530isDebug mode =
5631 case mode of
57− Dev _ mi -> Maybe.isJust mi
58− Prod _ _ -> False
59−
60−
61−-- IS SERVER?
62−
63−
64−isServer :: Mode -> Bool
65−isServer mode =
66− case mode of
67− Dev target _ -> isServerHelp target
68− Prod target _ -> isServerHelp target
69−
70−
71−isServerHelp :: Target -> Bool
72−isServerHelp target =
73− case target of
74− Client -> False
75− Server -> True
32+ Dev mi -> Maybe.isJust mi
33+ Prod _ -> False
7634
7735
7836
@@ -83,8 +41,8 @@ type ShortFieldNames =
8341 Map.Map Name.Name JsName.Name
8442
8543
86−shortenFieldNames :: Map.Map Name.Name Int -> ShortFieldNames
87−shortenFieldNames frequencies =
44+shortenFieldNames :: Opt.Graph -> ShortFieldNames
45+shortenFieldNames (Opt.Graph _ _ frequencies) =
8846 Map.foldr addToShortNames Map.empty $
8947 Map.foldrWithKey addToBuckets Map.empty frequencies
9048