summaryrefslogtreecommitdiff
path: root/ghc/compiler/prelude
diff options
context:
space:
mode:
authorsimonpj <unknown>2001-03-13 14:58:28 +0000
committersimonpj <unknown>2001-03-13 14:58:28 +0000
commit788faebb40b51d37e73ed94dfc99460d39a1a811 (patch)
tree5aed135958315fcb297c1c4908440775fdbdf1ad /ghc/compiler/prelude
parent6a44ce76861d73d59badc8f8c17ffbd52eff17ba (diff)
downloadhaskell-788faebb40b51d37e73ed94dfc99460d39a1a811.tar.gz
[project @ 2001-03-13 14:58:25 by simonpj]
---------------- 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
Diffstat (limited to 'ghc/compiler/prelude')
-rw-r--r--ghc/compiler/prelude/TysWiredIn.lhs4
1 files changed, 2 insertions, 2 deletions
diff --git a/ghc/compiler/prelude/TysWiredIn.lhs b/ghc/compiler/prelude/TysWiredIn.lhs
index 961325a372..f67ee0676d 100644
--- a/ghc/compiler/prelude/TysWiredIn.lhs
+++ b/ghc/compiler/prelude/TysWiredIn.lhs
@@ -111,7 +111,7 @@ import BasicTypes ( Arity, RecFlag(..), Boxity(..), isBoxed )
import Type ( Type, mkTyConTy, mkTyConApp, mkTyVarTys,
mkArrowKinds, liftedTypeKind, unliftedTypeKind,
splitTyConApp_maybe, repType,
- TauType, ClassContext )
+ TauType, ThetaType )
import Unique ( incrUnique, mkTupleTyConUnique, mkTupleDataConUnique )
import PrelNames
import CmdLineOpts
@@ -197,7 +197,7 @@ mk_tc_gen_info mod tc_uniq tc_name tycon
name1 = mkWiredInName mod occ_name1 fn1_key
name2 = mkWiredInName mod occ_name2 fn2_key
-pcDataCon :: Name -> [TyVar] -> ClassContext -> [TauType] -> TyCon -> DataCon
+pcDataCon :: Name -> [TyVar] -> ThetaType -> [TauType] -> TyCon -> DataCon
-- The unique is the first of two free uniques;
-- the first is used for the datacon itself and the worker;
-- the second is used for the wrapper.