on 17618de help sign in
elk/src/AST/Effects.hs
68 lines 995 B history raw
1module AST.Effects where
3import qualified AST.Type as Type
4import qualified Elm.Package as Pkg
5import qualified Reporting.Annotation as A
6import qualified Reporting.Region as R
10-- EFFECTS
13data Effects pkg ports
14 = None
15 | Manager pkg Info
16 | Port ports
19type Raw =
20 Effects () [A.Commented PortRaw]
23type Canonical =
24 Effects Pkg.Name [A.Commented PortCanonical]
28-- EFFECT MANAGERS
31data Info =
32 Info
33 { _tag :: R.Region
34 , _init :: R.Region
35 , _onEffects :: R.Region
36 , _onSelfMsg :: R.Region
37 , _managerType :: ManagerType
38 }
41data ManagerType
42 = CmdManager (A.Located String)
43 | SubManager (A.Located String)
44 | FxManager (A.Located String) (A.Located String)
48-- FOREIGN EFFECTS
51data PortRaw =
52 PortRaw
53 { _rawName :: String
54 , _rawType :: Type.Raw
55 }
58data PortCanonical =
59 PortCanonical
60 { _name :: String
61 , _kind :: Kind
62 , _type :: Type.Canonical
63 }
66data Kind
67 = Outgoing Type.Canonical
68 | Incoming Type.Canonical