diff --git a/examples/hide-bug/A.hs b/examples/hide-bug/A.hs
new file mode 100644
index 0000000000000000000000000000000000000000..a9386a40de9733667c80af7e6c790472418aea01
--- /dev/null
+++ b/examples/hide-bug/A.hs
@@ -0,0 +1,2 @@
+-- #hide
+module A where { data T = MkT; f :: T; f = MkT }
diff --git a/examples/hide-bug/B.hs b/examples/hide-bug/B.hs
new file mode 100644
index 0000000000000000000000000000000000000000..7c5b9dfe20834ffb00453d407abfe6328fbdb65d
--- /dev/null
+++ b/examples/hide-bug/B.hs
@@ -0,0 +1 @@
+module B(f, T) where import A
diff --git a/examples/hide-bug/C.hs b/examples/hide-bug/C.hs
new file mode 100644
index 0000000000000000000000000000000000000000..363221d9a628488363efc1f037071fc72a6b267a
--- /dev/null
+++ b/examples/hide-bug/C.hs
@@ -0,0 +1 @@
+module C(module B) where import B
diff --git a/examples/hide-bug/D.hs b/examples/hide-bug/D.hs
new file mode 100644
index 0000000000000000000000000000000000000000..30ac8acca50c8f2b9cf7105161ad34f8c7cb54ce
--- /dev/null
+++ b/examples/hide-bug/D.hs
@@ -0,0 +1,3 @@
+-- The link to the type T in the doc for this module should point to 
+-- B.T, not A.T.  Bug fixed in rev 1.59 of Main.hs.
+module D(f) where import C