-Here the inner binding for 'f' simply shadows the outer one.
-And that applies even if the binding for 'f' is in a where-clause,
-and hence is in the *local* RdrEnv not the *global* RdrEnv.
+When renaming the declarations inside [d| ...|], we treat the
+top level binders specially in two ways
+
+1. We give them an Internal name, not (as usual) an External one.
+ Otherwise the NameCache gets confused by a second allocation of
+ M.f. (We used to invent a fake module ThFake to avoid this, but
+ that had other problems, notably in getting the correct answer for
+ nameIsLocalOrFrom in lookupFixity. So we now leave tcg_module
+ unaffected.)
+
+2. We make them *shadow* the outer bindings. If we don't do that,
+ we'll get a complaint when extending the GlobalRdrEnv, saying that
+ there are two bindings for 'f'.
+
+ This shadowing applies even if the binding for 'f' is in a
+ where-clause, and hence is in the *local* RdrEnv not the *global*
+ RdrEnv.