From 33ab68b67ce865cd6447b41eda6d64ed0f65e8d9 Mon Sep 17 00:00:00 2001 From: David Waern Date: Sat, 12 Apr 2008 18:57:23 +0000 Subject: Simplify test suite and add tests I move all tests into one single directory to simplify things, and add a test for the last bug that was fixed. --- tests/output/A.html | 116 ++ tests/output/A.html.ref | 116 ++ tests/output/B.html | 86 + tests/output/B.html.ref | 86 + tests/output/Bug1.html | 150 ++ tests/output/Bug1.html.ref | 150 ++ tests/output/Bug2.html | 90 + tests/output/Bug2.html.ref | 90 + tests/output/Bug3.html | 114 ++ tests/output/Bug3.html.ref | 114 ++ tests/output/Bug4.html | 113 ++ tests/output/Bug4.html.ref | 113 ++ tests/output/Bug6.html | 482 ++++++ tests/output/Bug6.html.ref | 482 ++++++ tests/output/Bug7.html | 242 +++ tests/output/Bug7.html.ref | 242 +++ tests/output/Bug8.html | 128 ++ tests/output/Bug8.html.ref | 128 ++ tests/output/Bugs.html | 116 ++ tests/output/Hash.html | 412 +++++ tests/output/Hash.html.ref | 412 +++++ tests/output/Hidden.html.ref | 88 + tests/output/NoLayout.html | 113 ++ tests/output/NoLayout.html.ref | 113 ++ tests/output/Test.html | 3105 +++++++++++++++++++++++++++++++++++ tests/output/Test.html.ref | 3105 +++++++++++++++++++++++++++++++++++ tests/output/TypeOperators.html | 380 +++++ tests/output/TypeOperators.html.ref | 380 +++++ tests/output/Visible.html | 88 + tests/output/Visible.html.ref | 88 + tests/output/doc-index.html | 1104 +++++++++++++ tests/output/index.html | 208 +++ 32 files changed, 12754 insertions(+) create mode 100644 tests/output/A.html create mode 100644 tests/output/A.html.ref create mode 100644 tests/output/B.html create mode 100644 tests/output/B.html.ref create mode 100644 tests/output/Bug1.html create mode 100644 tests/output/Bug1.html.ref create mode 100644 tests/output/Bug2.html create mode 100644 tests/output/Bug2.html.ref create mode 100644 tests/output/Bug3.html create mode 100644 tests/output/Bug3.html.ref create mode 100644 tests/output/Bug4.html create mode 100644 tests/output/Bug4.html.ref create mode 100644 tests/output/Bug6.html create mode 100644 tests/output/Bug6.html.ref create mode 100644 tests/output/Bug7.html create mode 100644 tests/output/Bug7.html.ref create mode 100644 tests/output/Bug8.html create mode 100644 tests/output/Bug8.html.ref create mode 100644 tests/output/Bugs.html create mode 100644 tests/output/Hash.html create mode 100644 tests/output/Hash.html.ref create mode 100644 tests/output/Hidden.html.ref create mode 100644 tests/output/NoLayout.html create mode 100644 tests/output/NoLayout.html.ref create mode 100644 tests/output/Test.html create mode 100644 tests/output/Test.html.ref create mode 100644 tests/output/TypeOperators.html create mode 100644 tests/output/TypeOperators.html.ref create mode 100644 tests/output/Visible.html create mode 100644 tests/output/Visible.html.ref create mode 100644 tests/output/doc-index.html create mode 100644 tests/output/index.html (limited to 'tests/output') diff --git a/tests/output/A.html b/tests/output/A.html new file mode 100644 index 00000000..3a3c137b --- /dev/null +++ b/tests/output/A.html @@ -0,0 +1,116 @@ + + +A
 ContentsIndex
A
Documentation
data A
Constructors
A
Produced by Haddock version 2.1.0
diff --git a/tests/output/A.html.ref b/tests/output/A.html.ref new file mode 100644 index 00000000..3a3c137b --- /dev/null +++ b/tests/output/A.html.ref @@ -0,0 +1,116 @@ + + +A
 ContentsIndex
