From 2e3080bf8ade686dc6cbad8e12ee45675ebae6d7 Mon Sep 17 00:00:00 2001 From: David Waern Date: Mon, 6 Dec 2010 14:17:35 +0000 Subject: Use --pretty-html when running the test suite. Makes it easier to compare output --- tests/golden-tests/runtests.hs | 2 +- tests/golden-tests/tests/A.html.ref | 68 +- tests/golden-tests/tests/B.html.ref | 51 +- tests/golden-tests/tests/Bug1.html.ref | 91 +- tests/golden-tests/tests/Bug2.html.ref | 53 +- tests/golden-tests/tests/Bug3.html.ref | 69 +- tests/golden-tests/tests/Bug4.html.ref | 69 +- tests/golden-tests/tests/Bug6.html.ref | 301 ++- tests/golden-tests/tests/Bug7.html.ref | 157 +- tests/golden-tests/tests/Bug8.html.ref | 80 +- tests/golden-tests/tests/Bugs.html.ref | 69 +- tests/golden-tests/tests/CrossPackageDocs.html.ref | 410 +++- tests/golden-tests/tests/Examples.html.ref | 168 +- tests/golden-tests/tests/FunArgs.html.ref | 172 +- tests/golden-tests/tests/GADTRecords.html.ref | 200 +- tests/golden-tests/tests/Hash.html.ref | 298 ++- tests/golden-tests/tests/NamedDoc.html.ref | 58 +- tests/golden-tests/tests/NoLayout.html.ref | 72 +- tests/golden-tests/tests/NonGreedy.html.ref | 69 +- tests/golden-tests/tests/QuasiExpr.html.ref | 191 +- tests/golden-tests/tests/QuasiQuote.html.ref | 53 +- tests/golden-tests/tests/TH.html.ref | 52 +- tests/golden-tests/tests/TH2.html.ref | 44 +- tests/golden-tests/tests/Test.html.ref | 2060 ++++++++++++++++++-- tests/golden-tests/tests/Ticket112.html.ref | 70 +- tests/golden-tests/tests/Ticket61.html.ref | 70 +- tests/golden-tests/tests/Ticket75.html.ref | 100 +- tests/golden-tests/tests/TypeFamilies.html.ref | 173 +- tests/golden-tests/tests/TypeOperators.html.ref | 217 ++- tests/golden-tests/tests/Visible.html.ref | 54 +- 30 files changed, 5262 insertions(+), 279 deletions(-) (limited to 'tests/golden-tests') diff --git a/tests/golden-tests/runtests.hs b/tests/golden-tests/runtests.hs index 16524197..05bc28c5 100644 --- a/tests/golden-tests/runtests.hs +++ b/tests/golden-tests/runtests.hs @@ -63,7 +63,7 @@ test = do putStrLn "Running tests..." handle <- runProcess haddockPath - (["-w", "-o", outdir, "-h", "--optghc=-fglasgow-exts" + (["-w", "-o", outdir, "-h", "--pretty-html", "--optghc=-fglasgow-exts" , "--optghc=-w", base, process, ghcprim] ++ opts ++ mods') Nothing (Just [("haddock_datadir", haddockBase)]) Nothing Nothing Nothing diff --git a/tests/golden-tests/tests/A.html.ref b/tests/golden-tests/tests/A.html.ref index 495b264b..8f0e3765 100644 --- a/tests/golden-tests/tests/A.html.ref +++ b/tests/golden-tests/tests/A.html.ref @@ -1,4 +1,68 @@ -A

 

A

Documentation

data A

Constructors

A 
\ No newline at end of file +

 

A

Documentation

data A

Constructors

A 
diff --git a/tests/golden-tests/tests/B.html.ref b/tests/golden-tests/tests/B.html.ref index c1bcfe23..abb08d45 100644 --- a/tests/golden-tests/tests/B.html.ref +++ b/tests/golden-tests/tests/B.html.ref @@ -1,4 +1,51 @@ -B

 

B

Documentation

module A

\ No newline at end of file +

 

B

Documentation

module A

diff --git a/tests/golden-tests/tests/Bug1.html.ref b/tests/golden-tests/tests/Bug1.html.ref index 3ea9f6ff..bc778d38 100644 --- a/tests/golden-tests/tests/Bug1.html.ref +++ b/tests/golden-tests/tests/Bug1.html.ref @@ -1,6 +1,89 @@ -Bug1

 

Bug1

Synopsis

  • data T = T

Documentation

data T

We should have different anchors for constructors and types/classes. This - hyperlink should point to the type constructor by default: T. -

Constructors

T 
\ No newline at end of file +

 

Bug1

Synopsis

  • data T = T

Documentation

data T

We should have different anchors for constructors and types/classes. This + hyperlink should point to the type constructor by default: T. +

Constructors

T 
diff --git a/tests/golden-tests/tests/Bug2.html.ref b/tests/golden-tests/tests/Bug2.html.ref index 09b01947..ed81755d 100644 --- a/tests/golden-tests/tests/Bug2.html.ref +++ b/tests/golden-tests/tests/Bug2.html.ref @@ -1,4 +1,53 @@ -Bug2

 

Bug2

Documentation

x :: A

\ No newline at end of file +

 

Bug2

Documentation

x :: A

diff --git a/tests/golden-tests/tests/Bug3.html.ref b/tests/golden-tests/tests/Bug3.html.ref index 4edfe76e..b231c443 100644 --- a/tests/golden-tests/tests/Bug3.html.ref +++ b/tests/golden-tests/tests/Bug3.html.ref @@ -1,6 +1,69 @@ -Bug3

 

Bug3

Synopsis

Documentation

foo :: Int

/multi-line +

Bug3

Synopsis

Documentation

foo :: Int

/multi-line emphasis/ -

\ No newline at end of file +

diff --git a/tests/golden-tests/tests/Bug4.html.ref b/tests/golden-tests/tests/Bug4.html.ref index 76b0e84f..776a0ab6 100644 --- a/tests/golden-tests/tests/Bug4.html.ref +++ b/tests/golden-tests/tests/Bug4.html.ref @@ -1,5 +1,68 @@ -Bug4

 

Bug4

Synopsis

Documentation

foo :: Int

don't use apostrophe's in the wrong place's -

\ No newline at end of file +

 

Bug4

Synopsis

Documentation

foo :: Int

don't use apostrophe's in the wrong place's +

diff --git a/tests/golden-tests/tests/Bug6.html.ref b/tests/golden-tests/tests/Bug6.html.ref index 6bc8ca26..c6ee6452 100644 --- a/tests/golden-tests/tests/Bug6.html.ref +++ b/tests/golden-tests/tests/Bug6.html.ref @@ -1,12 +1,297 @@ -Bug6

 

Bug6

Description

Exporting records. -

Synopsis

Documentation

data A

This record is exported without its field -

Constructors

A Int 

data B

.. with its field, but the field is named separately in the export list +

Bug6

Description

Exporting records. +

Synopsis

Documentation

data A

This record is exported without its field +

Constructors

A Int 

data B

.. with its field, but the field is named separately in the export list (the field isn't documented separately since it is already documented here) -

Constructors

B 

Fields

b :: Int
 

data C

.. with fields names as subordinate names in the export -

Constructors

C 

Fields

c1 :: Int
 
c2 :: Int
 

data D

.. with only some of the fields exported (we can't handle this one - +

Constructors

B 

Fields

b :: Int
 

data C

.. with fields names as subordinate names in the export +

Constructors

C 

Fields

c1 :: Int
 
c2 :: Int
 

data D

.. with only some of the fields exported (we can't handle this one - how do we render the declaration?) -

Constructors

D Int Int 

newtype E

a newtype with a field -

Constructors

E Int 
\ No newline at end of file +

Constructors

D Int Int 

newtype E

a newtype with a field +

Constructors

E Int 
diff --git a/tests/golden-tests/tests/Bug7.html.ref b/tests/golden-tests/tests/Bug7.html.ref index 6c29ce13..eea2095d 100644 --- a/tests/golden-tests/tests/Bug7.html.ref +++ b/tests/golden-tests/tests/Bug7.html.ref @@ -1,10 +1,153 @@ -Bug7

 

Bug7

Description

This module caused a duplicate instance in the documentation for the Foo +

Bug7

Description

This module caused a duplicate instance in the documentation for the Foo type. -

Synopsis

Documentation

data Foo

The Foo datatype -

Constructors

Foo 

Instances

Bar Foo Foo

Just one instance -

class Bar x y

The Bar class -

Instances

Bar Foo Foo

Just one instance -

\ No newline at end of file +

Synopsis

Documentation

data Foo

The Foo datatype +

Constructors

Foo 

Instances

Bar Foo Foo

Just one instance +

class Bar x y

The Bar class +

Instances

Bar Foo Foo

Just one instance +

diff --git a/tests/golden-tests/tests/Bug8.html.ref b/tests/golden-tests/tests/Bug8.html.ref index bd2dc3d1..e8ea727c 100644 --- a/tests/golden-tests/tests/Bug8.html.ref +++ b/tests/golden-tests/tests/Bug8.html.ref @@ -1,4 +1,80 @@ -Bug8

 

Bug8

Documentation

data Typ

Constructors

Type (String, [Typ]) 
TFree (String, [String]) 
\ No newline at end of file +

 

Bug8

Documentation

data Typ

Constructors

Type (String, [Typ]) 
TFree (String, [String]) 
diff --git a/tests/golden-tests/tests/Bugs.html.ref b/tests/golden-tests/tests/Bugs.html.ref index 6595502a..5828a6fa 100644 --- a/tests/golden-tests/tests/Bugs.html.ref +++ b/tests/golden-tests/tests/Bugs.html.ref @@ -1,4 +1,69 @@ -Bugs

 

Bugs

Documentation

data A a

Constructors

A a (a -> Int) 
\ No newline at end of file +

 

Bugs

Documentation

data A a

Constructors

A a (a -> Int) 
diff --git a/tests/golden-tests/tests/CrossPackageDocs.html.ref b/tests/golden-tests/tests/CrossPackageDocs.html.ref index a3c5a424..fd16c958 100644 --- a/tests/golden-tests/tests/CrossPackageDocs.html.ref +++ b/tests/golden-tests/tests/CrossPackageDocs.html.ref @@ -1,43 +1,391 @@ -CrossPackageDocs

 

CrossPackageDocs

Synopsis

Documentation

map :: (a -> b) -> [a] -> [b]

map f xs is the list obtained by applying f to each element - of xs, i.e., -

 map f [x1, x2, ..., xn] == [f x1, f x2, ..., f xn]
+

CrossPackageDocs

Synopsis

Documentation

map :: (a -> b) -> [a] -> [b]

map f xs is the list obtained by applying f to each element + of xs, i.e., +

 map f [x1, x2, ..., xn] == [f x1, f x2, ..., f xn]
  map f [x1, x2, ...] == [f x1, f x2, ...]
-

class Monad m where

The Monad class defines the basic operations over a monad, -a concept from a branch of mathematics known as category theory. +

class Monad m where

The Monad class defines the basic operations over a monad, +a concept from a branch of mathematics known as category theory. From the perspective of a Haskell programmer, however, it is best to -think of a monad as an abstract datatype of actions. -Haskell's do expressions provide a convenient syntax for writing +think of a monad as an abstract datatype of actions. +Haskell's do expressions provide a convenient syntax for writing monadic expressions. -

Minimal complete definition: >>= and return. -

Instances of Monad should satisfy the following laws: -

 return a >>= k  ==  k a
+

Minimal complete definition: >>= and return. +

Instances of Monad should satisfy the following laws: +

 return a >>= k  ==  k a
  m >>= return  ==  m
  m >>= (\x -> k x >>= h)  ==  (m >>= k) >>= h
-

Instances of both Monad and Functor should additionally satisfy the law: -

 fmap f xs  ==  xs >>= return . f
-

The instances of Monad for lists, Data.Maybe.Maybe and System.IO.IO -defined in the Prelude satisfy these laws. -

Methods

(>>=) :: m a -> (a -> m b) -> m b

Sequentially compose two actions, passing any value produced +

Instances of both Monad and Functor should additionally satisfy the law: +

 fmap f xs  ==  xs >>= return . f
+

The instances of Monad for lists, Data.Maybe.Maybe and System.IO.IO +defined in the Prelude satisfy these laws. +

Methods

(>>=) :: m a -> (a -> m b) -> m b

Sequentially compose two actions, passing any value produced by the first as an argument to the second. -

(>>) :: m a -> m b -> m b

Sequentially compose two actions, discarding any value produced +

(>>) :: m a -> m b -> m b

Sequentially compose two actions, discarding any value produced by the first, like sequencing operators (such as the semicolon) in imperative languages. -

return :: a -> m a

Inject a value into the monadic type. -

fail :: String -> m a

Fail with a message. This operation is not part of the +

return :: a -> m a

Inject a value into the monadic type. +

fail :: String -> m a

Fail with a message. This operation is not part of the mathematical definition of a monad, but is invoked on pattern-match - failure in a do expression. -

Instances

Monad [] 
Monad IO 
Monad Q 
Monad Maybe 
Monad ((->) r) 
Monad (Either e) 

runInteractiveProcess

Arguments

:: FilePath

Filename of the executable -

-> [String]

Arguments to pass to the executable -

-> Maybe FilePath

Optional path to the working directory -

-> Maybe [(String, String)]

Optional environment (otherwise inherit) -

-> IO (Handle, Handle, Handle, ProcessHandle) 

Runs a raw command, and returns Handles that may be used to communicate - with the process via its stdin, stdout and stderr respectively. -

For example, to start a process and feed a string to its stdin: -

   (inp,out,err,pid) <- runInteractiveProcess "..."
+ failure in a do expression.
+

Instances

Monad [] 
Monad IO 
Monad Q 
Monad Maybe 
Monad ((->) r) 
Monad (Either e) 

runInteractiveProcess

Arguments

:: FilePath

Filename of the executable +

-> [String]

Arguments to pass to the executable +

-> Maybe FilePath

Optional path to the working directory +

-> Maybe [(String, String)]

Optional environment (otherwise inherit) +

-> IO (Handle, Handle, Handle, ProcessHandle) 

Runs a raw command, and returns Handles that may be used to communicate + with the process via its stdin, stdout and stderr respectively. +

For example, to start a process and feed a string to its stdin: +

   (inp,out,err,pid) <- runInteractiveProcess "..."
    forkIO (hPutStr inp str)
-

The Handles are initially in binary mode; if you need them to be - in text mode then use hSetBinaryMode. -

\ No newline at end of file +

The Handles are initially in binary mode; if you need them to be + in text mode then use hSetBinaryMode. +

diff --git a/tests/golden-tests/tests/Examples.html.ref b/tests/golden-tests/tests/Examples.html.ref index a8f63e3e..49383b7a 100644 --- a/tests/golden-tests/tests/Examples.html.ref +++ b/tests/golden-tests/tests/Examples.html.ref @@ -1,22 +1,150 @@ -Examples

 

Examples

Synopsis

Documentation

fib :: Integer -> Integer

Fibonacci number of given Integer. -

Examples: -

>>> fib 5
-5
->>> fib 10
-55
-
>>> fib 10
-55
-

One more Example: -

>>> fib 5
-5
-

One more Example: -

>>> fib 5
-5
-

Example with an import: -

>>> import Data.Char
->>> isSpace 'a'
-False
-
\ No newline at end of file +

 

Examples

Synopsis

Documentation

fib :: Integer -> Integer

Fibonacci number of given Integer. +

Examples: +

>>> fib 5
+5
+>>> fib 10
+55
+
>>> fib 10
+55
+

One more Example: +

>>> fib 5
+5
+

One more Example: +

>>> fib 5
+5
+

Example with an import: +

>>> import Data.Char
+>>> isSpace 'a'
+False
+
diff --git a/tests/golden-tests/tests/FunArgs.html.ref b/tests/golden-tests/tests/FunArgs.html.ref index 1491b267..392ffca8 100644 --- a/tests/golden-tests/tests/FunArgs.html.ref +++ b/tests/golden-tests/tests/FunArgs.html.ref @@ -1,13 +1,163 @@ -FunArgs

 

FunArgs

Documentation

f

Arguments

:: forall a . Ord a 
=> Int

First argument -

-> a

Second argument -

-> Bool

Third argument -

-> (a -> a)

Fourth argument -

-> ()

Result -

g

Arguments

:: a

First argument -

-> b

Second argument -

-> c

Third argument -

-> d

Result -

\ No newline at end of file +

 

FunArgs

Documentation

f

Arguments

:: forall a . Ord a 
=> Int

First argument +

-> a

Second argument +

-> Bool

Third argument +

-> (a -> a)

Fourth argument +

-> ()

Result +

g

Arguments

:: a

First argument +

-> b

Second argument +

-> c

Third argument +

-> d

Result +

diff --git a/tests/golden-tests/tests/GADTRecords.html.ref b/tests/golden-tests/tests/GADTRecords.html.ref index f4d5593b..fe80fae2 100644 --- a/tests/golden-tests/tests/GADTRecords.html.ref +++ b/tests/golden-tests/tests/GADTRecords.html.ref @@ -1,7 +1,197 @@ -GADTRecords

 

GADTRecords

Synopsis

Documentation

data H1 a b where

h1 -

Constructors

C1 :: H1 a b 
C2 :: Ord a => [a] -> H1 a a 
C3 :: Int -> H1 Int Int 

Fields

field :: Int

hello docs -

C4 :: a -> H1 Int a 

Fields

field2 :: a

hello2 docs -

\ No newline at end of file +

 

GADTRecords

Synopsis

Documentation

data H1 a b where

h1 +

Constructors

C1 :: H1 a b 
C2 :: Ord a => [a] -> H1 a a 
C3 :: Int -> H1 Int Int 

Fields

field :: Int

hello docs +

C4 :: a -> H1 Int a 

Fields

field2 :: a

hello2 docs +

diff --git a/tests/golden-tests/tests/Hash.html.ref b/tests/golden-tests/tests/Hash.html.ref index b4fa23f7..1bb64d42 100644 --- a/tests/golden-tests/tests/Hash.html.ref +++ b/tests/golden-tests/tests/Hash.html.ref @@ -1,20 +1,284 @@ -Hash

 

Hash

Description

Implementation of fixed-size hash tables, with a type +

Hash

Description

Implementation of fixed-size hash tables, with a type class for constructing hash values for structured types. -

Synopsis

The HashTable type -

data HashTable key val

A hash table with keys of type key and values of type val. - The type key should be an instance of Eq. -

Operations on HashTables -

new :: (Eq key, Hash key) => Int -> IO (HashTable key val)

Builds a new hash table with a given size -

insert :: (Eq key, Hash key) => key -> val -> IO ()

Inserts a new element into the hash table -

lookup :: Hash key => key -> IO (Maybe val)

Looks up a key in the hash table, returns Just val if the key - was found, or Nothing otherwise. -

The Hash class -

class Hash a where

A class of types which can be hashed. -

Methods

hash :: a -> Int

hashes the value of type a into an Int -

Instances

Hash Float 
Hash Int 
(Hash a, Hash b) => Hash (a, b) 
\ No newline at end of file +

Synopsis

The HashTable type +

data HashTable key val

A hash table with keys of type key and values of type val. + The type key should be an instance of Eq. +

Operations on HashTables +

new :: (Eq key, Hash key) => Int -> IO (HashTable key val)

Builds a new hash table with a given size +

insert :: (Eq key, Hash key) => key -> val -> IO ()

Inserts a new element into the hash table +

lookup :: Hash key => key -> IO (Maybe val)

Looks up a key in the hash table, returns Just val if the key + was found, or Nothing otherwise. +

The Hash class +

class Hash a where

A class of types which can be hashed. +

Methods

hash :: a -> Int

hashes the value of type a into an Int +

Instances

Hash Float 
Hash Int 
(Hash a, Hash b) => Hash (a, b) 
diff --git a/tests/golden-tests/tests/NamedDoc.html.ref b/tests/golden-tests/tests/NamedDoc.html.ref index 25cdc423..4c514487 100644 --- a/tests/golden-tests/tests/NamedDoc.html.ref +++ b/tests/golden-tests/tests/NamedDoc.html.ref @@ -1,5 +1,57 @@ -NamedDoc

 

NamedDoc

Synopsis

    Documentation

    bar -

    \ No newline at end of file +

     

    NamedDoc

    Synopsis

      Documentation

      bar +

      diff --git a/tests/golden-tests/tests/NoLayout.html.ref b/tests/golden-tests/tests/NoLayout.html.ref index aa1fd3b9..cb073bf6 100644 --- a/tests/golden-tests/tests/NoLayout.html.ref +++ b/tests/golden-tests/tests/NoLayout.html.ref @@ -1,5 +1,71 @@ -NoLayout

       

      NoLayout

      Synopsis

      Documentation

      g :: Int

      the function g -

      \ No newline at end of file +

       

      NoLayout

      Synopsis

      Documentation

      g :: Int

      the function g +

      diff --git a/tests/golden-tests/tests/NonGreedy.html.ref b/tests/golden-tests/tests/NonGreedy.html.ref index 74d9d6a0..9e39b7c3 100644 --- a/tests/golden-tests/tests/NonGreedy.html.ref +++ b/tests/golden-tests/tests/NonGreedy.html.ref @@ -1,5 +1,68 @@ -NonGreedy

       

      NonGreedy

      Synopsis

      • f :: a

      Documentation

      f :: a

      \ No newline at end of file +

       

      NonGreedy

      Synopsis

      • f :: a

      Documentation

      f :: a

      diff --git a/tests/golden-tests/tests/QuasiExpr.html.ref b/tests/golden-tests/tests/QuasiExpr.html.ref index 30735270..321631e4 100644 --- a/tests/golden-tests/tests/QuasiExpr.html.ref +++ b/tests/golden-tests/tests/QuasiExpr.html.ref @@ -1,4 +1,191 @@ -QuasiExpr

       

      QuasiExpr

      Documentation

      data BinOp

      Constructors

      AddOp 
      SubOp 
      MulOp 
      DivOp 

      Instances

      parseExprExp :: String -> Q Exp

      \ No newline at end of file +

       

      QuasiExpr

      Documentation

      data BinOp

      Constructors

      AddOp 
      SubOp 
      MulOp 
      DivOp 

      Instances

      parseExprExp :: String -> Q Exp

      diff --git a/tests/golden-tests/tests/QuasiQuote.html.ref b/tests/golden-tests/tests/QuasiQuote.html.ref index a4746d35..e1159268 100644 --- a/tests/golden-tests/tests/QuasiQuote.html.ref +++ b/tests/golden-tests/tests/QuasiQuote.html.ref @@ -1,4 +1,53 @@ -QuasiQuote

       

      QuasiQuote

      Documentation

      \ No newline at end of file +

       

      QuasiQuote

      Documentation

      diff --git a/tests/golden-tests/tests/TH.html.ref b/tests/golden-tests/tests/TH.html.ref index be34933f..be948582 100644 --- a/tests/golden-tests/tests/TH.html.ref +++ b/tests/golden-tests/tests/TH.html.ref @@ -1,4 +1,52 @@ -TH

       

      TH

      Documentation

      decl :: Q [Dec]

      \ No newline at end of file +

       

      TH

      Documentation

      decl :: Q [Dec]

      diff --git a/tests/golden-tests/tests/TH2.html.ref b/tests/golden-tests/tests/TH2.html.ref index 96d164e4..950a391b 100644 --- a/tests/golden-tests/tests/TH2.html.ref +++ b/tests/golden-tests/tests/TH2.html.ref @@ -1,4 +1,44 @@ -TH2

       

      TH2

      \ No newline at end of file +

       

      TH2

      diff --git a/tests/golden-tests/tests/Test.html.ref b/tests/golden-tests/tests/Test.html.ref index e4c81c13..2acc5ec8 100644 --- a/tests/golden-tests/tests/Test.html.ref +++ b/tests/golden-tests/tests/Test.html.ref @@ -1,148 +1,1968 @@ -Test

       

      Portabilityportable
      Stabilityprovisional
      Maintainerlibraries@haskell.org

      Test

      Description

      This module illustrates & tests most of the features of Haddock. - Testing references from the description: T, f, g, visible. -

      Synopsis

      Type declarations -

      Data types -

      data T a b

      This comment applies to the following declaration +

      Portabilityportable
      Stabilityprovisional
      Maintainerlibraries@haskell.org

      Test

      Description

      This module illustrates & tests most of the features of Haddock. + Testing references from the description: T, f, g, visible. +

      Synopsis

      Type declarations +

      Data types +

      data T a b

      This comment applies to the following declaration and it continues until the next non-comment line -

      Constructors

      A Int (Maybe Float)

      This comment describes the A constructor -

      B (T a b, T Int Float)

      This comment describes the B constructor -

      data T2 a b

      An abstract data declaration -

      data T3 a b

      A data declaration with no documentation annotations on the constructors -

      Constructors

      A1 a 
      B1 b 

      data T4 a b

      Constructors

      A2 a 
      B2 b 

      data T5 a b

      Constructors

      A3 a

      documents A3 -

      B3 b

      documents B3 -

      data T6

      Testing alternative comment styles -

      Constructors

      A4

      This is the doc for A4 -

      B4

      This is the doc for B4 -

      C4

      This is the doc for C4 -

      newtype N1 a

      A newtype -

      Constructors

      N1 a 

      newtype N2 a b

      A newtype with a fieldname -

      Constructors

      N2 

      Fields

      n :: a b
       

      newtype N3 a b

      A newtype with a fieldname, documentation on the field -

      Constructors

      N3 

      Fields

      n3 :: a b

      this is the n3 field -

      data N4 a b

      An abstract newtype - we show this one as data rather than newtype because +

      Constructors

      A Int (Maybe Float)

      This comment describes the A constructor +

      B (T a b, T Int Float)

      This comment describes the B constructor +

      data T2 a b

      An abstract data declaration +

      data T3 a b

      A data declaration with no documentation annotations on the constructors +

      Constructors

      A1 a 
      B1 b 

      data T4 a b

      Constructors

      A2 a 
      B2 b 

      data T5 a b

      Constructors

      A3 a

      documents A3 +

      B3 b

      documents B3 +

      data T6

      Testing alternative comment styles +

      Constructors

      A4

      This is the doc for A4 +

      B4

      This is the doc for B4 +

      C4

      This is the doc for C4 +

      newtype N1 a

      A newtype +

      Constructors

      N1 a 

      newtype N2 a b

      A newtype with a fieldname +

      Constructors

      N2 

      Fields

      n :: a b
       

      newtype N3 a b

      A newtype with a fieldname, documentation on the field +

      Constructors

      N3 

      Fields

      n3 :: a b

      this is the n3 field +

      data N4 a b

      An abstract newtype - we show this one as data rather than newtype because the difference isn't visible to the programmer for an abstract type. -

      newtype N5 a b

      Constructors

      N5 

      Fields

      n5 :: a b

      no docs on the datatype or the constructor -

      newtype N6 a b

      Constructors

      N6

      docs on the constructor only -

      Fields

      n6 :: a b
       

      newtype N7 a b

      docs on the newtype and the constructor -

      Constructors

      N7

      The N7 constructor -

      Fields

      n7 :: a b
       

      Records -

      data R

      This is the documentation for the R record, which has four fields, - p, q, r, and s. -

      Constructors

      C1

      This is the C1 record constructor, with the following fields: -

      Fields

      p :: Int

      This comment applies to the p field -

      q :: forall a. a -> a

      This comment applies to the q field -

      r :: Int

      This comment applies to both r and s -

      s :: Int

      This comment applies to both r and s -

      C2

      This is the C2 record constructor, also with some fields: -

      Fields

      t :: T1 -> T2 Int Int -> T3 Bool Bool -> T4 Float Float -> T5 () ()
       
      u :: Int
       
      v :: Int
       

      data R1

      Testing different record commenting styles -

      Constructors

      C3

      This is the C3 record constructor -

      Fields

      s1 :: Int

      The s1 record selector -

      s2 :: Int

      The s2 record selector -

      s3 :: Int

      The s3 record selector -

      test that we can export record selectors on their own: -

      Class declarations -

      class D a => C a where

      This comment applies to the previous declaration (the C class) -

      Methods

      a :: IO a

      this is a description of the a method -

      b :: [a]

      this is a description of the b method -

      class D a where

      This is a class declaration with no separate docs for the methods -

      Methods

      d :: T a b

      e :: (a, a)

      Instances

      class E a

      This is a class declaration with no methods (or no methods exported) -

      class F a where

      Methods

      ff :: a

      Test that we can export a class method on its own: -

      Function types -

      f :: C a => a -> Int

      In a comment string we can refer to identifiers in scope with -single quotes like this: T, and we can refer to modules by -using double quotes: Foo. We can add emphasis like this. -

      • This is a bulleted list -
      • This is the next item (different kind of bullet) -
      1. This is an ordered list -
      2. This is the next item (different kind of bullet) -
      cat
      a small, furry, domesticated mammal -
      pineapple
      a fruit grown in the tropics -
      -     This is a block of code, which can include other markup: R
      +

      newtype N5 a b

      Constructors

      N5 

      Fields

      n5 :: a b

      no docs on the datatype or the constructor +

      newtype N6 a b

      Constructors

      N6

      docs on the constructor only +

      Fields

      n6 :: a b
       

      newtype N7 a b

      docs on the newtype and the constructor +

      Constructors

      N7

      The N7 constructor +

      Fields

      n7 :: a b
       

      Records +

      data R

      This is the documentation for the R record, which has four fields, + p, q, r, and s. +

      Constructors

      C1

      This is the C1 record constructor, with the following fields: +

      Fields

      p :: Int

      This comment applies to the p field +

      q :: forall a. a -> a

      This comment applies to the q field +

      r :: Int

      This comment applies to both r and s +

      s :: Int

      This comment applies to both r and s +

      C2

      This is the C2 record constructor, also with some fields: +

      Fields

      t :: T1 -> T2 Int Int -> T3 Bool Bool -> T4 Float Float -> T5 () ()
       
      u :: Int
       
      v :: Int
       

      data R1

      Testing different record commenting styles +

      Constructors

      C3

      This is the C3 record constructor +

      Fields

      s1 :: Int

      The s1 record selector +

      s2 :: Int

      The s2 record selector +

      s3 :: Int

      The s3 record selector +

      test that we can export record selectors on their own: +

      Class declarations +

      class D a => C a where

      This comment applies to the previous declaration (the C class) +

      Methods

      a :: IO a

      this is a description of the a method +

      b :: [a]

      this is a description of the b method +

      class D a where

      This is a class declaration with no separate docs for the methods +

      Methods

      d :: T a b

      e :: (a, a)

      Instances

      class E a

      This is a class declaration with no methods (or no methods exported) +

      class F a where

      Methods

      ff :: a

      Test that we can export a class method on its own: +

      Function types +

      f :: C a => a -> Int

      In a comment string we can refer to identifiers in scope with +single quotes like this: T, and we can refer to modules by +using double quotes: Foo. We can add emphasis like this. +

      • This is a bulleted list +
      • This is the next item (different kind of bullet) +
      1. This is an ordered list +
      2. This is the next item (different kind of bullet) +
      cat
      a small, furry, domesticated mammal +
      pineapple
      a fruit grown in the tropics +
      +     This is a block of code, which can include other markup: R
            formatting
                      is
                        significant
      -
       this is another block of code
      -

      We can also include URLs in documentation: http://www.haskell.org/. -

      g :: Int -> IO CInt

      we can export foreign declarations too -

      Auxiliary stuff -

      This is some documentation that is attached to a name ($aux1) +

       this is another block of code
      +

      We can also include URLs in documentation: http://www.haskell.org/. +

      g :: Int -> IO CInt

      we can export foreign declarations too +

      Auxiliary stuff +

      This is some documentation that is attached to a name ($aux1) rather than a source declaration. The documentation may be referred to in the export list using its name. -

       code block in named doc

      This is some documentation that is attached to a name ($aux2) -

       code block on its own in named doc
       code block on its own in named doc (after newline)

      a nested, named doc comment -

      with a paragraph, -

       and a code block
      test
      +

       code block in named doc

      This is some documentation that is attached to a name ($aux2) +

       code block on its own in named doc
       code block on its own in named doc (after newline)

      a nested, named doc comment +

      with a paragraph, +

       and a code block
      test
       test1
      -
       test2
      +
       test2
         test3
      -
      +
       test1
       test2
      -
      test3
      +
      test3
       test4
      -
      +
       test1
       test2
      -
      test3
      +
      test3
       test4
      -
      test3
      +
      test3
       test4
      -
      +
       test1
       test2
      -

      aux11: -

      test3
      +

      aux11: +

      test3
       test4
      -
      +
       test1
       test2
      -
       foo
      -
       bar
      -

      This is some inline documentation in the export list -

       a code block using bird-tracks
      +
       foo
      +
       bar
      +

      This is some inline documentation in the export list +

       a code block using bird-tracks
        each line must begin with > (which isn't significant unless it
        is at the beginning of the line).
      -

      A hidden module -

      hidden :: Int -> Int

      A visible module -

      module Visible

      nested-style doc comments -

      Existential / Universal types -

      data Ex a

      A data-type using existential/universal types -

      Constructors

      forall b . C b => Ex1 b 
      forall b . Ex2 b 
      forall b . C a => Ex3 b 
      Ex4 (forall a. a -> a) 

      Type signatures with argument docs -

      k

      Arguments

      :: T () ()

      This argument has type T -

      -> T2 Int Int

      This argument has type 'T2 Int Int' -

      -> (T3 Bool Bool -> T4 Float Float)

      This argument has type T3 Bool Bool -> T4 Float Float -

      -> T5 () ()

      This argument has a very long description that should +

      A hidden module +

      hidden :: Int -> Int

      A visible module +

      module Visible

      nested-style doc comments +

      Existential / Universal types +

      data Ex a

      A data-type using existential/universal types +

      Constructors

      forall b . C b => Ex1 b 
      forall b . Ex2 b 
      forall b . C a => Ex3 b 
      Ex4 (forall a. a -> a) 

      Type signatures with argument docs +

      k

      Arguments

      :: T () ()

      This argument has type T +

      -> T2 Int Int

      This argument has type 'T2 Int Int' +

      -> (T3 Bool Bool -> T4 Float Float)

      This argument has type T3 Bool Bool -> T4 Float Float +

      -> T5 () ()

      This argument has a very long description that should hopefully cause some wrapping to happen when it is finally rendered by Haddock in the generated HTML page. -

      -> IO ()

      This is the result type -

      This is a function with documentation for each argument -

      l

      Arguments

      :: (Int, Int, Float)

      takes a triple -

      -> Int

      returns an Int -

      m

      Arguments

      :: R 
      -> N1 ()

      one of the arguments -

      -> IO Int

      and the return value -

      This function has some arg docs -

      o

      Arguments

      :: Float

      The input float -

      -> IO Float

      The output float -

      A foreign import with argument docs -

      A section -

      A subsection -

       a literal line
      -

      $ a non literal line $ -

      f' :: Int

      a function with a prime can be referred to as f' +

      -> IO ()

      This is the result type +

      This is a function with documentation for each argument +

      l

      Arguments

      :: (Int, Int, Float)

      takes a triple +

      -> Int

      returns an Int +

      m

      Arguments

      :: R 
      -> N1 ()

      one of the arguments +

      -> IO Int

      and the return value +

      This function has some arg docs +

      o

      Arguments

      :: Float

      The input float +

      -> IO Float

      The output float +

      A foreign import with argument docs +

      A section +

      A subsection +

       a literal line
      +

      $ a non literal line $ +

      f' :: Int

      a function with a prime can be referred to as f' but f' doesn't get link'd 'f\'' -

      \ No newline at end of file +

      diff --git a/tests/golden-tests/tests/Ticket112.html.ref b/tests/golden-tests/tests/Ticket112.html.ref index e554c794..f29b507a 100644 --- a/tests/golden-tests/tests/Ticket112.html.ref +++ b/tests/golden-tests/tests/Ticket112.html.ref @@ -1,5 +1,69 @@ -Ticket112

       

      Ticket112

      Synopsis

      • f :: a

      Documentation

      f :: a

      ...given a raw Addr# to the string, and the length of the string. -

      \ No newline at end of file +

       

      Ticket112

      Synopsis

      • f :: a

      Documentation

      f :: a

      ...given a raw Addr# to the string, and the length of the string. +

      diff --git a/tests/golden-tests/tests/Ticket61.html.ref b/tests/golden-tests/tests/Ticket61.html.ref index 5abb62a9..453cabad 100644 --- a/tests/golden-tests/tests/Ticket61.html.ref +++ b/tests/golden-tests/tests/Ticket61.html.ref @@ -1,5 +1,69 @@ -Ticket61

       

      Ticket61

      Documentation

      class C a where

      Methods

      f :: a

      A comment about f -

      \ No newline at end of file +

       

      Ticket61

      Documentation

      class C a where

      Methods

      f :: a

      A comment about f +

      diff --git a/tests/golden-tests/tests/Ticket75.html.ref b/tests/golden-tests/tests/Ticket75.html.ref index 0ec179cb..dcadf429 100644 --- a/tests/golden-tests/tests/Ticket75.html.ref +++ b/tests/golden-tests/tests/Ticket75.html.ref @@ -1,5 +1,99 @@ -Ticket75

       

      Ticket75

      Synopsis

      Documentation

      data a :- b

      Constructors

      Q 

      f :: Int

      A reference to :- -

      \ No newline at end of file +

       

      Ticket75

      Synopsis

      Documentation

      data a :- b

      Constructors

      Q 

      f :: Int

      A reference to :- +

      diff --git a/tests/golden-tests/tests/TypeFamilies.html.ref b/tests/golden-tests/tests/TypeFamilies.html.ref index ee883c2a..02ad9920 100644 --- a/tests/golden-tests/tests/TypeFamilies.html.ref +++ b/tests/golden-tests/tests/TypeFamilies.html.ref @@ -1,9 +1,168 @@ -TypeFamilies

       

      TypeFamilies

      Synopsis

      • type family G a :: *
      • class A a where
        • data B a :: * -> *
        • f :: B a Int
      • type family F a

      Documentation

      type family G a :: *

      Type family G -

      class A a where

      A class with an associated type -

      Associated Types

      data B a :: * -> *

      An associated type -

      Methods

      f :: B a Int

      A method -

      Instances

      A Int 

      type family F a

      Doc for family -

      \ No newline at end of file +

       

      TypeFamilies

      Synopsis

      • type family G a :: *
      • class A a where
        • data B a :: * -> *
        • f :: B a Int
      • type family F a

      Documentation

      type family G a :: *

      Type family G +

      class A a where

      A class with an associated type +

      Associated Types

      data B a :: * -> *

      An associated type +

      Methods

      f :: B a Int

      A method +

      Instances

      A Int 

      type family F a

      Doc for family +

      diff --git a/tests/golden-tests/tests/TypeOperators.html.ref b/tests/golden-tests/tests/TypeOperators.html.ref index 0e6ec27d..445af672 100644 --- a/tests/golden-tests/tests/TypeOperators.html.ref +++ b/tests/golden-tests/tests/TypeOperators.html.ref @@ -1,6 +1,215 @@ -TypeOperators

       

      TypeOperators

      Contents

      Synopsis

      stuff -

      data a :-: b

      data (a :+: b) c

      data Op a b

      newtype O g f a

      Constructors

      O 

      Fields

      unO :: g (f a)
       

      biO :: (g `O` f) a

      newtype Flip (~>) b a

      Constructors

      Flip 

      Fields

      unFlip :: a ~> b
       
      \ No newline at end of file +

       

      TypeOperators

      Contents

      Synopsis

      stuff +

      data a :-: b

      data (a :+: b) c

      data Op a b

      newtype O g f a

      Constructors

      O 

      Fields

      unO :: g (f a)
       

      biO :: (g `O` f) a

      newtype Flip (~>) b a

      Constructors

      Flip 

      Fields

      unFlip :: a ~> b
       
      diff --git a/tests/golden-tests/tests/Visible.html.ref b/tests/golden-tests/tests/Visible.html.ref index 920338ed..3dc3418f 100644 --- a/tests/golden-tests/tests/Visible.html.ref +++ b/tests/golden-tests/tests/Visible.html.ref @@ -1,4 +1,54 @@ -Visible

       

      Visible

      Documentation

      \ No newline at end of file +

       

      Visible

      Documentation

      -- cgit v1.2.3