import VarEnv
import TysPrim
import Id
-import IdInfo
-import Var hiding (mkLocalId)
+import Var
import Name
import NameSet
import NameEnv
where
tc_boot_sig (TypeSig (L _ name) ty)
= do { sigma_ty <- tcHsSigType (FunSigCtxt name) ty
- ; return (mkVanillaGlobal name sigma_ty vanillaIdInfo) }
+ ; return (mkVanillaGlobal name sigma_ty) }
-- Notice that we make GlobalIds, not LocalIds
tc_boot_sig s = pprPanic "tcHsBootSigs/tc_boot_sig" (ppr s)
tcHsBootSigs groups = pprPanic "tcHsBootSigs" (ppr groups)
-- group at once; an earlier one may use a later one!
do { traceTc (text "tc_group rec" <+> pprLHsBinds binds)
; (binds1,thing) <- bindLocalInsts top_lvl $
- go (stronglyConnComp (mkEdges sig_fn binds))
+ go (stronglyConnCompFromEdgedVertices (mkEdges sig_fn binds))
; return ([(Recursive, unionManyBags binds1)], thing) }
-- Rec them all together
where
tcLhs sig_fn (PatBind { pat_lhs = pat, pat_rhs = grhss })
= do { mb_sigs <- mapM (tcInstSig_maybe sig_fn) names
; mono_pat_binds <- doptM Opt_MonoPatBinds
- -- With -fmono-pat-binds, we do no generalisation of pattern bindings
+ -- With -XMonoPatBinds, we do no generalisation of pattern bindings
-- But the signature can still be polymoprhic!
-- data T = MkT (forall a. a->a)
-- x :: forall a. a->a
-- MkT x = <rhs>
-- The function get_sig_ty decides whether the pattern-bound variables
- -- should have exactly the type in the type signature (-fmono-pat-binds),
- -- or the instantiated version (-fmono-pat-binds)
+ -- should have exactly the type in the type signature (-XMonoPatBinds),
+ -- or the instantiated version (-XMonoPatBinds)
; let nm_sig_prs = names `zip` mb_sigs
get_sig_ty | mono_pat_binds = idType . sig_id
<+> ptext (sLit "is unified with another quantified type variable")
<+> quotes (ppr tidy_tv2)
; failWithTcM (env2, msg) }
- where
\end{code}