From 8d82524d9d9b278eae08993c2d4c54173d68481c Mon Sep 17 00:00:00 2001 From: Mateusz Kowalczyk Date: Tue, 4 Nov 2014 01:16:20 +0000 Subject: Fix re-exports of built-in type families Fixes #310 --- CHANGES | 2 + haddock-api/src/Haddock/Convert.hs | 11 +++-- html-test/ref/Bug310.html | 89 ++++++++++++++++++++++++++++++++++++++ html-test/src/Bug310.hs | 4 ++ 4 files changed, 102 insertions(+), 4 deletions(-) create mode 100644 html-test/ref/Bug310.html create mode 100644 html-test/src/Bug310.hs diff --git a/CHANGES b/CHANGES index 352a739b..3a08424c 100644 --- a/CHANGES +++ b/CHANGES @@ -8,6 +8,8 @@ Changes in version 2.15.1 This is to disambiguate them from markdown links and will be require with a future release. + * Fix re-exports of built-in type families (#310) + Changes in version 2.15.0 * Always read in prologue files as UTF8 (#286 and Cabal #1721) diff --git a/haddock-api/src/Haddock/Convert.hs b/haddock-api/src/Haddock/Convert.hs index 610e8fc6..ff7ca560 100644 --- a/haddock-api/src/Haddock/Convert.hs +++ b/haddock-api/src/Haddock/Convert.hs @@ -136,6 +136,7 @@ synifyAxiom ax@(CoAxiom { co_ax_tc = tc }) | otherwise = error "synifyAxiom: closed/open family confusion" +-- | Turn type constructors into type class declarations synifyTyCon :: Maybe (CoAxiom br) -> TyCon -> TyClDecl Name synifyTyCon coax tc | isFunTyCon tc || isPrimTyCon tc @@ -163,10 +164,12 @@ synifyTyCon coax tc = case synTyConRhs_maybe tc of Just rhs -> let info = case rhs of - OpenSynFamilyTyCon -> OpenTypeFamily - ClosedSynFamilyTyCon (CoAxiom { co_ax_branches = branches }) -> - ClosedTypeFamily (brListMap (noLoc . synifyAxBranch tc) branches) - _ -> error "synifyTyCon: type/data family confusion" + OpenSynFamilyTyCon -> OpenTypeFamily + ClosedSynFamilyTyCon (CoAxiom { co_ax_branches = branches }) -> + ClosedTypeFamily (brListMap (noLoc . synifyAxBranch tc) branches) + BuiltInSynFamTyCon {} -> ClosedTypeFamily [] + AbstractClosedSynFamilyTyCon {} -> ClosedTypeFamily [] + _ -> error "synifyTyCon: type/data family confusion" in FamDecl (FamilyDecl { fdInfo = info , fdLName = synifyName tc , fdTyVars = synifyTyVars (tyConTyVars tc) diff --git a/html-test/ref/Bug310.html b/html-test/ref/Bug310.html new file mode 100644 index 00000000..926d6cf2 --- /dev/null +++ b/html-test/ref/Bug310.html @@ -0,0 +1,89 @@ + +Bug310

 

Safe HaskellNone

Bug310

Synopsis

  • type family a + b :: Nat

Documentation

type family a + b :: Nat infixl 6

Addition of type-level naturals.

diff --git a/html-test/src/Bug310.hs b/html-test/src/Bug310.hs new file mode 100644 index 00000000..d2492dc0 --- /dev/null +++ b/html-test/src/Bug310.hs @@ -0,0 +1,4 @@ +{-# LANGUAGE ExplicitNamespaces #-} +module Bug310 ( type (+) ) where + +import GHC.TypeLits -- cgit v1.2.3