@@ -120,18 +120,20 @@ reorder lexpr@(L s expr) =
120120 mapM free (ctors pattern)
121121
122122 let addDefs ds bod = L s (Let (concatMap toDefs ds) bod)
123− where
124− toDefs (pattern, expr, Nothing) = [ Def pattern expr ]
125− toDefs (PVar name, expr, Just tipe) =
126− [ TypeAnnotation name tipe, Def (PVar name) expr ]
127− -- This case really shouldn't happen since we've
128− -- removed everything but Def's and PVars above.
129− toDefs (_,_,_) = error "The impossible occurred. Please report an issue at https://github.com/evancz/Elm/issues describing what led to this error message."
130−
131123 L _ let' = foldr addDefs body' defss
132124
133125 return let'
134126
127+ where
128+ toDefs def =
129+ case def of
130+ (pattern, expr, Nothing) -> [ Def pattern expr ]
131+ (PVar name, expr, Just tipe) ->
132+ [ TypeAnnotation name tipe, Def (PVar name) expr ]
133+ _ -> error $ unlines
134+ [ "The impossible occurred."
135+ , "Please report an issue at <https://github.com/evancz/Elm/issues>."
136+ , "Be very descriptive because something quite weird probably happened." ]
135137
136138reorderField (label, expr) =
137139 (,) label `liftM` reorder expr