A
Documentation
data A
Constructors
A
Produced by Haddock version 2.1.0
diff --git a/tests/output/B.html b/tests/output/B.html new file mode 100644 index 00000000..a69e45ad --- /dev/null +++ b/tests/output/B.html @@ -0,0 +1,86 @@ + + +B
 ContentsIndex
B
Documentation
module A
Produced by Haddock version 2.1.0
diff --git a/tests/output/B.html.ref b/tests/output/B.html.ref new file mode 100644 index 00000000..a69e45ad --- /dev/null +++ b/tests/output/B.html.ref @@ -0,0 +1,86 @@ + + +B
 ContentsIndex
B
Documentation
module A
Produced by Haddock version 2.1.0
diff --git a/tests/output/Bug1.html b/tests/output/Bug1.html new file mode 100644 index 00000000..462f088b --- /dev/null +++ b/tests/output/Bug1.html @@ -0,0 +1,150 @@ + + +Bug1
 ContentsIndex
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
Produced by Haddock version 2.1.0
diff --git a/tests/output/Bug1.html.ref b/tests/output/Bug1.html.ref new file mode 100644 index 00000000..462f088b --- /dev/null +++ b/tests/output/Bug1.html.ref @@ -0,0 +1,150 @@ + + +Bug1
 ContentsIndex
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
Produced by Haddock version 2.1.0
diff --git a/tests/output/Bug2.html b/tests/output/Bug2.html new file mode 100644 index 00000000..aa9d6647 --- /dev/null +++ b/tests/output/Bug2.html @@ -0,0 +1,90 @@ + + +Bug2
 ContentsIndex
Bug2
Documentation
x :: A
Produced by Haddock version 2.1.0
diff --git a/tests/output/Bug2.html.ref b/tests/output/Bug2.html.ref new file mode 100644 index 00000000..aa9d6647 --- /dev/null +++ b/tests/output/Bug2.html.ref @@ -0,0 +1,90 @@ + + +Bug2
 ContentsIndex
Bug2
Documentation
x :: A
Produced by Haddock version 2.1.0
diff --git a/tests/output/Bug3.html b/tests/output/Bug3.html new file mode 100644 index 00000000..60f4b890 --- /dev/null +++ b/tests/output/Bug3.html @@ -0,0 +1,114 @@ + + +Bug3
 ContentsIndex
Bug3
Synopsis
foo :: Int
Documentation
foo :: Int
/multi-line + emphasis/ +
Produced by Haddock version 2.1.0
diff --git a/tests/output/Bug3.html.ref b/tests/output/Bug3.html.ref new file mode 100644 index 00000000..60f4b890 --- /dev/null +++ b/tests/output/Bug3.html.ref @@ -0,0 +1,114 @@ + + +Bug3
 ContentsIndex
Bug3
Synopsis
foo :: Int
Documentation
foo :: Int
/multi-line + emphasis/ +
Produced by Haddock version 2.1.0
diff --git a/tests/output/Bug4.html b/tests/output/Bug4.html new file mode 100644 index 00000000..c2921742 --- /dev/null +++ b/tests/output/Bug4.html @@ -0,0 +1,113 @@ + + +Bug4
 ContentsIndex
Bug4
Synopsis
foo :: Int
Documentation
foo :: Int
don't use apostrophe's in the wrong place's +
Produced by Haddock version 2.1.0
diff --git a/tests/output/Bug4.html.ref b/tests/output/Bug4.html.ref new file mode 100644 index 00000000..c2921742 --- /dev/null +++ b/tests/output/Bug4.html.ref @@ -0,0 +1,113 @@ + + +Bug4
 ContentsIndex
Bug4
Synopsis
foo :: Int
Documentation
foo :: Int
don't use apostrophe's in the wrong place's +
Produced by Haddock version 2.1.0
diff --git a/tests/output/Bug6.html b/tests/output/Bug6.html new file mode 100644 index 00000000..806f5470 --- /dev/null +++ b/tests/output/Bug6.html @@ -0,0 +1,482 @@ + + +Bug6
 ContentsIndex
Bug6
Description
Exporting records. +
Synopsis
data A = A Int
data B = B {
b :: Int
}
b :: B -> Int
data C = C {
c1 :: Int
c2 :: Int
}
data D = D Int Int
newtype E = E Int
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 + (should still be visible as a field name) +
Constructors
B
b :: Int
b :: B -> Int
data C
.. with fields names as subordinate names in the export +
Constructors
C
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
Produced by Haddock version 2.1.0
diff --git a/tests/output/Bug6.html.ref b/tests/output/Bug6.html.ref new file mode 100644 index 00000000..806f5470 --- /dev/null +++ b/tests/output/Bug6.html.ref @@ -0,0 +1,482 @@ + + +Bug6
 ContentsIndex
Bug6
Description
Exporting records. +
Synopsis
data A = A Int
data B = B {
b :: Int
}
b :: B -> Int
data C = C {
c1 :: Int
c2 :: Int
}
data D = D Int Int
newtype E = E Int
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 + (should still be visible as a field name) +
Constructors
B
b :: Int
b :: B -> Int
data C
.. with fields names as subordinate names in the export +
Constructors
C
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
Produced by Haddock version 2.1.0
diff --git a/tests/output/Bug7.html b/tests/output/Bug7.html new file mode 100644 index 00000000..788ae3a9 --- /dev/null +++ b/tests/output/Bug7.html @@ -0,0 +1,242 @@ + + +Bug7
 ContentsIndex
Bug7
Description
This module caused a duplicate instance in the documentation for the Foo + type. +
Synopsis
data Foo = Foo
class Bar x y
Documentation
data Foo
The Foo datatype +
Constructors
Foo
show/hide Instances
class Bar x y
The Bar class +
show/hide Instances
Produced by Haddock version 2.1.0
diff --git a/tests/output/Bug7.html.ref b/tests/output/Bug7.html.ref new file mode 100644 index 00000000..788ae3a9 --- /dev/null +++ b/tests/output/Bug7.html.ref @@ -0,0 +1,242 @@ + + +Bug7
 ContentsIndex
Bug7
Description
This module caused a duplicate instance in the documentation for the Foo + type. +
Synopsis
data Foo = Foo
class Bar x y
Documentation
data Foo
The Foo datatype +
Constructors
Foo
show/hide Instances
class Bar x y
The Bar class +
show/hide Instances
Produced by Haddock version 2.1.0
diff --git a/tests/output/Bug8.html b/tests/output/Bug8.html new file mode 100644 index 00000000..d6be9969 --- /dev/null +++ b/tests/output/Bug8.html @@ -0,0 +1,128 @@ + + +Bug8
 ContentsIndex
Bug8
Documentation
data Typ
Constructors
Type (String, [Typ])
TFree (String, [String])
Produced by Haddock version 2.1.0
diff --git a/tests/output/Bug8.html.ref b/tests/output/Bug8.html.ref new file mode 100644 index 00000000..d6be9969 --- /dev/null +++ b/tests/output/Bug8.html.ref @@ -0,0 +1,128 @@ + + +Bug8
 ContentsIndex
Bug8
Documentation
data Typ
Constructors
Type (String, [Typ])
TFree (String, [String])
Produced by Haddock version 2.1.0
diff --git a/tests/output/Bugs.html b/tests/output/Bugs.html new file mode 100644 index 00000000..f9a3522b --- /dev/null +++ b/tests/output/Bugs.html @@ -0,0 +1,116 @@ + + +Bugs
 ContentsIndex
Bugs
Documentation
data A a
Constructors
A a (a -> Int)
Produced by Haddock version 2.1.0
diff --git a/tests/output/Hash.html b/tests/output/Hash.html new file mode 100644 index 00000000..5e03b2ef --- /dev/null +++ b/tests/output/Hash.html @@ -0,0 +1,412 @@ + + +Hash
 ContentsIndex
Hash
Contents
The HashTable type +
Operations on HashTables +
The Hash class +
Description
Implementation of fixed-size hash tables, with a type + class for constructing hash values for structured types. +
Synopsis
data HashTable key val
new :: (Eq key, Hash key) => Int -> IO (HashTable key val)
insert :: (Eq key, Hash key) => key -> val -> IO ()
lookup :: Hash key => key -> IO (Maybe val)
class Hash a where
hash :: a -> Int
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 +
Produced by Haddock version 2.1.0
diff --git a/tests/output/Hash.html.ref b/tests/output/Hash.html.ref new file mode 100644 index 00000000..5e03b2ef --- /dev/null +++ b/tests/output/Hash.html.ref @@ -0,0 +1,412 @@ + + +Hash
 ContentsIndex
