on master help sign in
Add "pkg" field to effect managers

This will help elm-reactor know if it can deal with your project or not

commitf24673b69ff7ff86384bd61e15764eec8b17c552 authorEvan Czaplicki <info@elm-lang.org> dateMon 11 Apr 2016, 16:46 (11 years ago) parentdf2ec9b
8 files changed+30−20
src/AST/Effects.hs+5−4 src/Canonicalize/Body.hs+1−1 src/Canonicalize/Effects.hs+3−3 src/Canonicalize/Environment.hs+7 src/Canonicalize/Setup.hs+1−1 src/Generate/JavaScript.hs+11−9 src/Type/Constrain/Effects.hs+1−1 src/Validate.hs+1−1
src/AST/Effects.hs+5−4
@@ -1,6 +1,7 @@
11module AST.Effects where
22
33import qualified AST.Type as Type
4+import qualified Elm.Package as Pkg
45import qualified Reporting.Annotation as A
56import qualified Reporting.Region as R
67
@@ -9,18 +10,18 @@ import qualified Reporting.Region as R
910-- EFFECTS
1011
1112
12−data Effects foreigns
13+data Effects pkg foreigns
1314 = None
14− | Manager Info
15+ | Manager pkg Info
1516 | Foreign foreigns
1617
1718
1819type Raw =
19− Effects [A.Commented ForeignRaw]
20+ Effects () [A.Commented ForeignRaw]
2021
2122
2223type Canonical =
23− Effects [A.Commented ForeignCanonical]
24+ Effects Pkg.Name [A.Commented ForeignCanonical]
2425
2526
2627
src/Canonicalize/Body.hs+1−1
@@ -123,7 +123,7 @@ effectsToDefs moduleName effects =
123123 Effects.Foreign foreigns ->
124124 map foreignToDef foreigns
125125
126− Effects.Manager info ->
126+ Effects.Manager _ info ->
127127 let
128128 cmdToDef (A.A region name) =
129129 definition
src/Canonicalize/Effects.hs+3−3
@@ -25,7 +25,7 @@ toValues effects =
2525 Effects.None ->
2626 []
2727
28− Effects.Manager _ ->
28+ Effects.Manager _ _ ->
2929 []
3030
3131 Effects.Foreign foreigns ->
@@ -42,8 +42,8 @@ canonicalize env effects =
4242 Effects.None ->
4343 Result.ok Effects.None
4444
45− Effects.Manager info ->
46− Result.ok (Effects.Manager info)
45+ Effects.Manager _ info ->
46+ Result.ok (Effects.Manager (Env.getPackage env) info)
4747
4848 Effects.Foreign rawForeigns ->
4949 Effects.Foreign <$> T.traverse (canonicalizeRawForeign env) rawForeigns
src/Canonicalize/Environment.hs+7
@@ -1,6 +1,7 @@
11{-# OPTIONS_GHC -Wall #-}
22module Canonicalize.Environment
33 ( Environment(..)
4+ , getPackage
45 , insert
56 , Patch(..), fromPatches, addPattern
67 , builtinPatches
@@ -17,6 +18,7 @@ import qualified AST.Module.Name as ModuleName
1718import qualified AST.Pattern as P
1819import qualified AST.Type as Type
1920import qualified AST.Variable as Var
21+import qualified Elm.Package as Pkg
2022
2123
2224
@@ -50,6 +52,11 @@ addPattern pattern env =
5052 addPatches patches env
5153
5254
55+getPackage :: Environment -> Pkg.Name
56+getPackage env =
57+ ModuleName._package (_home env)
58+
59+
5360
5461-- PATCHES
5562
src/Canonicalize/Setup.hs+1−1
@@ -375,7 +375,7 @@ effectsToPatches moduleName effects =
375375 in
376376 map toPatch foreigns
377377
378− Effects.Manager info ->
378+ Effects.Manager _ info ->
379379 map (\name -> Env.Value name (Var.topLevel moduleName name)) $
380380 case Effects._managerType info of
381381 Effects.CmdManager _ ->
src/Generate/JavaScript.hs+11−9
@@ -7,6 +7,7 @@ import qualified Language.ECMAScript3.Syntax as JS
77import qualified AST.Effects as Effects
88import qualified AST.Module as Module
99import qualified AST.Module.Name as ModuleName
10+import qualified Elm.Package as Pkg
1011import qualified Generate.JavaScript.Builder as Builder
1112import qualified Generate.JavaScript.Expression as JS
1213import qualified Generate.JavaScript.Helpers as JS
@@ -44,7 +45,7 @@ generateEffectManager moduleName effects =
4445 Effects.Foreign _ ->
4546 []
4647
47− Effects.Manager (Effects.Info _ _ _ _ managerType) ->
48+ Effects.Manager pkgName (Effects.Info _ _ _ _ managerType) ->
4849 let
4950 managers =
5051 Var.native (ModuleName.inCore ["Native","Platform"]) "globalManagerInfo"
@@ -58,7 +59,8 @@ generateEffectManager moduleName effects =
5859 )
5960
6061 managerEntries =
61− [ entry "init"
62+ [ "pkg" ==> Pkg.toString pkgName
63+ , entry "init"
6264 , entry "onEffects"
6365 , entry "onSelfMsg"
6466 ]
@@ -66,13 +68,13 @@ generateEffectManager moduleName effects =
6668 otherEntries =
6769 case managerType of
6870 Effects.CmdManager _ ->
69− [ tagEntry "cmd", entry "cmdMap" ]
71+ [ "tag" ==> "cmd", entry "cmdMap" ]
7072
7173 Effects.SubManager _ ->
72− [ tagEntry "sub", entry "subMap" ]
74+ [ "tag" ==> "sub", entry "subMap" ]
7375
7476 Effects.FxManager _ _ ->
75− [ tagEntry "fx", entry "cmdMap", entry "subMap" ]
77+ [ "tag" ==> "fx", entry "cmdMap", entry "subMap" ]
7678
7779 addManager =
7880 JS.AssignExpr () JS.OpAssign
@@ -82,8 +84,8 @@ generateEffectManager moduleName effects =
8284 [ JS.ExprStmt () addManager ]
8385
8486
85−tagEntry :: String -> ( JS.Prop (), JS.Expression () )
86−tagEntry tag =
87− ( JS.PropId () (JS.Id () "tag")
88− , JS.StringLit () tag
87+(==>) :: String -> String -> ( JS.Prop (), JS.Expression () )
88+(==>) key value =
89+ ( JS.PropId () (JS.Id () key)
90+ , JS.StringLit () value
8991 )
src/Type/Constrain/Effects.hs+1−1
@@ -27,7 +27,7 @@ constrain env moduleName effects =
2727 Effects.Foreign _ ->
2828 return CSaveEnv
2929
30− Effects.Manager info ->
30+ Effects.Manager _ info ->
3131 constrainHelp env moduleName info
3232
3333
src/Validate.hs+1−1
@@ -102,7 +102,7 @@ validateEffects tag settings@(A.A _ pairs) foreigns validDefs =
102102 do noForeigns foreigns
103103 managerType <- toManagerType tagRegion settingsDict
104104 (r0, r1, r2) <- checkManager tagRegion managerType validDefs
105− return (Effects.Manager (Effects.Info tagRegion r0 r1 r2 managerType))
105+ return (Effects.Manager () (Effects.Info tagRegion r0 r1 r2 managerType))
106106
107107
108108noSettings :: Error.Error -> Module.SourceSettings -> Result wrn ()