@@ -49,19 +49,23 @@ addError span message t1 t2 =
50 err = makeError <$> extraPretty t1 <*> extraPretty t2
50 err = makeError <$> extraPretty t1 <*> extraPretty t2
53− case span of
52+ location = case span of
54− NoSpan msg -> if null msg then "" else ":\n\n " ++ msg
53+ NoSpan msg -> ""
55− Span p1 p2 msg -> lineNum ++ expr
54+ Span p1 p2 msg ->
57− lineNum = if line p1 == line p2 then "on line " ++ show (line p1)
55+ if line p1 == line p2 then " on line " ++ show (line p1)
58− else "between lines " ++ show (line p1) ++ " and " ++ show (line p2)
56+ else " between lines " ++ show (line p1) ++ " and " ++ show (line p2)
59− expr = if null msg then "" else ":\n\n " ++ msg
58+ display msg = if null msg then "\n"
59+ else "\n" ++ unlines (map (" "++) $ lines msg)
62+ NoSpan msg -> display msg
63+ Span _ _ msg -> display msg
61 makeError pt1 pt2 =
65 makeError pt1 pt2 =
62− P.vcat [ P.text $ "Type error " ++ location
66+ P.vcat [ P.text $ "Type error" ++ location ++ ":"
63 , if null message then empty else P.vcat . map P.text $ lines message
67 , if null message then empty else P.vcat . map P.text $ lines message
64− , P.text " "
68+ , P.text src
65 , P.text " Expected Type:" <+> pt1
69 , P.text " Expected Type:" <+> pt1
66 , P.text " Actual Type:" <+> pt2 <> P.text "\n"
70 , P.text " Actual Type:" <+> pt2 <> P.text "\n"