Hash
Contents
The HashTable type +
Operations on HashTables +
The Hash class +
Description
Implementation of fixed-size hash tables, with a type + class for constructing hash values for structured types. +
Synopsis
data HashTable key val
new :: (Eq key, Hash key) => Int -> IO (HashTable key val)
insert :: (Eq key, Hash key) => key -> val -> IO ()
lookup :: Hash key => key -> IO (Maybe val)
class Hash a where
hash :: a -> Int
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 +
Produced by Haddock version 2.1.0
diff --git a/tests/output/Hidden.html.ref b/tests/output/Hidden.html.ref new file mode 100644 index 00000000..2e4acc71 --- /dev/null +++ b/tests/output/Hidden.html.ref @@ -0,0 +1,88 @@ + + +Hidden
 ContentsIndex
Hidden
Documentation
hidden :: Int -> Int
Produced by Haddock version 2.0.0.0
diff --git a/tests/output/NoLayout.html b/tests/output/NoLayout.html new file mode 100644 index 00000000..4709e907 --- /dev/null +++ b/tests/output/NoLayout.html @@ -0,0 +1,113 @@ + + +NoLayout
 ContentsIndex
NoLayout
Synopsis
g :: Int
Documentation
g :: Int
the class C +
Produced by Haddock version 2.1.0
diff --git a/tests/output/NoLayout.html.ref b/tests/output/NoLayout.html.ref new file mode 100644 index 00000000..4709e907 --- /dev/null +++ b/tests/output/NoLayout.html.ref @@ -0,0 +1,113 @@ + + +NoLayout
 ContentsIndex
NoLayout
Synopsis
g :: Int
Documentation
g :: Int
the class C +
Produced by Haddock version 2.1.0
diff --git a/tests/output/Test.html b/tests/output/Test.html new file mode 100644 index 00000000..38df4004 --- /dev/null +++ b/tests/output/Test.html @@ -0,0 +1,3105 @@ + + +Test
 ContentsIndex
Test
Portabilityportable
Stabilityprovisional
Maintainerlibraries@haskell.org
Contents
Type declarations +
Data types +
Records +
Class declarations +
Function types +
Auxiliary stuff +
A hidden module +
A visible module +
Existential / Universal types +
Type signatures with argument docs +
A section +
A subsection +
Description
This module illustrates & tests most of the features of Haddock. + Testing references from the description: T, f, g, visible. +
Synopsis
data T a b
= A Int (Maybe Float)
| B (T a b, T Int Float)
data T2 a b
data T3 a b
= A1 a
| B1 b
data T4 a b
= A2 a
| B2 b
data T5 a b
= A3 a
| B3 b
data T6
= A4
| B4
| C4
newtype N1 a = N1 a
newtype N2 a b = N2 {
n :: a b
}
newtype N3 a b = N3 {
n3 :: a b
}
data N4 a b
newtype N5 a b = N5 {
n5 :: a b
}
newtype N6 a b = N6 {
n6 :: a b
}
newtype N7 a b = N7 {
n7 :: a b
}
data R
= C1 {
p :: Int
q :: forall a. a -> a
r :: Int
s :: Int
}
| C2 {
t :: T1 -> (T2 Int Int) -> (T3 Bool Bool) -> (T4 Float Float) -> T5 () ()
u :: Int
v :: Int
}
data R1 = C3 {
s1 :: Int
s2 :: Int
s3 :: Int
}
p :: R -> Int
q :: R -> forall a. a -> a
u :: R -> Int
class D a => C a where
a :: IO a
b :: [a]
class D a where
d :: T a b
e :: (a, a)
class E a
class F a where
ff :: a
a :: C a => IO a
f :: C a => a -> Int
g :: Int -> IO CInt
hidden :: Int -> Int
module Visible
data Ex a
= forall b . C b => Ex1 b
| forall b . Ex2 b
| forall b . C a => Ex3 b
| Ex4 (forall a. a -> a)
k :: T () () -> T2 Int Int -> T3 Bool Bool -> T4 Float Float -> T5 () () -> IO ()
l :: (Int, Int, Float) -> Int
m :: R -> N1 () -> IO Int
o :: Float -> IO Float
f' :: Int
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 adocuments A3 +
B3 bdocuments B3 +
data T6
Testing alternative comment styles +
Constructors
A4This is the doc for A4 +
B4This is the doc for B4 +
C4This is the doc for C4 +
newtype N1 a
A newtype +
Constructors
N1 a
newtype N2 a b
A newtype with a fieldname +
Constructors
N2
n :: a b
newtype N3 a b
A newtype with a fieldname, documentation on the field +
Constructors
N3
n3 :: a bthis 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
n5 :: a bno docs on the datatype or the constructor +
newtype N6 a b
Constructors
N6docs on the constructor only +
n6 :: a b
newtype N7 a b
docs on the newtype and the constructor +
Constructors
N7The N7 constructor +
n7 :: a b
Records +
data R
This is the documentation for the R record, which has four fields, + p, q, r, and s. +
Constructors
C1This is the C1 record constructor, with the following fields: +
p :: IntThis comment applies to the p field +
q :: forall a. a -> aThis comment applies to the q field +
r :: IntThis comment applies to both r and s +
s :: IntThis comment applies to both r and s +
C2This is the C2 record constructor, also with some 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
C3This is the C3 record constructor +
s1 :: IntThe s1 record selector +
s2 :: IntThe s2 record selector +
s3 :: IntThe s3 record selector +
test that we can export record selectors on their own: +
p :: R -> Int
This comment applies to the p field +
q :: R -> forall a. a -> a
This comment applies to the q field +
u :: R -> Int
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)
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: +
a :: C a => IO a
this is a description of the a method +
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) +

