\begin{code}
module RnBinds (
rnTopBinds, rnTopMonoBinds,
- rnMethodBinds, renameSigs,
+ rnMethodBinds, renameSigs, renameSigsFVs,
rnBinds,
unknownSigErr
) where
import RnEnv ( bindLocatedLocalsRn, lookupBndrRn,
lookupGlobalOccRn, lookupSigOccRn,
warnUnusedLocalBinds, mapFvRn, extendTyVarEnvFVRn,
- FreeVars, emptyFVs, plusFV, plusFVs, unitFV, addOneFV
)
import CmdLineOpts ( DynFlag(..) )
import Digraph ( stronglyConnComp, SCC(..) )
let
bndr_name_set = mkNameSet binder_names
in
- renameSigs (okBindSig bndr_name_set) sigs `thenRn` \ (siglist, sig_fvs) ->
- doptRn Opt_WarnMissingSigs `thenRn` \ warnMissing ->
+ renameSigsFVs (okBindSig bndr_name_set) sigs `thenRn` \ (siglist, sig_fvs) ->
+ doptRn Opt_WarnMissingSigs `thenRn` \ warnMissing ->
let
type_sig_vars = [n | Sig n _ _ <- siglist]
un_sigd_binders | warnMissing = nameSetToList (delListFromNameSet
binder_set = mkNameSet new_mbinders
in
-- Rename the signatures
- renameSigs (okBindSig binder_set) sigs `thenRn` \ (siglist, sig_fvs) ->
+ renameSigsFVs (okBindSig binder_set) sigs `thenRn` \ (siglist, sig_fvs) ->
-- Report the fixity declarations in this group that
-- don't refer to any of the group's binders.
signatures. We'd only need this if we wanted to report unused tyvars.
\begin{code}
+renameSigsFVs ok_sig sigs
+ = renameSigs ok_sig sigs `thenRn` \ sigs' ->
+ returnRn (sigs', hsSigsFVs sigs')
+
renameSigs :: (RenamedSig -> Bool) -- OK-sig predicate
-> [RdrNameSig]
- -> RnMS ([RenamedSig], FreeVars)
+ -> RnMS [RenamedSig]
-renameSigs ok_sig []
- = returnRn ([], emptyFVs) -- Common shortcut
+renameSigs ok_sig [] = returnRn []
renameSigs ok_sig sigs
= -- Rename the signatures
(goods, bads) = partition ok_sig in_scope
in
mapRn_ unknownSigErr bads `thenRn_`
- returnRn (goods, hsSigFVs goods)
+ returnRn goods
-- We use lookupSigOccRn in the signatures, which is a little bit unsatisfactory
-- because this won't work for: