Skip to content
Snippets Groups Projects
Commit c3446000 authored by Simon Marlow's avatar Simon Marlow
Browse files

[project @ 1998-02-10 17:14:23 by simonm]

fixes for errors in last commit.
parent d3e697b8
No related merge requests found
......@@ -63,6 +63,8 @@ import Util ( thenCmp )
import HsPragmas ( GenPragmas, ClassPragmas, DataPragmas, ClassOpPragmas, InstancePragmas )
import List ( nub )
import Outputable
import Char ( isUpper )
\end{code}
\begin{code}
......
......@@ -266,12 +266,12 @@ rn_mono_binds top_lev binders mbinds sigs
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}
......@@ -282,7 +282,7 @@ unique ``vertex tags'' on its output; minor plumbing required.
\begin{code}
flattenMonoBinds :: [RenamedSig] -- Signatures
-> RdrNameMonoBinds
-> RnMS s (Int, [FlatMonoBindsInfo])
-> RnMS s [FlatMonoBindsInfo]
flattenMonoBinds sigs EmptyMonoBinds = returnRn []
......@@ -387,14 +387,14 @@ as the two cases are similar.
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}
%************************************************************************
......
......@@ -473,7 +473,7 @@ addOneToGlobalNameEnv :: GlobalNameEnv -> RdrName -> (Name, HowInScope) -> RnM s
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)
......@@ -713,7 +713,7 @@ addNameClashErrRn (rdr_name, ((_,how_in_scope1), (_, how_in_scope2)))
| 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)])
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment