diff --git a/testsuite/tests/ghci/scripts/T16804.script b/testsuite/tests/ghci/scripts/T16804.script
index ec30ec1537aeab18485189eb862cc7d5e0cc69ba..12afa35a54e52a77ef073ce56fa32048b9b45714 100644
--- a/testsuite/tests/ghci/scripts/T16804.script
+++ b/testsuite/tests/ghci/scripts/T16804.script
@@ -16,55 +16,57 @@ let putruler p s = ruler p 0 >> ruler p 1 >> ruler p 2 >> ruler p 3 >> return ""
 :set +c
 :l T16804a.hs T16804b.hs
 
-:cp  1 module T16804 where
+:cp  1 module T16804a where
 :putruler1
 
-:tp T16804a.hs  1  8  1 15
-:up T16804a.hs  1  8  1 15
+:tp T16804a.hs  1  8  1 14
+:up T16804a.hs  1  8  1 14
 
 :cp  2 
 :cp  3 import Data.Monoid
 :putruler1
 
-:tp T16804a.hs  3  8  3 12
-:tp T16804a.hs  3  8  3 19
+:tp T16804a.hs  3  8  3 11
+:tp T16804a.hs  3  8  3 18
+:tp T16804a.hs  3 13  3 18
 
-:up T16804a.hs  3  8  3 12
-:up T16804a.hs  3  8  3 19
+:up T16804a.hs  3  8  3 11
+:up T16804a.hs  3  8  3 18
+:up T16804a.hs  3 13  3 18
 
 :cp  4 
 :cp  5 data Test = A | B
 :cp  6   deriving (Show)
 :putruler1
 
-:tp T16804a.hs  5  6  5 10
-:tp T16804a.hs  5 13  5 14
-:tp T16804a.hs  5 15  5 16
-:tp T16804a.hs  5 17  5 18
-:tp T16804a.hs  6 13  6 17
+:tp T16804a.hs  5  6  5  9
+:tp T16804a.hs  5 13  5 13
+:tp T16804a.hs  5 15  5 15
+:tp T16804a.hs  5 17  5 17
+:tp T16804a.hs  6 13  6 16
 
-:up T16804a.hs  5  6  5 10
-:up T16804a.hs  5 13  5 14
-:up T16804a.hs  5 15  5 16
-:up T16804a.hs  5 17  5 18
-:up T16804a.hs  6 13  6 17
+:up T16804a.hs  5  6  5  9
+:up T16804a.hs  5 13  5 13
+:up T16804a.hs  5 15  5 15
+:up T16804a.hs  5 17  5 17
+:up T16804a.hs  6 13  6 16
 
 :cp  7 instance Monoid Test where
 :cp  8   mempty = A
 :cp  9   -- gone 
 :cp 10   -- gone
 :putruler1
-:tp T16804a.hs  7 10  7 16 
-:tp T16804a.hs  7 17  7 21
-:tp T16804a.hs  7 10  7 21
-:tp T16804a.hs  8  3  8  9
-:tp T16804a.hs  8 12  8 13
-
-:up T16804a.hs  7 10  7 16 
-:up T16804a.hs  7 17  7 21
-:up T16804a.hs  7 10  7 21
-:up T16804a.hs  8  3  8  9
-:up T16804a.hs  8 12  8 13
+:tp T16804a.hs  7 10  7 15 
+:tp T16804a.hs  7 17  7 20
+:tp T16804a.hs  7 10  7 20
+:tp T16804a.hs  8  3  8  8
+:tp T16804a.hs  8 12  8 12
+
+:up T16804a.hs  7 10  7 15 
+:up T16804a.hs  7 17  7 20
+:up T16804a.hs  7 10  7 20
+:up T16804a.hs  8  3  8  8
+:up T16804a.hs  8 12  8 12
 
 :cp 11  
 :cp 12 testFunction :: Test -> Test -> Bool
