on master help sign in
Separate out payload and overall type for ports
e76858cEvan Czaplicki
src/AST/Canonical.hs+2−2
@@ -275,8 +275,8 @@ data Effects
275
275
276
276
277data Port
277data Port
278− = Incoming FreeVars Type
278+ = Incoming { _freeVars :: FreeVars, _payload :: Type, _func :: Type }
279− | Outgoing FreeVars Type
279+ | Outgoing { _freeVars :: FreeVars, _payload :: Type, _func :: Type }
280
280
281
281
282data Manager
282data Manager
src/Optimize/Module.hs+4−4
@@ -146,16 +146,16 @@ addEffects home effects graph@(Graph fields nodes) =
146addPort :: ModuleName.Canonical -> N.Name -> Can.Port -> Graph -> Graph
146addPort :: ModuleName.Canonical -> N.Name -> Can.Port -> Graph -> Graph
147addPort home name port_ graph =
147addPort home name port_ graph =
148 case port_ of
148 case port_ of
149− Can.Incoming _ tipe ->
149+ Can.Incoming _ payloadType _ ->
150 let
150 let
151− (deps, fields, decoder) = Names.run (Port.toDecoder tipe)
151+ (deps, fields, decoder) = Names.run (Port.toDecoder payloadType)
152 node = Opt.PortIncoming decoder deps
152 node = Opt.PortIncoming decoder deps
153 in
153 in
154 addToGraph (Opt.Global home name) node fields graph
154 addToGraph (Opt.Global home name) node fields graph
155
155
156− Can.Outgoing _ tipe ->
156+ Can.Outgoing _ payloadType _ ->
157 let
157 let
158− (deps, fields, encoder) = Names.run (Port.toEncoder tipe)
158+ (deps, fields, encoder) = Names.run (Port.toEncoder payloadType)
159 node = Opt.PortOutgoing encoder deps
159 node = Opt.PortOutgoing encoder deps
160 in
160 in
161 addToGraph (Opt.Global home name) node fields graph
161 addToGraph (Opt.Global home name) node fields graph
src/Type/Constrain/Module.hs+2−2
@@ -72,13 +72,13 @@ constrainDecls decls finalConstraint =
72letPort :: N.Name -> Can.Port -> IO Constraint -> IO Constraint
72letPort :: N.Name -> Can.Port -> IO Constraint -> IO Constraint
73letPort name port_ makeConstraint =
73letPort name port_ makeConstraint =
74 case port_ of
74 case port_ of
75− Can.Incoming freeVars srcType ->
75+ Can.Incoming freeVars _ srcType ->
76 do vars <- traverse (\_ -> mkFlexVar) freeVars
76 do vars <- traverse (\_ -> mkFlexVar) freeVars
77 tipe <- Instantiate.fromSrcType (Map.map VarN vars) srcType
77 tipe <- Instantiate.fromSrcType (Map.map VarN vars) srcType
78 let header = Map.singleton name (A.At zero tipe)
78 let header = Map.singleton name (A.At zero tipe)
79 CLet (Map.elems vars) [] header CTrue <$> makeConstraint
79 CLet (Map.elems vars) [] header CTrue <$> makeConstraint
80
80
81− Can.Outgoing freeVars srcType ->
81+ Can.Outgoing freeVars _ srcType ->
82 do vars <- traverse (\_ -> mkFlexVar) freeVars
82 do vars <- traverse (\_ -> mkFlexVar) freeVars
83 tipe <- Instantiate.fromSrcType (Map.map VarN vars) srcType
83 tipe <- Instantiate.fromSrcType (Map.map VarN vars) srcType
84 let header = Map.singleton name (A.At zero tipe)
84 let header = Map.singleton name (A.At zero tipe)