- pp_def rn = addShortErrLocLine (getSrcLoc rn) (\ sty -> ppr sty rn) sty
-
-dupImportWarn dup_imps sty
- = ppStr "dupImportWarn"
-
-qualPreludeImportWarn imp sty
- = ppStr "qualPreludeImportWarn"
-
-unknownImpSpecErr ie imp_mod locn sty
- = ppStr "unknownImpSpecErr"
-
-duplicateImpSpecErr ie imp_mod locn sty
- = ppStr "duplicateImpSpecErr"
-
-allWhenSynImpSpecWarn n imp_mod locn sty
- = ppStr "allWhenSynImpSpecWarn"
-
-allWhenAbsImpSpecErr n imp_mod locn sty
- = ppStr "allWhenAbsImpSpecErr"
-
-withWhenAbsImpSpecErr n imp_mod locn sty
- = ppStr "withWhenAbsImpSpecErr"
-
-withImpSpecErr str n has ns imp_mod locn sty
- = ppStr "withImpSpecErr"
+ item1 = addShortErrLocLine (getSrcLoc rn1) (\ sty ->
+ ppBesides [ppStr "multiple declarations of `",
+ pprNonSym sty rn1, ppStr "' ", pp_descrip rn1]) sty
+
+ dup_item rn
+ = addShortErrLocLine (getSrcLoc rn) (\ sty ->
+ ppBesides [ppStr "here was another declaration of `",
+ pprNonSym sty rn, ppStr "' ", pp_descrip rn]) sty
+
+ pp_descrip (RnName _) = ppStr "(as a value)"
+ pp_descrip (RnSyn _) = ppStr "(as a type synonym)"
+ pp_descrip (RnData _ _ _) = ppStr "(as a data type)"
+ pp_descrip (RnConstr _ _) = ppStr "(as a data constructor)"
+ pp_descrip (RnField _ _) = ppStr "(as a record field)"
+ pp_descrip (RnClass _ _) = ppStr "(as a class)"
+ pp_descrip (RnClassOp _ _) = ppStr "(as a class method)"
+ pp_descrip _ = ppNil
+
+dupImportWarn (ImportDecl m1 _ _ _ locn1 : dup_imps) sty
+ = ppAboves (item1 : map dup_item dup_imps)
+ where
+ item1 = addShortErrLocLine locn1 (\ sty ->
+ ppCat [ppStr "multiple imports from module", ppPStr m1]) sty
+
+ dup_item (ImportDecl m _ _ _ locn)
+ = addShortErrLocLine locn (\ sty ->
+ ppCat [ppStr "here was another import from module", ppPStr m]) sty
+
+qualPreludeImportErr (ImportDecl m _ _ _ locn)
+ = addShortErrLocLine locn (\ sty ->
+ ppCat [ppStr "qualified import form prelude module", ppPStr m])
+
+unknownImpSpecErr ie imp_mod locn
+ = addShortErrLocLine locn (\ sty ->
+ ppBesides [ppStr "module ", ppPStr imp_mod, ppStr " does not export `", ppr sty (ie_name ie), ppStr "'"])
+
+duplicateImpSpecErr ie imp_mod locn
+ = addShortErrLocLine locn (\ sty ->
+ ppBesides [ppStr "`", ppr sty (ie_name ie), ppStr "' already seen in import list"])
+
+allWhenSynImpSpecWarn n imp_mod locn
+ = addShortErrLocLine locn (\ sty ->
+ ppBesides [ppStr "type synonym `", ppr sty n, ppStr "' should not be imported with (..)"])
+
+allWhenAbsImpSpecErr n imp_mod locn
+ = addShortErrLocLine locn (\ sty ->
+ ppBesides [ppStr "module ", ppPStr imp_mod, ppStr " only exports `", ppr sty n, ppStr "' abstractly"])
+
+withWhenAbsImpSpecErr n imp_mod locn
+ = addShortErrLocLine locn (\ sty ->
+ ppBesides [ppStr "module ", ppPStr imp_mod, ppStr " only exports `", ppr sty n, ppStr "' abstractly"])
+
+withImpSpecErr str n has ns imp_mod locn
+ = addErrLoc locn "" (\ sty ->
+ ppAboves [ ppBesides [ppStr "inconsistent list of", ppStr str, ppStr "in import list for `", ppr sty n, ppStr "'"],
+ ppCat [ppStr " expected:", ppInterleave ppComma (map (ppr sty) has)],
+ ppCat [ppStr " found: ", ppInterleave ppComma (map (ppr sty) ns)] ])
+
+dupFieldErr con locn (dup:rest)
+ = addShortErrLocLine locn (\ sty ->
+ ppBesides [ppStr "record field `", ppr sty dup, ppStr "declared multiple times in `", ppr sty con, ppStr "'"])