summaryrefslogtreecommitdiff
path: root/compiler/GHC/Core/Class.hs
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/GHC/Core/Class.hs')
-rw-r--r--compiler/GHC/Core/Class.hs15
1 files changed, 13 insertions, 2 deletions
diff --git a/compiler/GHC/Core/Class.hs b/compiler/GHC/Core/Class.hs
index f5d24aaf3c..57e6defca6 100644
--- a/compiler/GHC/Core/Class.hs
+++ b/compiler/GHC/Core/Class.hs
@@ -8,7 +8,7 @@
module GHC.Core.Class (
Class,
ClassOpItem,
- ClassATItem(..),
+ ClassATItem(..), ATValidityInfo(..),
ClassMinimalDef,
DefMethInfo, pprDefMethInfo,
@@ -97,10 +97,21 @@ type DefMethInfo = Maybe (Name, DefMethSpec Type)
data ClassATItem
= ATI TyCon -- See Note [Associated type tyvar names]
- (Maybe (Type, SrcSpan))
+ (Maybe (Type, ATValidityInfo))
-- Default associated type (if any) from this template
-- Note [Associated type defaults]
+-- | Information about an associated type family default implementation. This
+-- is used solely for validity checking.
+-- See @Note [Type-checking default assoc decls]@ in "GHC.Tc.TyCl".
+data ATValidityInfo
+ = NoATVI -- Used for associated type families that are imported
+ -- from another module, for which we don't need to
+ -- perform any validity checking.
+
+ | ATVI SrcSpan [Type] -- Used for locally defined associated type families.
+ -- The [Type] are the LHS patterns.
+
type ClassMinimalDef = BooleanFormula Name -- Required methods
data ClassBody