Fix for Trac #15611: Scope errors lie about what modules are imported.
authorroland <rsx@bluewin.ch>
Sun, 4 Nov 2018 15:45:29 +0000 (16:45 +0100)
committerKrzysztof Gogolewski <krz.gogolewski@gmail.com>
Sun, 4 Nov 2018 15:45:29 +0000 (16:45 +0100)
commit1a3b9bd0b674ad16a41b942c738b8f34564bcd8d
tree6796e7d78d7c56c1c357dc431a66f35242ffa9f0
parent2c959a1894311e59cd2fd469c1967491c1e488f3
Fix for Trac #15611: Scope errors lie about what modules are imported.

Summary:
For the error message:
    Not in scope X.Y
    Module X does not export Y
    No module named ‘X’ is imported:
there are 2 cases, where we don't show the last "no module named is imported" line:
1. If the module X has been imported.
2. If the module X is the current module. There are 2 subcases:

   2.1 If the unknown module name is in a input source file,
       then we can use the getModule function to get the current module name.

   2.2 If the unknown module name has been entered by the user in GHCi,
       then the getModule function returns something like "interactive:Ghci1",
       and we have to check the current module in the last added entry of
       the HomePackageTable.

Test Plan: make test TESTS="T15611a T15611b"

Reviewers: monoidal, hvr, thomie, dfeuer, bgamari, DavidEichmann

Reviewed By: monoidal, DavidEichmann

Subscribers: rwbarton, carter

GHC Trac Issues: #15611

Differential Revision: https://phabricator.haskell.org/D5284
compiler/rename/RnUnbound.hs
compiler/typecheck/TcErrors.hs
testsuite/tests/module/mod62.stderr
testsuite/tests/rename/should_fail/T15611a.hs [new file with mode: 0644]
testsuite/tests/rename/should_fail/T15611a.stderr [new file with mode: 0644]
testsuite/tests/rename/should_fail/T15611b.hs [new file with mode: 0644]
testsuite/tests/rename/should_fail/T15611b.script [new file with mode: 0644]
testsuite/tests/rename/should_fail/T15611b.stderr [new file with mode: 0644]
testsuite/tests/rename/should_fail/T5892b.stderr
testsuite/tests/rename/should_fail/all.T
testsuite/tests/rename/should_fail/rnfail034.stderr