[cvs-nhc98] Remove bug in type checker and addition of some error mess

Olaf Chitil olaf@sparud.net
Thu, 20 Feb 2003 19:23:30 +0100 (CET)


olaf: Thu Feb 20 19:23:29 CET 2003

Update of /usr/src/master/nhc/src/compiler98
In directory hinken:/tmp/cvs-serv12039/src/compiler98

Modified Files:
	Derive.hs RenameLib.hs Type.hs TypeCtx.hs TypeUnify.hs 
Log Message:
Remove bug in type checker and addition of some error messages.

Type unification in TypeUnify was wrong!
Given two types c t1 ... tn and c s1 ... sn unification would just unify the two list of arguments. However, if c is a type synonym, this is wrong! A type synonym always has to be expanded. Example:

type T a = Int

Then unifying T Bool and T Int should not force unification of Bool and Int!

With the removal of this bug the Hat transformed Prelude type checks again in nhc98 (instead of producing obscure error "The class Main.Integral has no instance for the type Hat.Hat.List.")



Also extended error message "The class ... has no instance for the type ..." so that it gives additional position information.

Furthermore the renamer (defineDefaultMethod) did fall over if a method was also declared outside of the class. Now an appropriate error message is produced.