@@ -72,79 +74,78 @@ let putruler p s = ruler p 0 >> ruler p 1 >> ruler p 2 >> ruler p 3 >> return ""
 :cp 14 testFunction B A = True
 :cp 15 testFunction _ _ = False
 :putruler2
-:tp T16804a.hs 12  1 12 13
-:tp T16804a.hs 13  1 13 13
-:tp T16804a.hs 13 14 13 15
-:tp T16804a.hs 13 16 13 17
-:tp T16804a.hs 15 16 15 17
-:tp T16804a.hs 15 20 15 25
-
-:up T16804a.hs 12  1 12 13
-:up T16804a.hs 13  1 13 13
-:up T16804a.hs 13 14 13 15
-:up T16804a.hs 13 16 13 17
-:up T16804a.hs 15 16 15 17
-:up T16804a.hs 15 20 15 25
-
-:cp 
+:tp T16804a.hs 12  1 12 12
+:tp T16804a.hs 13  1 13 12
+:tp T16804a.hs 13 14 13 14
+:tp T16804a.hs 13 16 13 16
+:tp T16804a.hs 15 16 15 16
+:tp T16804a.hs 15 20 15 24
+
+:up T16804a.hs 12  1 12 12
+:up T16804a.hs 13  1 13 12
+:up T16804a.hs 13 14 13 14
+:up T16804a.hs 13 16 13 16
+:up T16804a.hs 15 16 15 16
+:up T16804a.hs 15 20 15 24
+
 :cp 16  
 :cp 17 testFunction2 :: Bool -> Test
 :cp 18 testFunction2 True = A
 :cp 19 testFunction2 False = B
 :putruler2
-:tp T16804a.hs 18 15 18 19
-:tp T16804a.hs 18 22 18 23
+:tp T16804a.hs 18 15 18 18
+:tp T16804a.hs 18 22 18 22
 
-:up T16804a.hs 18 15 18 19
-:up T16804a.hs 18 22 18 23
+:up T16804a.hs 18 15 18 18
+:up T16804a.hs 18 22 18 22
 
 :cp 20  
 :cp 21 niceValue :: Int
 :cp 22 niceValue = getSum (Sum 1 <> Sum 2 <> mempty)
 :putruler2
-:tp T16804a.hs 22 13 22 19
-:tp T16804a.hs 22 21 22 24
-:tp T16804a.hs 22 25 22 26
-:tp T16804a.hs 22 21 22 26
-:tp T16804a.hs 22 27 22 29
-
-:up T16804a.hs 22 13 22 19
-:up T16804a.hs 22 21 22 24
-:up T16804a.hs 22 25 22 26
-:up T16804a.hs 22 21 22 26
-:up T16804a.hs 22 27 22 29
+:tp T16804a.hs 22 13 22 18
+:tp T16804a.hs 22 21 22 23
+:tp T16804a.hs 22 25 22 25
+:tp T16804a.hs 22 21 22 25
+:tp T16804a.hs 22 27 22 28
+
+:up T16804a.hs 22 13 22 18
+:up T16804a.hs 22 21 22 23
+:up T16804a.hs 22 25 22 25
+:up T16804a.hs 22 21 22 25
+:up T16804a.hs 22 27 22 28
 
 :cp 23  
 :cp 24 niceValue2 :: Test
 :cp 25 niceValue2 = A <> A <> A <> B <> A <> mempty
 :putruler2
-:tp T16804a.hs 25 14 25 15
-:tp T16804a.hs 25 16 25 18
-:tp T16804a.hs 25 39 25 45
+:tp T16804a.hs 25 14 25 14
+:tp T16804a.hs 25 16 25 17
+:tp T16804a.hs 25 39 25 44
 
-:up T16804a.hs 25 14 25 15
-:up T16804a.hs 25 16 25 18
-:up T16804a.hs 25 39 25 45
+:up T16804a.hs 25 14 25 14
+:up T16804a.hs 25 16 25 17
+:up T16804a.hs 25 39 25 44
 
 :cp 26
 :cp 27 instance Semigroup Test where
 :cp 28   A <> val = val
 :cp 29   B <> _   = B
 :putruler2