+     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) + 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
+test1
+
 test2
+  test3
+
+test1
+test2
+
test3
+test4
+
+test1
+test2
+
test3
+test4
+
test3
+test4
+
+test1
+test2
+

aux11: +

test3
+test4
+
+test1
+test2
+
 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
:: T () ()This argument has type T +
-> T2 Int IntThis argument has type 'T2 Int Int' +
-> T3 Bool Bool -> T4 Float FloatThis 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
:: (Int, Int, Float)takes a triple +
-> Intreturns an Int +
m
:: R
-> N1 ()one of the arguments +
-> IO Intand the return value +
This function has some arg docs +
o
:: FloatThe input float +
-> IO FloatThe 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\'' +
Produced by Haddock version 2.1.0
diff --git a/tests/output/Test.html.ref b/tests/output/Test.html.ref new file mode 100644 index 00000000..38df4004 --- /dev/null +++ b/tests/output/Test.html.ref @@ -0,0 +1,3105 @@ + + +Test
 ContentsIndex
Test
Portabilityportable
Stabilityprovisional
Maintainerlibraries@haskell.org
Contents
Type declarations +
Data types +
Records +
Class declarations +
Function types +
Auxiliary stuff +
A hidden module +
A visible module +
Existential / Universal types +
Type signatures with argument docs +
A section +
A subsection +
Description
This module illustrates & tests most of the features of Haddock. + Testing references from the description: T, f, g, visible. +
Synopsis
data T a b
= A Int (Maybe Float)
| B (T a b, T Int Float)
data T2 a b
data T3 a b
= A1 a
| B1 b
data T4 a b
= A2 a
| B2 b
data T5 a b
= A3 a
| B3 b
data T6
= A4
| B4
| C4
newtype N1 a = N1 a
newtype N2 a b = N2 {
n :: a b
}
newtype N3 a b = N3 {
n3 :: a b
}
data N4 a b
newtype N5 a b = N5 {
n5 :: a b
}
newtype N6 a b = N6 {
n6 :: a b
}
newtype N7 a b = N7 {
n7 :: a b
}
data R
= C1 {
p :: Int
q :: forall a. a -> a
r :: Int
s :: Int
}
| C2 {
t :: T1 -> (T2 Int Int) -> (T3 Bool Bool) -> (T4 Float Float) -> T5 () ()
u :: Int
v :: Int
}
data R1 = C3 {
s1 :: Int
s2 :: Int
s3 :: Int
}
p :: R -> Int
q :: R -> forall a. a -> a
u :: R -> Int
class D a => C a where
a :: IO a
b :: [a]
class D a where
d :: T a b
e :: (a, a)
class E a
class F a where
ff :: a
a :: C a => IO a
f :: C a => a -> Int
g :: Int -> IO CInt
hidden :: Int -> Int
module Visible
data Ex a
= forall b . C b => Ex1 b
| forall b . Ex2 b
| forall b . C a => Ex3 b
| Ex4 (forall a. a -> a)
k :: T () () -> T2 Int Int -> T3 Bool Bool -> T4 Float Float -> T5 () () -> IO ()
l :: (Int, Int, Float) -> Int
m :: R -> N1 () -> IO Int
o :: Float -> IO Float
f' :: Int
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 adocuments A3 +
B3 bdocuments B3 +
data T6
Testing alternative comment styles +
Constructors
A4This is the doc for A4 +
B4This is the doc for B4 +
C4This is the doc for C4 +
newtype N1 a
A newtype +
Constructors
N1 a
newtype N2 a b
A newtype with a fieldname +
Constructors
N2
n :: a b
newtype N3 a b
A newtype with a fieldname, documentation on the field +
Constructors
N3
n3 :: a bthis 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
n5 :: a bno docs on the datatype or the constructor +
newtype N6 a b
Constructors
N6docs on the constructor only +
n6 :: a b
newtype N7 a b
docs on the newtype and the constructor +
Constructors
N7The N7 constructor +
n7 :: a b
Records +
data R
This is the documentation for the R record, which has four fields, + p, q, r, and s. +
Constructors
C1This is the C1 record constructor, with the following fields: +
p :: IntThis comment applies to the p field +
q :: forall a. a -> aThis comment applies to the q field +
r :: IntThis comment applies to both r and s +
s :: IntThis comment applies to both r and s +
C2This is the C2 record constructor, also with some 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
C3This is the C3 record constructor +
s1 :: IntThe s1 record selector +
s2 :: IntThe s2 record selector +
s3 :: IntThe s3 record selector +
test that we can export record selectors on their own: +
p :: R -> Int
This comment applies to the p field +
q :: R -> forall a. a -> a
This comment applies to the q field +
u :: R -> Int
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)
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: +
a :: C a => IO a
this is a description of the a method +
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) +

