[project @ 2002-02-07 12:51:47 by simonpj]
authorsimonpj <unknown>
Thu, 7 Feb 2002 12:51:47 +0000 (12:51 +0000)
committersimonpj <unknown>
Thu, 7 Feb 2002 12:51:47 +0000 (12:51 +0000)
commit5df7aa32b5736e36a2a56c59d8d8a887987872f6
tree71b8ef75b366c27066b7654359c3c2f85ad25de0
parent20f50b2a3651ce7dacdcb86a83afb5c5d444cb0b
[project @ 2002-02-07 12:51:47 by simonpj]
--------------------------------------------------
Slurp in a few more instance decls with ghc --make
--------------------------------------------------

ghc --make wasn't slurping in quite enough instance decls.
The relevant comment is in RnIfaces; the new part is marked.
George Russel's Uniform showed this up.

We slurp in an instance decl from the gated instance pool iff

all its gates are either in the gates of the module,
or are a previously-loaded tycon or class.

The latter constraint is because there might have been an instance
decl slurped in during an earlier compilation, like this:

instance Foo a => Baz (Maybe a) where ...

In the module being compiled we might need (Baz (Maybe T)), where T
is defined in this module, and hence we need (Foo T).  So @Foo@ becomes
a gate.  But there's no way to 'see' that.

NEW:  More generally, types might be involved as well:
NEW:   instance Foo2 T a => Baz2 a where ...
NEW:
NEW: Now we must treat T as a gate too, as well as Foo.  So the solution
NEW: we adopt is:
NEW:
NEW:  we simply treat all previously-loaded
NEW:  tycons and classes as gates.
NEW:
NEW: This gloss only affects ghc --make and ghc --interactive.
ghc/compiler/rename/RnIfaces.lhs