-:tp T16804a.hs 28  3 28  4
-:tp T16804a.hs 28  5 28  7
-:tp T16804a.hs 28  8 28 11
-:tp T16804a.hs 28 14 28 17
-:tp T16804a.hs 29  3 29  4
-:tp T16804a.hs 29  5 29  7
-:tp T16804a.hs 29  8 29  9
-:tp T16804a.hs 29 14 29 15
-
-:up T16804a.hs 28  3 28  4
-:up T16804a.hs 28  5 28  7
-:up T16804a.hs 28  8 28 11
-:up T16804a.hs 28 14 28 17
-:up T16804a.hs 29  3 29  4
-:up T16804a.hs 29  5 29  7
-:up T16804a.hs 29  8 29  9
-:up T16804a.hs 29 14 29 15
+:tp T16804a.hs 28  3 28  3
+:tp T16804a.hs 28  5 28  6
+:tp T16804a.hs 28  8 28 10
+:tp T16804a.hs 28 14 28 16
+:tp T16804a.hs 29  3 29  3
+:tp T16804a.hs 29  5 29  6
+:tp T16804a.hs 29  8 29  8
+:tp T16804a.hs 29 14 29 14
+
+:up T16804a.hs 28  3 28  3
+:up T16804a.hs 28  5 28  6
+:up T16804a.hs 28  8 28 10
+:up T16804a.hs 28 14 28 16
+:up T16804a.hs 29  3 29  3
+:up T16804a.hs 29  5 29  6
+:up T16804a.hs 29  8 29  8
+:up T16804a.hs 29 14 29 14
diff --git a/testsuite/tests/ghci/scripts/T16804.stderr b/testsuite/tests/ghci/scripts/T16804.stderr
index 3d439200cb1f01e6f2b5e085de5f73b106ea83bc..ca243087b9e651b3716aa8f39500170f641a977b 100644
--- a/testsuite/tests/ghci/scripts/T16804.stderr
+++ b/testsuite/tests/ghci/scripts/T16804.stderr
@@ -28,3 +28,4 @@ Couldn't resolve to any modules.
 Couldn't resolve to any modules.
 Couldn't resolve to any modules.
 Couldn't resolve to any modules.
+Couldn't resolve to any modules.
diff --git a/testsuite/tests/ghci/scripts/T16804.stdout b/testsuite/tests/ghci/scripts/T16804.stdout
index ddae235fc02f2e26afad9c5fde16ba3dd8b450b4..a02f32e7844c9ab179a0a30bc4ec7a613cbc2984 100644
--- a/testsuite/tests/ghci/scripts/T16804.stdout
+++ b/testsuite/tests/ghci/scripts/T16804.stdout
@@ -1,24 +1,27 @@
 Collecting type info for 2 module(s) ... 
-1 module T16804 where
+1 module T16804a where
   1234567890
             1234567890
                       1234567890
                                 1234567890
-input: :type-at T16804a.hs  1  8  1 15 undefined
+input: :type-at T16804a.hs  1  8  1 14 undefined
 undefined :: forall a. a
-input: :uses T16804a.hs  1  8  1 15
+input: :uses T16804a.hs  1  8  1 14
 2
 3 import Data.Monoid
   1234567890
             1234567890
                       1234567890
                                 1234567890
-input: :type-at T16804a.hs  3  8  3 12 undefined
+input: :type-at T16804a.hs  3  8  3 11 undefined
 undefined :: forall a. a
-input: :type-at T16804a.hs  3  8  3 19 undefined
+input: :type-at T16804a.hs  3  8  3 18 undefined
 undefined :: forall a. a
-input: :uses T16804a.hs  3  8  3 12
-input: :uses T16804a.hs  3  8  3 19
+input: :type-at T16804a.hs  3 13  3 18 undefined
+undefined :: forall a. a
+input: :uses T16804a.hs  3  8  3 11
+input: :uses T16804a.hs  3  8  3 18
+input: :uses T16804a.hs  3 13  3 18
 4
 5 data Test = A | B
 6   deriving (Show)
