Remove unused binding
[ghc-hetmet.git] / compiler / typecheck / TcTyClsDecls.lhs
index b942ec2..9e302c3 100644 (file)
@@ -693,7 +693,6 @@ tcTyClDecl1 calc_isrec
   ; stupid_theta <- tcHsKindedContext ctxt
   ; want_generic <- doptM Opt_Generics
   ; unbox_strict <- doptM Opt_UnboxStrictFields
-  ; gla_exts     <- doptM Opt_GlasgowExts
   ; empty_data_decls <- doptM Opt_EmptyDataDecls
   ; kind_signatures <- doptM Opt_KindSignatures
   ; gadt_ok      <- doptM Opt_GADTs
@@ -1060,10 +1059,13 @@ checkValidClass :: Class -> TcM ()
 checkValidClass cls
   = do {       -- CHECK ARITY 1 FOR HASKELL 1.4
          gla_exts <- doptM Opt_GlasgowExts
+       ; multi_param_type_classes <- doptM Opt_MultiParamTypeClasses
+       ; fundep_classes <- doptM Opt_FunctionalDependencies
 
        -- Check that the class is unary, unless GlaExs
        ; checkTc (notNull tyvars) (nullaryClassErr cls)
-       ; checkTc (gla_exts || unary) (classArityErr cls)
+       ; checkTc (multi_param_type_classes || unary) (classArityErr cls)
+       ; checkTc (fundep_classes || null fundeps) (classFunDepsErr cls)
 
        -- Check the super-classes
        ; checkValidTheta (ClassSCCtxt (className cls)) theta
@@ -1077,7 +1079,7 @@ checkValidClass cls
        ; checkTc (unary || no_generics) (genericMultiParamErr cls)
        }
   where
-    (tyvars, theta, _, op_stuff) = classBigSig cls
+    (tyvars, fundeps, theta, _, _, op_stuff) = classExtraBigSig cls
     unary      = isSingleton tyvars
     no_generics = null [() | (_, GenDefMeth) <- op_stuff]
 
@@ -1138,7 +1140,11 @@ nullaryClassErr cls
 
 classArityErr cls
   = vcat [ptext SLIT("Too many parameters for class") <+> quotes (ppr cls),
-         parens (ptext SLIT("Use -fglasgow-exts to allow multi-parameter classes"))]
+         parens (ptext SLIT("Use -XMultiParamTypeClasses to allow multi-parameter classes"))]
+
+classFunDepsErr cls
+  = vcat [ptext SLIT("Fundeps in class") <+> quotes (ppr cls),
+         parens (ptext SLIT("Use -XFunctionalDependencies to allow fundeps"))]
 
 noClassTyVarErr clas op
   = sep [ptext SLIT("The class method") <+> quotes (ppr op),