flattenMonoBinds siglist mbinds `thenRn` \ mbinds_info ->
-- Do the SCC analysis
- let edges = mkEdges (mbinds_info `zip` [0..])
+ let edges = mkEdges (mbinds_info `zip` [(0::Int)..])
scc_result = stronglyConnComp edges
final_binds = foldr1 ThenBinds (map reconstructCycle scc_result)
-- Deal with bound and free-var calculation
- rhs_fvs = unionManyNameSets [fvs | (_,_,fvs,_,_) <- mbinds_info]
+ rhs_fvs = unionManyNameSets [fvs | (_,fvs,_,_) <- mbinds_info]
in
returnRn (final_binds, rhs_fvs)
\end{code}
\begin{code}
flattenMonoBinds :: [RenamedSig] -- Signatures
-> RdrNameMonoBinds
- -> RnMS s (Int, [FlatMonoBindsInfo])
+ -> RnMS s [FlatMonoBindsInfo]
flattenMonoBinds sigs EmptyMonoBinds = returnRn []
reconstructCycle :: SCC FlatMonoBindsInfo
-> RenamedHsBinds
-reconstructCycle (AcyclicSCC (_, _, _, binds, sigs))
+reconstructCycle (AcyclicSCC (_, _, binds, sigs))
= MonoBind binds sigs NonRecursive
reconstructCycle (CyclicSCC cycle)
= MonoBind this_gp_binds this_gp_sigs Recursive
where
- this_gp_binds = foldr1 AndMonoBinds [binds | (_, _, _, binds, _) <- cycle]
- this_gp_sigs = foldr1 (++) [sigs | (_, _, _, _, sigs) <- cycle]
+ this_gp_binds = foldr1 AndMonoBinds [binds | (_, _, binds, _) <- cycle]
+ this_gp_sigs = foldr1 (++) [sigs | (_, _, _, sigs) <- cycle]
\end{code}
%************************************************************************
addOneToGlobalNameEnv env rdr_name name
= case lookupFM env rdr_name of
Just name2 | conflicting_name name name2
- -> addNameClashErrRn (rdr_name, (name, name2))) `thenRn_`
+ -> addNameClashErrRn (rdr_name, (name, name2)) `thenRn_`
returnRn env
other -> returnRn (addToFM env rdr_name name)
| otherwise
= addErrRn (hang (hsep [ptext SLIT("Conflicting definitions for"), quotes (ppr rdr_name)])
4 (vcat [ppr how_in_scope1,
- ppr how_in_scope2])
+ ppr how_in_scope2]))
fixityClashErr (rdr_name, ((_,how_in_scope1), (_, how_in_scope2)))
= hang (hsep [ptext SLIT("Conflicting fixities for"), quotes (ppr rdr_name)])