@@ -26,21 +29,21 @@ input: :uses T16804a.hs  3  8  3 19
             1234567890
                       1234567890
                                 1234567890
-input: :type-at T16804a.hs  5  6  5 10 undefined
+input: :type-at T16804a.hs  5  6  5  9 undefined
 undefined :: forall a. a
-input: :type-at T16804a.hs  5 13  5 14 undefined
+input: :type-at T16804a.hs  5 13  5 13 undefined
 undefined :: forall a. a
-input: :type-at T16804a.hs  5 15  5 16 undefined
+input: :type-at T16804a.hs  5 15  5 15 undefined
 undefined :: forall a. a
-input: :type-at T16804a.hs  5 17  5 18 undefined
+input: :type-at T16804a.hs  5 17  5 17 undefined
 undefined :: forall a. a
-input: :type-at T16804a.hs  6 13  6 17 undefined
+input: :type-at T16804a.hs  6 13  6 16 undefined
 undefined :: [Test] -> ShowS
-input: :uses T16804a.hs  5  6  5 10
-input: :uses T16804a.hs  5 13  5 14
-input: :uses T16804a.hs  5 15  5 16
-input: :uses T16804a.hs  5 17  5 18
-input: :uses T16804a.hs  6 13  6 17
+input: :uses T16804a.hs  5  6  5  9
+input: :uses T16804a.hs  5 13  5 13
+input: :uses T16804a.hs  5 15  5 15
+input: :uses T16804a.hs  5 17  5 17
+input: :uses T16804a.hs  6 13  6 16
 T16804a.hs:(6,13)-(6,16)
 T16804a.hs:(6,13)-(6,16)
 7 instance Monoid Test where
@@ -51,25 +54,25 @@ T16804a.hs:(6,13)-(6,16)
             1234567890
                       1234567890
                                 1234567890
-input: :type-at T16804a.hs  7 10  7 16 undefined
+input: :type-at T16804a.hs  7 10  7 15 undefined
 undefined :: forall a. a
-input: :type-at T16804a.hs  7 17  7 21 undefined
+input: :type-at T16804a.hs  7 17  7 20 undefined
 undefined :: forall a. a
-input: :type-at T16804a.hs  7 10  7 21 undefined
+input: :type-at T16804a.hs  7 10  7 20 undefined
 undefined :: [Test] -> Test
-input: :type-at T16804a.hs  8  3  8  9 undefined
+input: :type-at T16804a.hs  8  3  8  8 undefined
 undefined :: Test
-input: :type-at T16804a.hs  8 12  8 13 undefined
+input: :type-at T16804a.hs  8 12  8 12 undefined
 undefined :: Test
-input: :uses T16804a.hs  7 10  7 16
-input: :uses T16804a.hs  7 17  7 21
-input: :uses T16804a.hs  7 10  7 21
+input: :uses T16804a.hs  7 10  7 15
+input: :uses T16804a.hs  7 17  7 20
+input: :uses T16804a.hs  7 10  7 20
 T16804a.hs:(7,10)-(7,20)
 T16804a.hs:(7,10)-(7,20)
-input: :uses T16804a.hs  8  3  8  9
+input: :uses T16804a.hs  8  3  8  8
 T16804a.hs:(8,3)-(8,8)
 T16804a.hs:(8,3)-(8,8)
-input: :uses T16804a.hs  8 12  8 13
+input: :uses T16804a.hs  8 12  8 12
 11
 12 testFunction :: Test -> Test -> Bool
 13 testFunction A B = True
@@ -79,27 +82,26 @@ input: :uses T16804a.hs  8 12  8 13
              1234567890
                        1234567890
                                  1234567890
-input: :type-at T16804a.hs 12  1 12 13 undefined
+input: :type-at T16804a.hs 12  1 12 12 undefined
 undefined :: forall a. a
