@@ -25,6 +25,7 @@ import qualified Data.Map as M
26import Language.PureScript.AST
26import Language.PureScript.AST
27import Language.PureScript.Crash
27import Language.PureScript.Crash
28+import Language.PureScript.Environment
28import Language.PureScript.Names
29import Language.PureScript.Names
29import Language.PureScript.Pretty
30import Language.PureScript.Pretty
30import Language.PureScript.Traversals
31import Language.PureScript.Traversals
@@ -32,6 +33,7 @@ import Language.PureScript.Types
32import Language.PureScript.Pretty.Common (endWith)
33import Language.PureScript.Pretty.Common (endWith)
33import qualified Language.PureScript.Bundle as Bundle
34import qualified Language.PureScript.Bundle as Bundle
34import qualified Language.PureScript.Constants as C
35import qualified Language.PureScript.Constants as C
36+import Language.PureScript.Pretty.Common (before)
36import qualified System.Console.ANSI as ANSI
38import qualified System.Console.ANSI as ANSI
@@ -594,9 +596,9 @@ prettyPrintSingleError (PPEOptions codeColor full level showWiki) e = flip evalS
594 , line "They may be disallowed completely in a future version of the compiler."
596 , line "They may be disallowed completely in a future version of the compiler."
596 renderSimpleErrorMessage OverlappingInstances{} = internalError "OverlappingInstances: empty instance list"
598 renderSimpleErrorMessage OverlappingInstances{} = internalError "OverlappingInstances: empty instance list"
597− renderSimpleErrorMessage (NoInstanceFound (Constraint C.Fail [ TypeLevelString message ] _)) =
599+ renderSimpleErrorMessage (NoInstanceFound (Constraint C.Fail [ ty ] _)) | Just box <- toTypelevelString ty =
598 paras [ line "A custom type error occurred while solving type class constraints:"
600 paras [ line "A custom type error occurred while solving type class constraints:"
599− , indent . paras . map line . lines $ message
601+ , indent box
601 renderSimpleErrorMessage (NoInstanceFound (Constraint C.Partial
603 renderSimpleErrorMessage (NoInstanceFound (Constraint C.Partial
@@ -1203,6 +1205,14 @@ renderBox = unlines
1203 dropWhileEnd p = reverse . dropWhile p . reverse
1205 dropWhileEnd p = reverse . dropWhile p . reverse
1204 whiteSpace = all isSpace
1206 whiteSpace = all isSpace
1208+toTypelevelString :: Type -> Maybe Box.Box
1209+toTypelevelString (TypeLevelString s) = Just $ Box.text s
1210+toTypelevelString (TypeApp (TypeConstructor f) x)
1211+ | f == primName "TypeString" = Just $ typeAsBox x
1212+toTypelevelString (TypeApp (TypeApp (TypeConstructor f) x) ret)
1213+ | f == primName "TypeConcat" = before <$> (toTypelevelString x) <*> (toTypelevelString ret)
1214+toTypelevelString _ = Nothing
1207-- Rethrow an error with a more detailed error message in the case of failure
1217-- Rethrow an error with a more detailed error message in the case of failure