Suggest only local candidates from global env
authorWojciech Baranowski <wbaranowski@protonmail.com>
Wed, 24 Apr 2019 18:54:42 +0000 (21:54 +0300)
committerMarge Bot <ben+marge-bot@smart-cactus.org>
Tue, 30 Apr 2019 01:02:38 +0000 (21:02 -0400)
compiler/rename/RnEnv.hs
testsuite/tests/parser/should_fail/readFail001.stderr
testsuite/tests/rename/should_fail/T16504.hs
testsuite/tests/rename/should_fail/T16504.stderr

index 2e0b7ec..436e342 100644 (file)
@@ -1374,7 +1374,7 @@ However, consider this case:
         f :: Int -> Int
         g x = x
 We don't want to say 'f' is out of scope; instead, we want to
-return the imported 'f', so that later on the reanamer will
+return the imported 'f', so that later on the renamer will
 correctly report "misplaced type sig".
 
 Note [Signatures for top level things]
@@ -1472,7 +1472,9 @@ lookupBindGroupOcc ctxt what rdr_name
     lookup_top keep_me
       = do { env <- getGlobalRdrEnv
            ; let all_gres = lookupGlobalRdrEnv env (rdrNameOcc rdr_name)
-           ; let candidates_msg = candidates $ map gre_name $ globalRdrEnvElts env
+           ; let candidates_msg = candidates $ map gre_name
+                                             $ filter isLocalGRE
+                                             $ globalRdrEnvElts env
            ; case filter (keep_me . gre_name) all_gres of
                [] | null all_gres -> bale_out_with candidates_msg
                   | otherwise     -> bale_out_with local_msg
index f88eaac..6425d16 100644 (file)
@@ -1,8 +1,6 @@
 
 readFail001.hs:25:11: error:
     The fixity signature for ‘+#’ lacks an accompanying binding
-      Perhaps you meant one of these:
-        ‘+’ (Defined in ‘GHC.Num’), ‘++’ (Defined in ‘GHC.Base’)
 
 readFail001.hs:38:32: error:
     Not in scope: type constructor or class ‘Leaf’
index 1bb6a08..8ee426f 100644 (file)
@@ -4,6 +4,7 @@ module M where
 -- Both in global scope
 simpleFuntcion :: Int -> Bool
 simpleFunction i = i > 5
+simpleFunction2 i = i < 5
 
 -- Both in local scope
 f x = anotherFunction x
index 7bc59bd..2fc822d 100644 (file)
@@ -2,13 +2,15 @@
 T16504.hs:5:1: error:
     The type signature for ‘simpleFuntcion’
       lacks an accompanying binding
-      Perhaps you meant ‘simpleFunction’ (Defined at T16504.hs:6:1)
+      Perhaps you meant one of these:
+        ‘simpleFunction’ (Defined at T16504.hs:6:1),
+        ‘simpleFunction2’ (Defined at T16504.hs:7:1)
 
-T16504.hs:10:9: error:
+T16504.hs:11:9: error:
     The type signature for ‘anotherFunction’
       lacks an accompanying binding
-      Perhaps you meant ‘anotherFuntcion’ (Defined at T16504.hs:11:9)
+      Perhaps you meant ‘anotherFuntcion’ (Defined at T16504.hs:12:9)
 
-T16504.hs:14:1: error:
+T16504.hs:15:1: error:
     The type signature for ‘nonexistentFuntcion’
       lacks an accompanying binding