-input: :type-at T16804a.hs 13  1 13 13 undefined
+input: :type-at T16804a.hs 13  1 13 12 undefined
 undefined :: Test -> Test -> Bool
-input: :type-at T16804a.hs 13 14 13 15 undefined
+input: :type-at T16804a.hs 13 14 13 14 undefined
 undefined :: Test
-input: :type-at T16804a.hs 13 16 13 17 undefined
+input: :type-at T16804a.hs 13 16 13 16 undefined
 undefined :: Test
-input: :type-at T16804a.hs 15 16 15 17 undefined
+input: :type-at T16804a.hs 15 16 15 16 undefined
 undefined :: Test
-input: :type-at T16804a.hs 15 20 15 25 undefined
+input: :type-at T16804a.hs 15 20 15 24 undefined
 undefined :: Bool
-input: :uses T16804a.hs 12  1 12 13
-input: :uses T16804a.hs 13  1 13 13
+input: :uses T16804a.hs 12  1 12 12
+input: :uses T16804a.hs 13  1 13 12
 T16804a.hs:(13,1)-(13,12)
 T16804a.hs:(13,1)-(13,12)
-input: :uses T16804a.hs 13 14 13 15
-input: :uses T16804a.hs 13 16 13 17
-input: :uses T16804a.hs 15 16 15 17
-input: :uses T16804a.hs 15 20 15 25
-
+input: :uses T16804a.hs 13 14 13 14
+input: :uses T16804a.hs 13 16 13 16
+input: :uses T16804a.hs 15 16 15 16
+input: :uses T16804a.hs 15 20 15 24
 16
 17 testFunction2 :: Bool -> Test
 18 testFunction2 True = A
@@ -108,12 +110,12 @@ input: :uses T16804a.hs 15 20 15 25
              1234567890
                        1234567890
                                  1234567890
-input: :type-at T16804a.hs 18 15 18 19 undefined
+input: :type-at T16804a.hs 18 15 18 18 undefined
 undefined :: Bool
-input: :type-at T16804a.hs 18 22 18 23 undefined
+input: :type-at T16804a.hs 18 22 18 22 undefined
 undefined :: Test
-input: :uses T16804a.hs 18 15 18 19
-input: :uses T16804a.hs 18 22 18 23
+input: :uses T16804a.hs 18 15 18 18
+input: :uses T16804a.hs 18 22 18 22
 20
 21 niceValue :: Int
 22 niceValue = getSum (Sum 1 <> Sum 2 <> mempty)
@@ -121,21 +123,21 @@ input: :uses T16804a.hs 18 22 18 23
              1234567890
                        1234567890
                                  1234567890
-input: :type-at T16804a.hs 22 13 22 19 undefined
+input: :type-at T16804a.hs 22 13 22 18 undefined
 undefined :: Sum Int -> Int
-input: :type-at T16804a.hs 22 21 22 24 undefined
+input: :type-at T16804a.hs 22 21 22 23 undefined
 undefined :: Int -> Sum Int
-input: :type-at T16804a.hs 22 25 22 26 undefined
+input: :type-at T16804a.hs 22 25 22 25 undefined
 undefined :: Int
-input: :type-at T16804a.hs 22 21 22 26 undefined
+input: :type-at T16804a.hs 22 21 22 25 undefined
 undefined :: Sum Int
-input: :type-at T16804a.hs 22 27 22 29 undefined
+input: :type-at T16804a.hs 22 27 22 28 undefined
 undefined :: Sum Int -> Sum Int -> Sum Int
-input: :uses T16804a.hs 22 13 22 19
-input: :uses T16804a.hs 22 21 22 24
-input: :uses T16804a.hs 22 25 22 26
-input: :uses T16804a.hs 22 21 22 26
-input: :uses T16804a.hs 22 27 22 29
+input: :uses T16804a.hs 22 13 22 18
+input: :uses T16804a.hs 22 21 22 23
+input: :uses T16804a.hs 22 25 22 25
+input: :uses T16804a.hs 22 21 22 25
+input: :uses T16804a.hs 22 27 22 28
 23
 24 niceValue2 :: Test
 25 niceValue2 = A <> A <> A <> B <> A <> mempty