+     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) + 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
+test1
+
 test2
+  test3
+
+test1
+test2
+
test3
+test4
+
+test1
+test2
+
test3
+test4
+
test3
+test4
+
+test1
+test2
+

aux11: +

test3
+test4
+
+test1
+test2
+
 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
:: T () ()This argument has type T +
-> T2 Int IntThis argument has type 'T2 Int Int' +
-> T3 Bool Bool -> T4 Float FloatThis 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
:: (Int, Int, Float)takes a triple +
-> Intreturns an Int +
m
:: R
-> N1 ()one of the arguments +
-> IO Intand the return value +
This function has some arg docs +
o
:: FloatThe input float +
-> IO FloatThe 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\'' +
Produced by Haddock version 2.1.0
diff --git a/tests/output/TypeOperators.html b/tests/output/TypeOperators.html new file mode 100644 index 00000000..9c0149dd --- /dev/null +++ b/tests/output/TypeOperators.html @@ -0,0 +1,380 @@ + + +TypeOperators
 ContentsIndex
TypeOperators
Contents
stuff +
Synopsis
data a :-: b
data (a :+: b) c
data Op a b
newtype O g f a = O {
unO :: g (f a)
}
biO :: (g `O` f) a
newtype Flip (~>) b a = Flip {
unFlip :: a ~> b
}
stuff +
data a :-: b
data (a :+: b) c
data Op a b
newtype O g f a
Constructors
O
unO :: g (f a)
biO :: (g `O` f) a
newtype Flip (~>) b a
Constructors
Flip
unFlip :: a ~> b
Produced by Haddock version 2.1.0
diff --git a/tests/output/TypeOperators.html.ref b/tests/output/TypeOperators.html.ref new file mode 100644 index 00000000..9c0149dd --- /dev/null +++ b/tests/output/TypeOperators.html.ref @@ -0,0 +1,380 @@ + + +TypeOperators
 ContentsIndex
