@@ -25,6 +25,7 @@ import qualified Data.Map as M
2525
2626import Language.PureScript.AST
2727import Language.PureScript.Crash
28+import Language.PureScript.Environment
2829import Language.PureScript.Names
2930import Language.PureScript.Pretty
3031import Language.PureScript.Traversals
@@ -32,6 +33,7 @@ import Language.PureScript.Types
3233import Language.PureScript.Pretty.Common (endWith)
3334import qualified Language.PureScript.Bundle as Bundle
3435import qualified Language.PureScript.Constants as C
36+import Language.PureScript.Pretty.Common (before)
3537
3638import qualified System.Console.ANSI as ANSI
3739
@@ -594,9 +596,9 @@ prettyPrintSingleError (PPEOptions codeColor full level showWiki) e = flip evalS
594596 , line "They may be disallowed completely in a future version of the compiler."
595597 ]
596598 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 =
598600 paras [ line "A custom type error occurred while solving type class constraints:"
599− , indent . paras . map line . lines $ message
601+ , indent box
600602 ]
601603 renderSimpleErrorMessage (NoInstanceFound (Constraint C.Partial
602604 _
@@ -1203,6 +1205,14 @@ renderBox = unlines
12031205 dropWhileEnd p = reverse . dropWhile p . reverse
12041206 whiteSpace = all isSpace
12051207
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
1215+
12061216-- |
12071217-- Rethrow an error with a more detailed error message in the case of failure
12081218--