@@ -27,7 +27,7 @@ import qualified Reporting.Region as R
27import qualified Reporting.Render.Code as Code
27import qualified Reporting.Render.Code as Code
28import qualified Reporting.Report as Report
28import qualified Reporting.Report as Report
29import qualified Reporting.Helpers as H
29import qualified Reporting.Helpers as H
30−import Reporting.Helpers ( Doc, (<>) )
30+import Reporting.Helpers ( Doc, (<+>), (<>) )
@@ -164,7 +164,7 @@ toReport source err =
166 AmbiguousVar region maybePrefix name possibleHomes ->
166 AmbiguousVar region maybePrefix name possibleHomes ->
167− ambiguousName source region maybePrefix name possibleHomes "name"
167+ ambiguousName source region maybePrefix name possibleHomes "variable"
169 AmbiguousType region maybePrefix name possibleHomes ->
169 AmbiguousType region maybePrefix name possibleHomes ->
170 ambiguousName source region maybePrefix name possibleHomes "type"
170 ambiguousName source region maybePrefix name possibleHomes "type"
@@ -823,27 +823,51 @@ nameClash source r1 r2 messageThatEndsWithPunctuation =
824ambiguousName :: Code.Source -> R.Region -> Maybe N.Name -> N.Name -> [ModuleName.Canonical] -> String -> Report.Report
824ambiguousName :: Code.Source -> R.Region -> Maybe N.Name -> N.Name -> [ModuleName.Canonical] -> String -> Report.Report
825ambiguousName source region maybePrefix name possibleHomes thing =
825ambiguousName source region maybePrefix name possibleHomes thing =
826− let
826+ Report.Report "AMBIGUOUS NAME" region [] $
827− givenName =
827+ Report.toCodeSnippet source region Nothing $
828− maybe N.toString toQualString maybePrefix name
828+ case maybePrefix of
831+ homeToYellowDoc (ModuleName.Canonical _ home) =
832+ H.dullyellow (H.nameToDoc home)
835+ if length possibleHomes == 2 then "both" else "all"
838+ H.reflow $ "This usage of `" ++ N.toString name ++ "` is ambiguous."
842+ "Check your imports. The following modules " ++ bothOrAll
843+ ++ " expose a `" ++ N.toString name ++ "` " ++ thing ++ ":"
844+ , H.indent 4 $ H.vcat $ map homeToYellowDoc possibleHomes
845+ , H.reflowLink "Read" "imports" "to learn how to clarify which one you want."
830− homeToYellowDoc (ModuleName.Canonical _ home) =
851+ homeToYellowDoc (ModuleName.Canonical _ home) =
852+ if prefix == home then
831− H.dullyellow (H.nameToDoc home)
853+ H.blue "import" <+> H.dullyellow (H.nameToDoc home)
855+ H.blue "import" <+> H.dullyellow (H.nameToDoc home) <+> H.blue "as" <+> H.dullyellow (H.nameToDoc prefix)
833− bothOrAll =
857+ eitherOrAny =
834− if length possibleHomes == 2 then "both" else "all"
858+ if length possibleHomes == 2 then "either" else "any"
836− Report.Report "AMBIGUOUS NAME" region [] $
837− Report.toCodeSnippet source region Nothing
839− H.reflow $ "This usage of `" ++ givenName ++ "` is ambiguous."
861+ H.reflow $ "This usage of `" ++ toQualString prefix name ++ "` is ambiguous."
842− [ H.reflow $ "The following modules " ++ bothOrAll ++ " export this " ++ thing ++ ":"
864+ [ H.reflow $
865+ "It could refer to a " ++ thing ++ " from "
866+ ++ eitherOrAny ++ " of these imports:"
843− , H.indent 4 $ H.vcat $ map homeToYellowDoc possibleHomes
867+ , H.indent 4 $ H.vcat $ map homeToYellowDoc possibleHomes
844− , H.reflowLink "Read" "imports" "to learn how to clarify which one you want."
868+ , H.reflowLink "Read" "imports" "to learn how to clarify which one you want."