on master help sign in
Fix bug about pattern matching on enums in --optimize
b44956dEvan Czaplicki
compiler/src/Generate/JavaScript/Expression.hs+12−2
@@ -883,8 +883,18 @@ generateIfTest mode root (path, test) =
883 value = pathToJsExpr mode root path
883 value = pathToJsExpr mode root path
884 in
884 in
885 case test of
885 case test of
886− DT.IsCtor home name index _ _ ->
886+ DT.IsCtor home name index _ opts ->
887− strictEq (JS.Access value Name.dollar) $
887+ let
888+ tag =
889+ case mode of
890+ Mode.Dev _ _ -> JS.Access value Name.dollar
891+ Mode.Prod _ _ ->
892+ case opts of
893+ Can.Normal -> JS.Access value Name.dollar
894+ Can.Enum -> value
895+ Can.Unbox -> value
896+ in
897+ strictEq tag $
888 case mode of
898 case mode of
889 Mode.Dev _ _ -> JS.String (N.toBuilder name)
899 Mode.Dev _ _ -> JS.String (N.toBuilder name)
890 Mode.Prod _ _ -> JS.Int (ctorToInt home name index)
900 Mode.Prod _ _ -> JS.Int (ctorToInt home name index)