Skip to content
Snippets Groups Projects
Forked from Glasgow Haskell Compiler / GHC
Loading
user avatar
Simon Peyton Jones authored
----------------
	Nuke ClassContext
	----------------

This commit tidies up a long-standing inconsistency in GHC.
The context of a class or instance decl used to be restricted
to predicates of the form
	C t1 .. tn
with
	type ClassContext = [(Class,[Type])]

but everywhere else in the compiler we used

	type ThetaType = [PredType]
where PredType can be any sort of constraint (= predicate).

The inconsistency actually led to a crash, when compiling
	class (?x::Int) => C a where {}

I've tidied all this up by nuking ClassContext altogether, and using
PredType throughout.  Lots of modified files, but all in
more-or-less trivial ways.

I've also added a check that the context of a class or instance
decl doesn't include a non-inheritable predicate like (?x::Int).

Other things

 * rename constructor 'Class' from type TypeRep.Pred to 'ClassP'
   (makes it easier to grep for)

 * rename constructor HsPClass  => HsClassP
		      HsPIParam => HsIParam
788faebb
History
Code owners
Name Last commit Last update
..