on master help sign in
Fix bug in port encoder generation
0efde80Evan Czaplicki
src/Optimize/Port.hs+2−8
@@ -92,21 +92,15 @@ encodeMaybe tipe =
92encodeList :: Can.Type -> Names.Tracker Opt.Expr
92encodeList :: Can.Type -> Names.Tracker Opt.Expr
93encodeList tipe =
93encodeList tipe =
94 do list <- encode "list"
94 do list <- encode "list"
95− map_ <- Names.registerGlobal ModuleName.list "map"
96 encoder <- toEncoder tipe
95 encoder <- toEncoder tipe
97− return $
98− Opt.Function [N.dollar] $
99− Opt.Call list [ Opt.Call map_ [ encoder, Opt.VarLocal N.dollar ] ]
96+ return $ Opt.Call list [ encoder ]
100
97
101
98
102encodeArray :: Can.Type -> Names.Tracker Opt.Expr
99encodeArray :: Can.Type -> Names.Tracker Opt.Expr
103encodeArray tipe =
100encodeArray tipe =
104 do array <- encode "array"
101 do array <- encode "array"
105− map_ <- Names.registerGlobal ModuleName.array "map"
106 encoder <- toEncoder tipe
102 encoder <- toEncoder tipe
107− return $
108− Opt.Function [N.dollar] $
109− Opt.Call array [ Opt.Call map_ [ encoder, Opt.VarLocal N.dollar ] ]
103+ return $ Opt.Call array [ encoder ]
110
104
111
105
112encodeTuple :: Can.Type -> Can.Type -> Maybe Can.Type -> Names.Tracker Opt.Expr
106encodeTuple :: Can.Type -> Can.Type -> Maybe Can.Type -> Names.Tracker Opt.Expr