The @FamInst@ type: family instance heads
\begin{code}
-{-# OPTIONS -w #-}
--- The above warning supression flag is a temporary kludge.
--- While working on this module you are encouraged to remove it and fix
--- any warnings in the module. See
--- http://hackage.haskell.org/trac/ghc/wiki/CodingStyle#Warnings
--- for details
-
module FamInst (
checkFamInstConsistency, tcExtendLocalFamInstEnv
) where
-#include "HsVersions.h"
-
import HscTypes
import FamInstEnv
import TcMType
import Module
import SrcLoc
import Outputable
-import UniqFM
+import LazyUniqFM
import FiniteMap
+import FastString
import Maybe
import Monad
Nothing -> panic "FamInst.checkForConflicts"
Just (tc, tys) -> tc `mkTyConApp` tys
}
- ; (tvs', _, tau') <- tcInstSkolType FamInstSkol ty
+ ; (_, _, tau') <- tcInstSkolType FamInstSkol ty
; let (fam, tys') = tcSplitTyConApp tau'
rhs1 = substTy subst $ synTyConType tycon1
rhs2 = substTy subst $ synTyConType tycon2
+conflictInstErr :: FamInst -> FamInst -> TcRn ()
conflictInstErr famInst conflictingFamInst
= addFamInstLoc famInst $
- addErr (hang (ptext SLIT("Conflicting family instance declarations:"))
+ addErr (hang (ptext (sLit "Conflicting family instance declarations:"))
2 (pprFamInsts [famInst, conflictingFamInst]))
+addFamInstLoc :: FamInst -> TcRn a -> TcRn a
addFamInstLoc famInst thing_inside
= setSrcSpan (mkSrcSpan loc loc) thing_inside
where