TypeOperators
Contents
stuff +
Synopsis
data a :-: b
data (a :+: b) c
data Op a b
newtype O g f a = O {
unO :: g (f a)
}
biO :: (g `O` f) a
newtype Flip (~>) b a = Flip {
unFlip :: a ~> b
}
stuff +
data a :-: b
data (a :+: b) c
data Op a b
newtype O g f a
Constructors
O
unO :: g (f a)
biO :: (g `O` f) a
newtype Flip (~>) b a
Constructors
Flip
unFlip :: a ~> b
Produced by Haddock version 2.1.0
diff --git a/tests/output/Visible.html b/tests/output/Visible.html new file mode 100644 index 00000000..9ed7f264 --- /dev/null +++ b/tests/output/Visible.html @@ -0,0 +1,88 @@ + + +Visible
 ContentsIndex
Visible
Documentation
visible :: Int -> Int
Produced by Haddock version 2.1.0
diff --git a/tests/output/Visible.html.ref b/tests/output/Visible.html.ref new file mode 100644 index 00000000..9ed7f264 --- /dev/null +++ b/tests/output/Visible.html.ref @@ -0,0 +1,88 @@ + + +Visible
 ContentsIndex
Visible
Documentation
visible :: Int -> Int
Produced by Haddock version 2.1.0
diff --git a/tests/output/doc-index.html b/tests/output/doc-index.html new file mode 100644 index 00000000..95a06336 --- /dev/null +++ b/tests/output/doc-index.html @@ -0,0 +1,1104 @@ + + + (Index)
 ContentsIndex
Search:
--->
-->
:+:
:-:
A
1 (Type/Class)
2 (Data Constructor)
3 (Type/Class)
4 (Data Constructor)
5 (Data Constructor)
6 (Type/Class)
7 (Data Constructor)
a
A1
A2
A3
A4
B
1 (Type/Class)
2 (Data Constructor)
3 (Data Constructor)
b
1 (Function)
2 (Function)
B1
B2
B3
B4
Bar
biO
C
1 (Type/Class)
2 (Data Constructor)
3 (Type/Class)
C1
c1
C2
c2
C3
C4
D
1 (Type/Class)
2 (Data Constructor)
3 (Type/Class)
d
d1
E
1 (Type/Class)
2 (Data Constructor)
3 (Type/Class)
e
Ex
Ex1
Ex2
Ex3
Ex4
F
f
f'
ff
Flip
1 (Type/Class)
2 (Data Constructor)
Foo
1 (Type/Class)
2 (Data Constructor)
foo
1 (Function)
2 (Function)
g
1 (Function)
2 (Function)
Hash
hash
HashTable
hidden
insert
k
l
lookup
m
main
n
N1
1 (Type/Class)
2 (Data Constructor)
N2
1 (Type/Class)
2 (Data Constructor)
N3
1 (Type/Class)
2 (Data Constructor)
n3
N4
N5
1 (Type/Class)
2 (Data Constructor)
n5
N6
1 (Type/Class)
2 (Data Constructor)
n6
N7
1 (Type/Class)
2 (Data Constructor)
n7
new
O
1 (Type/Class)
2 (Data Constructor)
o
Op
p
q
R
r
R1
s
1 (Function)
2 (Function)
s1
s2
s3
T
1 (Type/Class)
2 (Data Constructor)
3 (Type/Class)
t
1 (Function)
2 (Function)
T2
T3
T4
T5
T6
TFree
Typ
Type
u
unFlip
unO
v
visible
x
diff --git a/tests/output/index.html b/tests/output/index.html new file mode 100644 index 00000000..6210c6e3 --- /dev/null +++ b/tests/output/index.html @@ -0,0 +1,208 @@ + + +
 ContentsIndex
Modules
A
B
Bug1
Bug2
Bug3
Bug4
Bug6
Bug7
Bug8
Bugs
Hash
NoLayout
Test
TypeOperators
Visible
Produced by Haddock version 2.1.0
-- cgit v1.2.3