Not having SCCs at the top level is becoming annoying real quick. For simplest
cases, it's possible to do this transformation:
f x y = ... => f = {-# SCC f #-} \x y -> ...
However, it doesn't work when there's a where clause:
f x y = <t is in scope> where t = ... => f = {-# SCC f #-} \x y -> <t is out of scope> where t = ...
Or when we have a "equation style" definition:
f (C1 ...) = ... f (C2 ...) = ... f (C3 ...) = ... ...
(usual solution is to rename f to f' and define a new f with a SCC)
This patch implements support for SCC annotations in declaration contexts. This
is now a valid program:
f x y = ... where g z = ... {-# SCC g #-} {-# SCC f #-}