[GHC] #11418: Suggest correct spelling when module is not found because of typo
GHC
ghc-devs at haskell.org
Sun Jan 17 21:50:07 UTC 2016
#11418: Suggest correct spelling when module is not found because of typo
-------------------------------------+-------------------------------------
Reporter: syd | Owner:
Type: feature request | Status: new
Priority: lowest | Milestone:
Component: Compiler | Version:
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture:
| Unknown/Multiple
Type of failure: None/Unknown | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by syd):
Replying to [comment:12 thomie]:
> Ok, let's back up.
>
> > Does that mean ghc hammers the file system with guesses for every
import?
>
> Given the two files from the description, here's what happens when you
run `ghc Aaa.hs`:
> * GHC asks the OS to open `./Aaa.hs`, and reads its contents
> * GHC figures out it needs module `BBb`
> * GHC "guesses" that `BBb` is either in `./BBb.hs` or in `./BBb.lhs`
> * GHC asks the OS to open those two files in order
> * Since neither file exists, an error message is shown (after also
consulting the package database, but let's ignore that for the moment)
>
> So in total GHC tries to open 3 files: `Aaa.hs`, `BBb.hs` and `BBb.lhs`.
It doesn't have to ask the OS for a list of all files in the directory.
Does that mean GHC tries both of those (multiplied by each extra source
directory specified) for every import of `Aaa`?
That may be something that could be optimized for `ghc --make`.
> If you run `ghc Aaa.hs` again later, it will do the exact same thing.
There is no cache.
Thank you for this clarification!
> Even if there are another one million files in the current directory,
GHC still has to only open those 3 files. It doesn't "hammer" the file
system.
>
> > Is there not some sort of cache of previously found modules that we
can check?
>
> Not in the above scenerio. But just to be clear: do you mean a cache
that could be used between separate invocations of GHC, or within a single
invocation of GHC?
I keep forgetting that there is a big difference between `ghc` and `ghc
--make`.
I meant `ghc --make`, I think, so a cache that works across seperate
invocations.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/11418#comment:13>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list