on master help sign in
Properly generate AST.Optimized nodes for Ctors
83e18b3Evan Czaplicki
src/Optimize/Module.hs+12−5
@@ -64,13 +64,20 @@ addUnions home unions (Opt.Graph mains nodes fields) =
64
64
65
65
66addUnion :: ModuleName.Canonical -> Can.Union -> Nodes -> Nodes
66addUnion :: ModuleName.Canonical -> Can.Union -> Nodes -> Nodes
67−addUnion home (Can.Union _ ctors _ _) nodes =
67+addUnion home (Can.Union _ ctors _ opts) nodes =
68− List.foldl' (addCtorNode home) nodes ctors
68+ List.foldl' (addCtorNode home opts) nodes ctors
69
69
70
70
71−addCtorNode :: ModuleName.Canonical -> Nodes -> Can.Ctor -> Nodes
71+addCtorNode :: ModuleName.Canonical -> Can.CtorOpts -> Nodes -> Can.Ctor -> Nodes
72−addCtorNode home nodes (Can.Ctor name index numArgs _) =
72+addCtorNode home opts nodes (Can.Ctor name index numArgs _) =
73+ let
74+ node =
75+ case opts of
76+ Can.Normal -> Opt.Ctor name index numArgs
77+ Can.Unbox -> Opt.Box name
78+ Can.Enum -> Opt.Enum name index
79+ in
73− Map.insert (Opt.Global home name) (Opt.Ctor name index numArgs) nodes
80+ Map.insert (Opt.Global home name) node nodes
74
81
75
82
76
83