summaryrefslogtreecommitdiff
path: root/compiler/typecheck/TcRnDriver.hs
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/typecheck/TcRnDriver.hs')
-rw-r--r--compiler/typecheck/TcRnDriver.hs7
1 files changed, 4 insertions, 3 deletions
diff --git a/compiler/typecheck/TcRnDriver.hs b/compiler/typecheck/TcRnDriver.hs
index 107162b31f..dafc4b8636 100644
--- a/compiler/typecheck/TcRnDriver.hs
+++ b/compiler/typecheck/TcRnDriver.hs
@@ -999,7 +999,7 @@ checkBootTyCon is_boot tc1 tc2
check (roles1 == roles2) roles_msg `andThenCheck`
check (eqTypeX env syn_rhs1 syn_rhs2) empty -- nothing interesting to say
- -- A skolem abstract TyCon can be implemented using a type synonym, but ONLY
+ -- An abstract TyCon can be implemented using a type synonym, but ONLY
-- if the type synonym is nullary and has no type family applications.
-- This arises from two properties of skolem abstract data:
--
@@ -1011,7 +1011,8 @@ checkBootTyCon is_boot tc1 tc2
--
-- See also 'HowAbstract' and Note [Skolem abstract data].
--
- | isSkolemAbstractTyCon tc1
+ | isAbstractTyCon tc1
+ , not is_boot -- don't support for hs-boot yet
, Just (tvs, ty) <- synTyConDefn_maybe tc2
, Just (tc2', args) <- tcSplitTyConApp_maybe ty
= check (null (tcTyFamInsts ty))
@@ -1117,7 +1118,7 @@ checkBootTyCon is_boot tc1 tc2
(text "Roles on abstract types default to" <+>
quotes (text "representational") <+> text "in boot files.")
- eqAlgRhs _ (AbstractTyCon _) _rhs2
+ eqAlgRhs _ AbstractTyCon _rhs2
= checkSuccess -- rhs2 is guaranteed to be injective, since it's an AlgTyCon
eqAlgRhs _ tc1@DataTyCon{} tc2@DataTyCon{} =
checkListBy eqCon (data_cons tc1) (data_cons tc2) (text "constructors")