@@ -65,17 +65,9 @@ data SimpleErrorMessage
6565 | UnknownExportDataConstructor (ProperName 'TypeName) (ProperName 'ConstructorName)
6666 | ScopeConflict Name [ModuleName]
6767 | ScopeShadowing Name (Maybe ModuleName) [ModuleName]
68− | ConflictingTypeDecls (ProperName 'TypeName)
69− | ConflictingCtorDecls (ProperName 'ConstructorName)
70− | TypeConflictsWithClass (ProperName 'TypeName)
71− | CtorConflictsWithClass (ProperName 'ConstructorName)
72− | ClassConflictsWithType (ProperName 'ClassName)
73− | ClassConflictsWithCtor (ProperName 'ClassName)
68+ | DeclConflict Name Name
69+ | ExportConflict (Qualified Name) (Qualified Name)
7470 | DuplicateModuleName ModuleName
75− | DuplicateClassExport (ProperName 'ClassName)
76− | DuplicateValueExport Ident
77− | DuplicateValueOpExport (OpName 'ValueOpName)
78− | DuplicateTypeOpExport (OpName 'TypeOpName)
7971 | DuplicateTypeArgument String
8072 | InvalidDoBind
8173 | InvalidDoLet
@@ -234,17 +226,9 @@ errorCode em = case unwrapErrorMessage em of
234226 UnknownExportDataConstructor{} -> "UnknownExportDataConstructor"
235227 ScopeConflict{} -> "ScopeConflict"
236228 ScopeShadowing{} -> "ScopeShadowing"
237− ConflictingTypeDecls{} -> "ConflictingTypeDecls"
238− ConflictingCtorDecls{} -> "ConflictingCtorDecls"
239− TypeConflictsWithClass{} -> "TypeConflictsWithClass"
240− CtorConflictsWithClass{} -> "CtorConflictsWithClass"
241− ClassConflictsWithType{} -> "ClassConflictsWithType"
242− ClassConflictsWithCtor{} -> "ClassConflictsWithCtor"
229+ DeclConflict{} -> "DeclConflict"
230+ ExportConflict{} -> "ExportConflict"
243231 DuplicateModuleName{} -> "DuplicateModuleName"
244− DuplicateClassExport{} -> "DuplicateClassExport"
245− DuplicateValueExport{} -> "DuplicateValueExport"
246− DuplicateValueOpExport{} -> "DuplicateValueOpExport"
247− DuplicateTypeOpExport{} -> "DuplicateTypeOpExport"
248232 DuplicateTypeArgument{} -> "DuplicateTypeArgument"
249233 InvalidDoBind -> "InvalidDoBind"
250234 InvalidDoLet -> "InvalidDoLet"
@@ -479,7 +463,7 @@ colorCodeBox codeColor b = case codeColor of
479463 Just cc
480464 | Box.rows b == 1 ->
481465 Box.text (ansiColor cc) Box.<> b `endWith` Box.text ansiColorReset
482−
466+
483467 | otherwise -> Box.hcat Box.left -- making two boxes, one for each side of the box so that it will set each row it's own color and will reset it afterwards
484468 [ Box.vcat Box.top $ replicate (Box.rows b) $ Box.text $ ansiColor cc
485469 , b
@@ -648,28 +632,12 @@ prettyPrintSingleError (PPEOptions codeColor full level showWiki) e = flip evalS
648632 Just exmn' -> "declaration from " ++ markCode (runModuleName exmn') ++ " will be used."
649633 Nothing -> "local declaration will be used."
650634 ]
651− renderSimpleErrorMessage (ConflictingTypeDecls nm) =
652− line $ "Conflicting type declarations for " ++ markCode (runProperName nm)
653− renderSimpleErrorMessage (ConflictingCtorDecls nm) =
654− line $ "Conflicting data constructor declarations for " ++ markCode (runProperName nm)
655− renderSimpleErrorMessage (TypeConflictsWithClass nm) =
656− line $ "Type " ++ markCode (runProperName nm) ++ " conflicts with a type class declaration with the same name."
657− renderSimpleErrorMessage (CtorConflictsWithClass nm) =
658− line $ "Data constructor " ++ markCode (runProperName nm) ++ " conflicts with a type class declaration with the same name."
659− renderSimpleErrorMessage (ClassConflictsWithType nm) =
660− line $ "Type class " ++ markCode (runProperName nm) ++ " conflicts with a type declaration with the same name."
661− renderSimpleErrorMessage (ClassConflictsWithCtor nm) =
662− line $ "Type class " ++ markCode (runProperName nm) ++ " conflicts with a data constructor declaration with the same name."
635+ renderSimpleErrorMessage (DeclConflict new existing) =
636+ line $ "Declaration for " ++ printName (Qualified Nothing new) ++ " conflicts with an existing " ++ nameType existing ++ " of the same name."
637+ renderSimpleErrorMessage (ExportConflict new existing) =
638+ line $ "Export for " ++ printName new ++ " conflicts with " ++ runName existing
663639 renderSimpleErrorMessage (DuplicateModuleName mn) =
664640 line $ "Module " ++ markCode (runModuleName mn) ++ " has been defined multiple times."
665− renderSimpleErrorMessage (DuplicateClassExport nm) =
666− line $ "Duplicate export declaration for type class " ++ markCode (runProperName nm)
667− renderSimpleErrorMessage (DuplicateValueExport nm) =
668− line $ "Duplicate export declaration for value " ++ markCode (showIdent nm)
669− renderSimpleErrorMessage (DuplicateValueOpExport op) =
670− line $ "Duplicate export declaration for operator " ++ markCode (showOp op)
671− renderSimpleErrorMessage (DuplicateTypeOpExport op) =
672− line $ "Duplicate export declaration for type operator " ++ markCode (showOp op)
673641 renderSimpleErrorMessage (CycleInDeclaration nm) =
674642 line $ "The value of " ++ markCode (showIdent nm) ++ " is undefined here, so this reference is not allowed."
675643 renderSimpleErrorMessage (CycleInModules mns) =
@@ -1096,22 +1064,34 @@ prettyPrintSingleError (PPEOptions codeColor full level showWiki) e = flip evalS
10961064 ]
10971065
10981066 printName :: Qualified Name -> String
1099− printName (Qualified mn (IdentName name)) =
1100− "value " ++ markCode (showQualified showIdent (Qualified mn name))
1101− printName (Qualified mn (ValOpName op)) =
1102− "operator " ++ markCode (showQualified showOp (Qualified mn op))
1103− printName (Qualified mn (TyName name)) =
1104− "type " ++ markCode (showQualified runProperName (Qualified mn name))
1105− printName (Qualified mn (TyOpName op)) =
1106− "type operator " ++ markCode (showQualified showOp (Qualified mn op))
1107− printName (Qualified mn (DctorName name)) =
1108− "data constructor " ++ markCode (showQualified runProperName (Qualified mn name))
1109− printName (Qualified mn (TyClassName name)) =
1110− "type class " ++ markCode (showQualified runProperName (Qualified mn name))
1111− printName (Qualified Nothing (ModName name)) =
1112− "module " ++ markCode (runModuleName name)
1113− printName (Qualified _ ModName{}) =
1114− internalError "qualified ModName in printName"
1067+ printName qn = nameType (disqualify qn) ++ " " ++ markCode (runName qn)
1068+
1069+ nameType :: Name -> String
1070+ nameType (IdentName _) = "value"
1071+ nameType (ValOpName _) = "operator"
1072+ nameType (TyName _) = "type"
1073+ nameType (TyOpName _) = "type operator"
1074+ nameType (DctorName _) = "data constructor"
1075+ nameType (TyClassName _) = "type class"
1076+ nameType (ModName _) = "module"
1077+
1078+ runName :: Qualified Name -> String
1079+ runName (Qualified mn (IdentName name)) =
1080+ showQualified showIdent (Qualified mn name)
1081+ runName (Qualified mn (ValOpName op)) =
1082+ showQualified showOp (Qualified mn op)
1083+ runName (Qualified mn (TyName name)) =
1084+ showQualified runProperName (Qualified mn name)
1085+ runName (Qualified mn (TyOpName op)) =
1086+ showQualified showOp (Qualified mn op)
1087+ runName (Qualified mn (DctorName name)) =
1088+ showQualified runProperName (Qualified mn name)
1089+ runName (Qualified mn (TyClassName name)) =
1090+ showQualified runProperName (Qualified mn name)
1091+ runName (Qualified Nothing (ModName name)) =
1092+ runModuleName name
1093+ runName (Qualified _ ModName{}) =
1094+ internalError "qualified ModName in runName"
11151095
11161096 valueDepth :: Int
11171097 valueDepth | full = 1000