+\begin{code}
+rnFds :: SDoc -> [([RdrName],[RdrName])] -> RnMS ([([Name],[Name])], FreeVars)
+
+rnFds doc fds
+ = mapAndUnzipRn rn_fds fds `thenRn` \ (theta, fvs_s) ->
+ returnRn (theta, plusFVs fvs_s)
+ where
+ rn_fds (tys1, tys2)
+ = rnHsTyVars doc tys1 `thenRn` \ (tys1', fvs1) ->
+ rnHsTyVars doc tys2 `thenRn` \ (tys2', fvs2) ->
+ returnRn ((tys1', tys2'), fvs1 `plusFV` fvs2)
+
+rnHsTyVars doc tvs = mapFvRn (rnHsTyvar doc) tvs
+rnHsTyvar doc tyvar
+ = lookupOccRn tyvar `thenRn` \ tyvar' ->
+ returnRn (tyvar', unitFV tyvar')
+\end{code}