Re: Any guesses?

Malcolm Wallace <[email protected]> Mon, 31 Oct 2005 23:49:40 +0000
Newsgroups gmane.comp.lang.haskell.hat
Organization Dept of Computer Science, University of York
Message-ID <[email protected]>
Olaf Chitil <[email protected]> writes:

> The problem is that qualified names are not handled correctly and 
> sometimes are confused with unqualified names.
> 
> So the problem is in the auxLabelSyntaxTree part. So I'd like to pass 
> the problem back to Malcolm. Or I'll have to see tomorrow how this part 
> works.

Ah, I must accept responsibility.  The comment in this piece of code
particularly sums up the situation:

>   lookEnv :: Environment -> TokenId -> TraceId
>   lookEnv env id =
>     case useEnvironment env id of
>       Just info -> id `plus` info
>       _ -> case id of
>              -- this is a horrible hack to by-pass qualified names.
>              Qualified _ x -> case useEnvironment env (Visible x) of
>                                    ....   

Thus, at lookup-time, if the qualified name does not resolve, we pretend
it is an unqualified name.  In fact, the problem lies further back than
the AST-relabelling phase.  It is during import resolution (in AuxFile)
that we are failing to store the qualified variable names into the
environment in the first place.

I have attempted a solution, to store both qualified/unqualified
variants of names into the environment (as appropriate, given the import
decls).  So far, it doesn't work, but I am too tired to investigate
further tonight.  I can send you the diffs if you want to look at it
yourself...?

Regards,
    Malcolm