@@ -29,8 +29,8 @@ import qualified Elm.Version as V
29import qualified Elm.ModuleName as ModuleName
29import qualified Elm.ModuleName as ModuleName
30import qualified Elm.Package as Pkg
30import qualified Elm.Package as Pkg
31import qualified Generate.JavaScript.Builder as JS
31import qualified Generate.JavaScript.Builder as JS
32−import qualified Generate.JavaScript.Mode as Mode
33import qualified Generate.JavaScript.Name as JsName
32import qualified Generate.JavaScript.Name as JsName
33+import qualified Generate.Mode as Mode
34import qualified Json.Encode as Encode
34import qualified Json.Encode as Encode
35import qualified Optimize.DecisionTree as DT
35import qualified Optimize.DecisionTree as DT
36import qualified Reporting.Annotation as A
36import qualified Reporting.Annotation as A
@@ -54,10 +54,10 @@ generate mode expression =
54 Opt.Chr char ->
54 Opt.Chr char ->
56 case mode of
56 case mode of
57− Mode.Dev _ _ ->
57+ Mode.Dev _ ->
58 JS.Call toChar [ JS.String (Utf8.toBuilder char) ]
58 JS.Call toChar [ JS.String (Utf8.toBuilder char) ]
60− Mode.Prod _ _ ->
60+ Mode.Prod _ ->
61 JS.String (Utf8.toBuilder char)
61 JS.String (Utf8.toBuilder char)
63 Opt.Str string ->
63 Opt.Str string ->
@@ -77,17 +77,17 @@ generate mode expression =
78 Opt.VarEnum (Opt.Global home name) index ->
78 Opt.VarEnum (Opt.Global home name) index ->
79 case mode of
79 case mode of
80− Mode.Dev _ _ ->
80+ Mode.Dev _ ->
81 JsExpr $ JS.Ref (JsName.fromGlobal home name)
81 JsExpr $ JS.Ref (JsName.fromGlobal home name)
83− Mode.Prod _ _ ->
83+ Mode.Prod _ ->
84 JsExpr $ JS.Int (Index.toMachine index)
84 JsExpr $ JS.Int (Index.toMachine index)
86 Opt.VarBox (Opt.Global home name) ->
86 Opt.VarBox (Opt.Global home name) ->
87 JsExpr $ JS.Ref $
87 JsExpr $ JS.Ref $
88 case mode of
88 case mode of
89− Mode.Dev _ _ -> JsName.fromGlobal home name
89+ Mode.Dev _ -> JsName.fromGlobal home name
90− Mode.Prod _ _ -> JsName.fromGlobal ModuleName.basics Name.identity
90+ Mode.Prod _ -> JsName.fromGlobal ModuleName.basics Name.identity
92 Opt.VarCycle home name ->
92 Opt.VarCycle home name ->
93 JsExpr $ JS.Call (JS.Ref (JsName.fromCycle home name)) []
93 JsExpr $ JS.Call (JS.Ref (JsName.fromCycle home name)) []
@@ -157,10 +157,10 @@ generate mode expression =
158 Opt.Unit ->
158 Opt.Unit ->
159 case mode of
159 case mode of
160− Mode.Dev _ _ ->
160+ Mode.Dev _ ->
161 JsExpr $ JS.Ref (JsName.fromKernel Name.utils "Tuple0")
161 JsExpr $ JS.Ref (JsName.fromKernel Name.utils "Tuple0")
163− Mode.Prod _ _ ->
163+ Mode.Prod _ ->
164 JsExpr $ JS.Int 0
164 JsExpr $ JS.Int 0
166 Opt.Tuple a b maybeC ->
166 Opt.Tuple a b maybeC ->
@@ -269,8 +269,8 @@ generateCtor mode (Opt.Global home name) index arity =
270 ctorTag =
270 ctorTag =
271 case mode of
271 case mode of
272− Mode.Dev _ _ -> JS.String (Name.toBuilder name)
272+ Mode.Dev _ -> JS.String (Name.toBuilder name)
273− Mode.Prod _ _ -> JS.Int (ctorToInt home name index)
273+ Mode.Prod _ -> JS.Int (ctorToInt home name index)
275 generateFunction argNames $ JsExpr $ JS.Object $
275 generateFunction argNames $ JsExpr $ JS.Object $
276 (JsName.dollar, ctorTag) : map (\n -> (n, JS.Ref n)) argNames
276 (JsName.dollar, ctorTag) : map (\n -> (n, JS.Ref n)) argNames
@@ -300,10 +300,10 @@ generateRecord mode fields =
300generateField :: Mode.Mode -> Name.Name -> JsName.Name
300generateField :: Mode.Mode -> Name.Name -> JsName.Name
301generateField mode name =
301generateField mode name =
302 case mode of
302 case mode of
303− Mode.Dev _ _ ->
303+ Mode.Dev _ ->
304 JsName.fromLocal name
304 JsName.fromLocal name
306− Mode.Prod _ fields ->
306+ Mode.Prod fields ->
307 fields ! name
307 fields ! name
@@ -390,10 +390,10 @@ generateCall mode func args =
391 Opt.VarBox _ ->
391 Opt.VarBox _ ->
392 case mode of
392 case mode of
393− Mode.Dev _ _ ->
393+ Mode.Dev _ ->
394 generateCallHelp mode func args
394 generateCallHelp mode func args
396− Mode.Prod _ _ ->
396+ Mode.Prod _ ->
397 case args of
397 case args of
399 generateJsExpr mode arg
399 generateJsExpr mode arg
@@ -747,10 +747,10 @@ generatePath mode path =
748 Opt.Unbox subPath ->
748 Opt.Unbox subPath ->
749 case mode of
749 case mode of
750− Mode.Dev _ _ ->
750+ Mode.Dev _ ->
751 JS.Access (generatePath mode subPath) (JsName.fromIndex Index.first)
751 JS.Access (generatePath mode subPath) (JsName.fromIndex Index.first)
753− Mode.Prod _ _ ->
753+ Mode.Prod _ ->
754 generatePath mode subPath
754 generatePath mode subPath
@@ -876,8 +876,8 @@ generateIfTest mode root (path, test) =
878 case mode of
878 case mode of
879− Mode.Dev _ _ -> JS.Access value JsName.dollar
879+ Mode.Dev _ -> JS.Access value JsName.dollar
880− Mode.Prod _ _ ->
880+ Mode.Prod _ ->
881 case opts of
881 case opts of
882 Can.Normal -> JS.Access value JsName.dollar
882 Can.Normal -> JS.Access value JsName.dollar
883 Can.Enum -> value
883 Can.Enum -> value
@@ -885,8 +885,8 @@ generateIfTest mode root (path, test) =
886 strictEq tag $
886 strictEq tag $
887 case mode of
887 case mode of
888− Mode.Dev _ _ -> JS.String (Name.toBuilder name)
888+ Mode.Dev _ -> JS.String (Name.toBuilder name)
889− Mode.Prod _ _ -> JS.Int (ctorToInt home name index)
889+ Mode.Prod _ -> JS.Int (ctorToInt home name index)
891 DT.IsBool True ->
891 DT.IsBool True ->
@@ -900,8 +900,8 @@ generateIfTest mode root (path, test) =
900 DT.IsChr char ->
900 DT.IsChr char ->
901 strictEq (JS.String (Utf8.toBuilder char)) $
901 strictEq (JS.String (Utf8.toBuilder char)) $
902 case mode of
902 case mode of
903− Mode.Dev _ _ -> JS.Call (JS.Access value (JsName.fromLocal "valueOf")) []
903+ Mode.Dev _ -> JS.Call (JS.Access value (JsName.fromLocal "valueOf")) []
904− Mode.Prod _ _ -> value
904+ Mode.Prod _ -> value
906 DT.IsStr string ->
906 DT.IsStr string ->
907 strictEq value (JS.String (Utf8.toBuilder string))
907 strictEq value (JS.String (Utf8.toBuilder string))
@@ -930,8 +930,8 @@ generateCaseValue mode test =
930 case test of
930 case test of
931 DT.IsCtor home name index _ _ ->
931 DT.IsCtor home name index _ _ ->
932 case mode of
932 case mode of
933− Mode.Dev _ _ -> JS.String (Name.toBuilder name)
933+ Mode.Dev _ -> JS.String (Name.toBuilder name)
934− Mode.Prod _ _ -> JS.Int (ctorToInt home name index)
934+ Mode.Prod _ -> JS.Int (ctorToInt home name index)
936 DT.IsInt int ->
936 DT.IsInt int ->
937 JS.Int int
937 JS.Int int
@@ -966,10 +966,10 @@ generateCaseTest mode root path exampleTest =
968 case mode of
968 case mode of
969− Mode.Dev _ _ ->
969+ Mode.Dev _ ->
970 JS.Access value JsName.dollar
970 JS.Access value JsName.dollar
972− Mode.Prod _ _ ->
972+ Mode.Prod _ ->
973 case opts of
973 case opts of
974 Can.Normal ->
974 Can.Normal ->
975 JS.Access value JsName.dollar
975 JS.Access value JsName.dollar
@@ -988,10 +988,10 @@ generateCaseTest mode root path exampleTest =
989 DT.IsChr _ ->
989 DT.IsChr _ ->
990 case mode of
990 case mode of
991− Mode.Dev _ _ ->
991+ Mode.Dev _ ->
992 JS.Call (JS.Access value (JsName.fromLocal "valueOf")) []
992 JS.Call (JS.Access value (JsName.fromLocal "valueOf")) []
994− Mode.Prod _ _ ->
994+ Mode.Prod _ ->
997 DT.IsBool _ ->
997 DT.IsBool _ ->
@@ -1019,10 +1019,10 @@ pathToJsExpr mode root path =
1020 DT.Unbox subPath ->
1020 DT.Unbox subPath ->
1021 case mode of
1021 case mode of
1022− Mode.Dev _ _ ->
1022+ Mode.Dev _ ->
1023 JS.Access (pathToJsExpr mode root subPath) (JsName.fromIndex Index.first)
1023 JS.Access (pathToJsExpr mode root subPath) (JsName.fromIndex Index.first)
1025− Mode.Prod _ _ ->
1025+ Mode.Prod _ ->
1026 pathToJsExpr mode root subPath
1026 pathToJsExpr mode root subPath
1028 DT.Empty ->
1028 DT.Empty ->
@@ -1056,13 +1056,13 @@ generateMain mode home main =
1056toDebugMetadata :: Mode.Mode -> Can.Type -> JS.Expr
1056toDebugMetadata :: Mode.Mode -> Can.Type -> JS.Expr
1057toDebugMetadata mode msgType =
1057toDebugMetadata mode msgType =
1058 case mode of
1058 case mode of
1059− Mode.Prod _ _ ->
1059+ Mode.Prod _ ->
1060 JS.Int 0
1060 JS.Int 0
1062− Mode.Dev _ Nothing ->
1062+ Mode.Dev Nothing ->
1063 JS.Int 0
1063 JS.Int 0
1065− Mode.Dev _ (Just interfaces) ->
1065+ Mode.Dev (Just interfaces) ->
1066 JS.Json $ Encode.object $
1066 JS.Json $ Encode.object $
1067 [ ("versions", Encode.object [ ("elm", V.encode V.compiler) ])
1067 [ ("versions", Encode.object [ ("elm", V.encode V.compiler) ])
1068 , ("types", Type.encodeMetadata (Extract.fromMsg interfaces msgType))
1068 , ("types", Type.encodeMetadata (Extract.fromMsg interfaces msgType))