on master help sign in
Properly generate AST.Optimized nodes for Ctors

Now it handles unboxing and enums!

commit83e18b35e37bf33ca4fa3c6e9d4c7a71c37862ea authorEvan Czaplicki <evancz@users.noreply.github.com> dateMon 29 Jan 2018, 23:12 (9 years ago) parent14fc72d
1 file changed+12−5
src/Optimize/Module.hs+12−5
src/Optimize/Module.hs+12−5
@@ -64,13 +64,20 @@ addUnions home unions (Opt.Graph mains nodes fields) =
6464
6565
6666addUnion :: ModuleName.Canonical -> Can.Union -> Nodes -> Nodes
67−addUnion home (Can.Union _ ctors _ _) nodes =
68− List.foldl' (addCtorNode home) nodes ctors
67+addUnion home (Can.Union _ ctors _ opts) nodes =
68+ List.foldl' (addCtorNode home opts) nodes ctors
6969
7070
71−addCtorNode :: ModuleName.Canonical -> Nodes -> Can.Ctor -> Nodes
72−addCtorNode home nodes (Can.Ctor name index numArgs _) =
73− Map.insert (Opt.Global home name) (Opt.Ctor name index numArgs) nodes
71+addCtorNode :: ModuleName.Canonical -> Can.CtorOpts -> Nodes -> Can.Ctor -> Nodes
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
80+ Map.insert (Opt.Global home name) node nodes
7481
7582
7683