diff --git a/ghc/tests/reader/should_compile/MyList.hi b/ghc/tests/reader/should_compile/MyList.hi
new file mode 100644
index 0000000000000000000000000000000000000000..bce90f3353a8d8e58c82102005151a424ae7f0a1
--- /dev/null
+++ b/ghc/tests/reader/should_compile/MyList.hi
@@ -0,0 +1,12 @@
+_interface_ MyList 1
+_instance_modules_
+Addr ArrBase Foreign IO PrelBounded PrelNum
+_usages_
+PrelBase 1 :: $d2 1 $d29 1 $d31 1 $d33 1 $d38 1 Eval 1;
+_exports_
+MyList MyList(Empty :::);
+_instances_
+instance _forall_ [a] => {PrelBase.Eval (MyList a)} = $d1;
+_declarations_
+1 $d1 _:_ _forall_ [a] => {PrelBase.Eval (MyList a)} ;;
+1 data MyList a = Empty |  ::: (MyList a) (MyList a) ;
diff --git a/ghc/tests/reader/should_compile/read006.hs b/ghc/tests/reader/should_compile/read006.hs
new file mode 100644
index 0000000000000000000000000000000000000000..2fda8cab0747b24781adb48d574852155c62363d
--- /dev/null
+++ b/ghc/tests/reader/should_compile/read006.hs
@@ -0,0 +1,5 @@
+module MyList (MyList(Empty, (:::))) where
+
+data MyList a =   Empty
+                | (MyList a) ::: (MyList a)
+
diff --git a/ghc/tests/reader/should_compile/read006.stderr b/ghc/tests/reader/should_compile/read006.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..a43931d425c8ea8e916478633d354efe9c7f40ea
--- /dev/null
+++ b/ghc/tests/reader/should_compile/read006.stderr
@@ -0,0 +1,13 @@
+Module version unchanged at 1
+_interface_ MyList 1
+_instance_modules_
+Addr ArrBase Foreign IO PrelBounded PrelNum
+_usages_
+PrelBase 1 :: $d2 1 $d29 1 $d31 1 $d33 1 $d38 1 Eval 1;
+_exports_
+MyList MyList(Empty :::);
+_instances_
+instance _forall_ [a] => {PrelBase.Eval (MyList a)} = $d1;
+_declarations_
+1 $d1 _:_ _forall_ [a] => {PrelBase.Eval (MyList a)} ;;
+1 data MyList a = Empty |  ::: (MyList a) (MyList a) ;
diff --git a/ghc/tests/reader/should_compile/read006.stdout b/ghc/tests/reader/should_compile/read006.stdout
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/ghc/tests/reader/should_compile/read007.hs b/ghc/tests/reader/should_compile/read007.hs
new file mode 100644
index 0000000000000000000000000000000000000000..a65188318f648d861ca396702c087d03760dfeff
--- /dev/null
+++ b/ghc/tests/reader/should_compile/read007.hs
@@ -0,0 +1,8 @@
+module User where
+
+import MyList
+
+myLength :: MyList a -> Int
+myLength Empty = 0
+myLength (x ::: xs) = 1 + myLength xs
+
diff --git a/ghc/tests/reader/should_compile/read007.stderr b/ghc/tests/reader/should_compile/read007.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391