[Hat] Qualified variable in pattern: T.mkRoot

Olaf Chitil O.Chitil at kent.ac.uk
Mon Jul 4 09:50:18 EDT 2005


>hat-trans is generating bad code for this, because the pattern binding
>is at the toplevel.  If the pattern binding were in a let or where
>clause, the generated code is different.  When not at the toplevel,
>the parent, p, of the binding is always a variable passed in.
>But at the toplevel, there is no static parent, so hat-trans has
>wrongly substituted T.mkRoot (which explicitly represents no parent),
>in both the generated pattern and the generated expression:
>
>    gx px T.mkRoot = T.constUse px T.mkRoot sx	-- incorrect
>vs.
>    gx px p = T.constUse px p sx		-- correct
>
>I think the attached patch for hat-trans should fix the problem (but
>would like someone to confirm this is not going to break anything else,
>before I will commit it to CVS).
>  
>
You are absolutely right. I just committed it to CVS.

Ciao,
Olaf


More information about the Hat mailing list