@@ -143,15 +145,15 @@ input: :uses T16804a.hs 22 27 22 29
              1234567890
                        1234567890
                                  1234567890
-input: :type-at T16804a.hs 25 14 25 15 undefined
+input: :type-at T16804a.hs 25 14 25 14 undefined
 undefined :: Test
-input: :type-at T16804a.hs 25 16 25 18 undefined
+input: :type-at T16804a.hs 25 16 25 17 undefined
 undefined :: Test -> Test -> Test
-input: :type-at T16804a.hs 25 39 25 45 undefined
+input: :type-at T16804a.hs 25 39 25 44 undefined
 undefined :: Test
-input: :uses T16804a.hs 25 14 25 15
-input: :uses T16804a.hs 25 16 25 18
-input: :uses T16804a.hs 25 39 25 45
+input: :uses T16804a.hs 25 14 25 14
+input: :uses T16804a.hs 25 16 25 17
+input: :uses T16804a.hs 25 39 25 44
 26
 27 instance Semigroup Test where
 28   A <> val = val
@@ -160,35 +162,35 @@ input: :uses T16804a.hs 25 39 25 45
              1234567890
                        1234567890
                                  1234567890
-input: :type-at T16804a.hs 28  3 28  4 undefined
+input: :type-at T16804a.hs 28  3 28  3 undefined
 undefined :: Test
-input: :type-at T16804a.hs 28  5 28  7 undefined
+input: :type-at T16804a.hs 28  5 28  6 undefined
 undefined :: Test -> Test -> Test
-input: :type-at T16804a.hs 28  8 28 11 undefined
+input: :type-at T16804a.hs 28  8 28 10 undefined
 undefined :: Test
-input: :type-at T16804a.hs 28 14 28 17 undefined
+input: :type-at T16804a.hs 28 14 28 16 undefined
 undefined :: Test
-input: :type-at T16804a.hs 29  3 29  4 undefined
+input: :type-at T16804a.hs 29  3 29  3 undefined
 undefined :: Test
-input: :type-at T16804a.hs 29  5 29  7 undefined
+input: :type-at T16804a.hs 29  5 29  6 undefined
 undefined :: forall a. a
-input: :type-at T16804a.hs 29  8 29  9 undefined
+input: :type-at T16804a.hs 29  8 29  8 undefined
 undefined :: Test
-input: :type-at T16804a.hs 29 14 29 15 undefined
+input: :type-at T16804a.hs 29 14 29 14 undefined
 undefined :: Test
-input: :uses T16804a.hs 28  3 28  4
-input: :uses T16804a.hs 28  5 28  7
+input: :uses T16804a.hs 28  3 28  3
+input: :uses T16804a.hs 28  5 28  6
 T16804a.hs:(28,5)-(28,6)
 T16804a.hs:(28,5)-(28,6)
-input: :uses T16804a.hs 28  8 28 11
+input: :uses T16804a.hs 28  8 28 10
 T16804a.hs:(28,8)-(28,10)
 T16804a.hs:(28,14)-(28,16)
 T16804a.hs:(28,8)-(28,10)
-input: :uses T16804a.hs 28 14 28 17
+input: :uses T16804a.hs 28 14 28 16
 T16804a.hs:(28,8)-(28,10)
 T16804a.hs:(28,14)-(28,16)
 T16804a.hs:(28,8)-(28,10)
-input: :uses T16804a.hs 29  3 29  4
-input: :uses T16804a.hs 29  5 29  7
-input: :uses T16804a.hs 29  8 29  9
-input: :uses T16804a.hs 29 14 29 15
+input: :uses T16804a.hs 29  3 29  3
+input: :uses T16804a.hs 29  5 29  6
+input: :uses T16804a.hs 29  8 29  8
+input: :uses T16804a.hs 29 14 29 14