On Thu, Apr 3, 2008 at 9:06 PM, John Meacham
This one makes the kind inference actually run when FrontEnd.KindInfer.hsTypeToType, and makes kindOf stop reporting * when the name in question is not in the environment -- signifying that kind inference has definitely not seen it. The former behaviour was useless, serving only to make things appear to work when they in fact did not, merely because * happened to be the correct kind in most cases.
This was due to the kind inference algorithm specified in the report, any unconstrained kinds are supposed to be defaulted to *. This may not be necessary anymore though as I think I added an explicit defaulting step. In any case, It wasn't put there by accident or a hack even if it is no longer needed.
Well, that's what I thought it must be an attempt at. But in fact there is other code that does a much better job -- or at least, it does it in a way that provides less false comfort. The other code only defaults kinds for things that have made it into the kind environment. Anyway, the rule of thumb for compilers and RTSs is "crash ASAP", so...