@@ -60,6 +60,7 @@ data Context
60 | IfCondition
60 | IfCondition
61 | IfBranch Index.ZeroBased
61 | IfBranch Index.ZeroBased
62 | CaseBranch Index.ZeroBased
62 | CaseBranch Index.ZeroBased
63+ | CallArity MaybeName Int
63 | CallArg MaybeName Index.ZeroBased
64 | CallArg MaybeName Index.ZeroBased
64 | TooManyArgs MaybeName Int
65 | TooManyArgs MaybeName Int
65 | RecordAccess N.Name
66 | RecordAccess N.Name
@@ -796,22 +797,48 @@ toExprReport source localizer exprRegion category tipe expected =
800+ CallArity maybeFuncName numArgs ->
801+ case countArgs tipe of
803+ Report.toCodeSnippet source region (Just exprRegion)
805+ case maybeFuncName of
806+ NoName -> "This is not a function:"
807+ FuncName name -> "The `" <> N.toString name <> "` value is not a function:"
808+ CtorName name -> "The `" <> N.toString name <> "` value is not a function:"
809+ OpName op -> "The (" <> N.toString op <> ") operator is not a function:"
813+ , H.indent 4 $ H.dullyellow $ T.toDoc localizer RT.None tipe
814+ , H.reflow $ "So it cannot accept arguments, but it got " <> show numArgs <> " anyway."
819+ Report.toCodeSnippet source region (Just exprRegion)
821+ case maybeFuncName of
822+ NoName -> "This function was given too many arguments:"
823+ FuncName name -> "The `" <> N.toString name <> "` function was given too many arguments:"
824+ CtorName name -> "The `" <> N.toString name <> "` constructor was given too many arguments:"
825+ OpName op -> "The (" <> N.toString op <> ") operator was given too many arguments:"
829+ , H.indent 4 $ H.dullyellow $ T.toDoc localizer RT.None tipe
830+ , H.reflow $ "So it expects " <> H.args n <> ", but it got " <> show numArgs <> " instead."
799 CallArg maybeFuncName index ->
834 CallArg maybeFuncName index ->
801 thisFunction =
836 thisFunction =
802 case maybeFuncName of
837 case maybeFuncName of
804− "this function"
838+ NoName -> "this function"
807− "`" <> N.toString name <> "`"
839+ FuncName name -> "`" <> N.toString name <> "`"
810− "`" <> N.toString name <> "`"
840+ CtorName name -> "`" <> N.toString name <> "`"
813− "(" <> N.toString op <> ")"
841+ OpName op -> "(" <> N.toString op <> ")"
816 Report.toCodeSnippet source region (Just exprRegion)
843 Report.toCodeSnippet source region (Just exprRegion)