patch applied (ghc): Fix parent position in RnNames.nubAvails

Manuel M T Chakravarty chak at cse.unsw.edu.au
Mon Oct 23 13:44:46 EDT 2006


Simon Marlow:
> chak at cse.unsw.edu.au wrote:
> > Fri Oct 20 20:58:29 PDT 2006  Manuel M T Chakravarty <chak at cse.unsw.edu.au>
> >   * Fix parent position in RnNames.nubAvails
> >   - `RnNames.nubAvails', which amalgamates AvailInfo items that belong to the 
> >     same parent, needs to be careful that the parent name occurs first if it is
> >     in the list of subnames at all.  (Otherwise, we can get funny export items
> >     in ifaces.)
>  >
>  >   - I discovered this while debugging family import/exports, but I am pretty
>  >     sure the bug would also have shown up without using families under the
>  >     right circumstances.
> 
> I'm interested - what goes wrong if the parent doesn't occur first?  I noticed 
> that it often didn't when I was working on this code.  I checked and it was the 
> same in 6.4.2, so I assumed it must be ok, and I didn't encounter any problems 
> except that the pretty-printing code had to print out the parent name.

If it isn't first, then the parent is not removed from the subnames when
the AvailInfo is converted into its iface representation; ie, we get
things like "C{foo, C, T}" in the iface.  I am not sure whether there
are any bad consequences from this, other than confusing --show-iface
output, without type families.  With type families, you can get
RdrName.GlobalRdrElt values that when combined with RdrName.plusParent
trigger the assertion in plusParent, when reading ifaces with these
funny export items.

Manuel




More information about the Cvs-ghc mailing list