@@ -3,7 +3,6 @@
3module Reporting.Error.Type
3module Reporting.Error.Type
4 ( Error(..)
4 ( Error(..)
5 -- expectations
5 -- expectations
7 , Expected(..)
6 , Expected(..)
8 , Context(..)
7 , Context(..)
9 , SubContext(..)
8 , SubContext(..)
@@ -14,10 +13,6 @@ module Reporting.Error.Type
14 , PCategory(..)
13 , PCategory(..)
15 , typeReplace
14 , typeReplace
16 , ptypeReplace
15 , ptypeReplace
21 -- make reports
16 -- make reports
22 , toReport
17 , toReport
@@ -29,12 +24,12 @@ import Data.Monoid ((<>))
30import qualified AST.Module.Name as ModuleName
25import qualified AST.Module.Name as ModuleName
31import qualified Data.Index as Index
26import qualified Data.Index as Index
32−import qualified Data.Map as Map
33import qualified Elm.Name as N
27import qualified Elm.Name as N
34import qualified Reporting.Helpers as H
28import qualified Reporting.Helpers as H
35import qualified Reporting.Region as R
29import qualified Reporting.Region as R
36import qualified Reporting.Render.Code as Code
30import qualified Reporting.Render.Code as Code
37import qualified Reporting.Report as Report
31import qualified Reporting.Report as Report
32+import qualified Type.Error as T
@@ -42,21 +37,15 @@ import qualified Reporting.Report as Report
45− = Mismatch Origin (Expected Type)
40+ = Mismatch R.Region Category T.Type (Expected T.Type)
46− | BadPattern R.Region PCategory Type (PExpected Type)
41+ | BadPattern R.Region PCategory T.Type (PExpected T.Type)
47− | InfiniteType Type
42+ | InfiniteType T.Type
51-- EXPRESSION EXPECTATIONS
46-- EXPRESSION EXPECTATIONS
55− = BadExpr R.Region Category Type
56− | BadLocal R.Region N.Name Type
57− | BadForeign R.Region N.Name Type
60data Expected tipe
49data Expected tipe
61 = NoExpectation tipe
50 = NoExpectation tipe
62 | FromContext R.Region Context tipe
51 | FromContext R.Region Context tipe
@@ -100,14 +89,16 @@ data Category
102 | CallResult MaybeName
91 | CallResult MaybeName
103− | LambdaExpr
92+ | Lambda
104 | Accessor N.Name
93 | Accessor N.Name
105 | Access N.Name
94 | Access N.Name
106− | RecordExpr
95+ | Record
107− | TupleExpr
96+ | Tuple
108− | UnitExpr
97+ | Unit
110 | Effects
99 | Effects
@@ -166,47 +157,14 @@ ptypeReplace expectation tipe =
173− = Lambda Type [Type]
180− | Type ModuleName.Canonical N.Name [Type]
181− | Record (Map.Map N.Name Type) Extension
183− | Tuple Type Type (Maybe Type)
184− | Alias ModuleName.Canonical N.Name [(N.Name, Type)] Type
194-- TO REPORT
160-- TO REPORT
197−toReport :: Code.Source -> Localizer -> Error -> Report.Report
163+toReport :: Code.Source -> T.Localizer -> Error -> Report.Report
198toReport source localizer err =
164toReport source localizer err =
199 case err of
165 case err of
200− Mismatch origin expected ->
166+ Mismatch region category actualType expected ->
202− BadForeign region name tipe ->
203− toMismatchReport source localizer region (Var name) tipe expected
205− BadLocal region name tipe ->
206− toMismatchReport source localizer region (Var name) tipe expected
167+ toMismatchReport source localizer region category actualType expected
208− BadExpr region category tipe ->
209− toMismatchReport source localizer region (Category category) tipe expected
211 BadPattern region category tipe expected ->
169 BadPattern region category tipe expected ->
212 error "TODO" region category tipe expected
170 error "TODO" region category tipe expected
@@ -219,48 +177,40 @@ toReport source localizer err =
219-- HELPERS
177-- HELPERS
227−toDescription :: Thing -> String -> String
180+toDescription :: Category -> String -> String
228−toDescription thing thatThingIs =
181+toDescription category thatThingIs =
229− case thing of
182+ case category of
230− Var name ->
183+ Local name -> "This `" <> N.toString name <> "` value has type:"
231− "This `" <> N.toString name <> "` value has type:"
184+ Foreign name -> "This `" <> N.toString name <> "` value has type:"
232−
185+ Access field -> "The value at ." <> N.toString field <> " has type:"
233− Category category ->
186+ Accessor field -> "This ." <> N.toString field <> " field access function has type:"
234− case category of
187+ If -> "This `if` expression produces a value of type:"
188+ Case -> "This `case` expression produces a value of type:"
235− List -> thatThingIs <> " a list of type:"
189+ List -> thatThingIs <> " a list of type:"
236− Number -> thatThingIs <> " a number of type:"
190+ Number -> thatThingIs <> " a number of type:"
237− Float -> thatThingIs <> " a float of type:"
191+ Float -> thatThingIs <> " a float of type:"
238− String -> thatThingIs <> " a string of type:"
192+ String -> thatThingIs <> " a string of type:"
239− Char -> thatThingIs <> " a character of type:"
193+ Char -> thatThingIs <> " a character of type:"
240− If -> "This `if` expression produces a value of type:"
241− Case -> "This `case` expression produces a value of type:"
242− LambdaExpr -> thatThingIs <> " an anonymous function of type:"
194+ Lambda -> thatThingIs <> " an anonymous function of type:"
243− Accessor field -> "This ." <> N.toString field <> " field access function has type:"
244− Access field -> "The value at ." <> N.toString field <> " has type:"
245− RecordExpr -> thatThingIs <> " a record of type:"
195+ Record -> thatThingIs <> " a record of type:"
246− TupleExpr -> thatThingIs <> " a tuple of type:"
196+ Tuple -> thatThingIs <> " a tuple of type:"
247− UnitExpr -> thatThingIs <> " a unit value:"
197+ Unit -> thatThingIs <> " a unit value:"
248− Shader -> thatThingIs <> " a GLSL shader of type:"
198+ Shader -> thatThingIs <> " a GLSL shader of type:"
249− Effects -> thatThingIs <> " a thing for CORE LIBRARIES ONLY."
199+ Effects -> thatThingIs <> " a thing for CORE LIBRARIES ONLY."
250− CallResult maybeName ->
200+ CallResult maybeName ->
251− case maybeName of
201+ case maybeName of
252− NoName -> thatThingIs <> ":"
202+ NoName -> thatThingIs <> ":"
253− FuncName name -> "This `" <> N.toString name <> "` call produces:"
203+ FuncName name -> "This `" <> N.toString name <> "` call produces:"
254− CtorName name -> "This `" <> N.toString name <> "` call produces:"
204+ CtorName name -> "This `" <> N.toString name <> "` call produces:"
255− OpName _ -> thatThingIs <> ":"
205+ OpName _ -> thatThingIs <> ":"
259-- TO MISMATCH REPORT
209-- TO MISMATCH REPORT
262−toMismatchReport :: Code.Source -> Localizer -> R.Region -> Thing -> Type -> Expected Type -> Report.Report
212+toMismatchReport :: Code.Source -> T.Localizer -> R.Region -> Category -> T.Type -> Expected T.Type -> Report.Report
263−toMismatchReport source localizer exprRegion thing tipe expected =
213+toMismatchReport source localizer exprRegion category tipe expected =
264 Report.Report "TYPE MISMATCH" exprRegion [] $
214 Report.Report "TYPE MISMATCH" exprRegion [] $
265 case expected of
215 case expected of
266 NoExpectation expectedType ->
216 NoExpectation expectedType ->
@@ -270,7 +220,7 @@ toMismatchReport source localizer exprRegion thing tipe expected =
271 typeComparison localizer tipe expectedType
221 typeComparison localizer tipe expectedType
273− toDescription thing "It is"
223+ toDescription category "It is"
275 "But you are trying to use it as:"
225 "But you are trying to use it as:"
@@ -296,7 +246,7 @@ toMismatchReport source localizer exprRegion thing tipe expected =
297 typeComparison localizer tipe expectedType
247 typeComparison localizer tipe expectedType
299− toDescription thing $
249+ toDescription category $
300 case subContext of
250 case subContext of
301 TypedIfBranch index ->
251 TypedIfBranch index ->
302 "The " <> H.ordinalize (Index.toHuman index) <> " branch is"
252 "The " <> H.ordinalize (Index.toHuman index) <> " branch is"
@@ -328,7 +278,7 @@ toMismatchReport source localizer exprRegion thing tipe expected =
329 typeComparison localizer tipe expectedType
279 typeComparison localizer tipe expectedType
331− toDescription thing $
281+ toDescription category $
332 "The " <> H.ordinalize (Index.toHuman index) <> " element is"
282 "The " <> H.ordinalize (Index.toHuman index) <> " element is"
334 "But all the previous elements in the list are:"
284 "But all the previous elements in the list are:"
@@ -349,7 +299,7 @@ toMismatchReport source localizer exprRegion thing tipe expected =
349 "I do not know how to negate this type of value:"
299 "I do not know how to negate this type of value:"
352− [ H.reflow $ toDescription thing "It is"
302+ [ H.reflow $ toDescription category "It is"
353 , indentType localizer tipe
303 , indentType localizer tipe
354 , H.fillSep
304 , H.fillSep
355 ["But","I","only","now","how","to","negate"
305 ["But","I","only","now","how","to","negate"
@@ -361,10 +311,10 @@ toMismatchReport source localizer exprRegion thing tipe expected =
362 OpLeft op ->
312 OpLeft op ->
363 Report.toCodeSnippet source region (Just exprRegion) $
313 Report.toCodeSnippet source region (Just exprRegion) $
364− opLeftToDocs localizer thing op tipe expectedType
314+ opLeftToDocs localizer category op tipe expectedType
366 OpRight op ->
316 OpRight op ->
367− case opRightToDocs localizer thing op tipe expectedType of
317+ case opRightToDocs localizer category op tipe expectedType of
368 EmphBoth details ->
318 EmphBoth details ->
369 Report.toCodeSnippet source region Nothing details
319 Report.toCodeSnippet source region Nothing details
@@ -377,7 +327,7 @@ toMismatchReport source localizer exprRegion thing tipe expected =
377 "This `if` condition does not evaluate to a boolean value, True or False."
327 "This `if` condition does not evaluate to a boolean value, True or False."
380− [ H.reflow $ toDescription thing "It is"
330+ [ H.reflow $ toDescription category "It is"
381 , indentType localizer tipe
331 , indentType localizer tipe
382 , H.fillSep ["But","I","need","this","`if`","condition","to","be","a",H.dullyellow "Bool","value."]
332 , H.fillSep ["But","I","need","this","`if`","condition","to","be","a",H.dullyellow "Bool","value."]
383 , H.toSimpleHint $
333 , H.toSimpleHint $
@@ -398,7 +348,7 @@ toMismatchReport source localizer exprRegion thing tipe expected =
399 typeComparison localizer tipe expectedType
349 typeComparison localizer tipe expectedType
401− toDescription thing $
351+ toDescription category $
402 "The " <> H.ordinalize (Index.toHuman index) <> " branch is"
352 "The " <> H.ordinalize (Index.toHuman index) <> " branch is"
404 "But all the previous branches result in:"
354 "But all the previous branches result in:"
@@ -424,7 +374,7 @@ toMismatchReport source localizer exprRegion thing tipe expected =
425 typeComparison localizer tipe expectedType
375 typeComparison localizer tipe expectedType
427− toDescription thing $
377+ toDescription category $
428 "The " <> H.ordinalize (Index.toHuman index) <> " branch is"
378 "The " <> H.ordinalize (Index.toHuman index) <> " branch is"
430 "But all the previous branches result in:"
380 "But all the previous branches result in:"
@@ -463,7 +413,7 @@ toMismatchReport source localizer exprRegion thing tipe expected =
464 typeComparison localizer tipe expectedType
414 typeComparison localizer tipe expectedType
466− toDescription thing "This argument is"
416+ toDescription category "This argument is"
468 "But " <> thisFunction <> " needs the " <> H.ordinalize (Index.toHuman index)
418 "But " <> thisFunction <> " needs the " <> H.ordinalize (Index.toHuman index)
469 <> " argument to be:"
419 <> " argument to be:"
@@ -559,7 +509,7 @@ toMismatchReport source localizer exprRegion thing tipe expected =
559 RecordAccess field ->
509 RecordAccess field ->
560 Report.toCodeSnippet source region (Just exprRegion) $
510 Report.toCodeSnippet source region (Just exprRegion) $
561 case error "TODO figure out record things" tipe of
511 case error "TODO figure out record things" tipe of
562− Record _ _ ->
512+ T.Record _ _ ->
564 H.reflow $
514 H.reflow $
565 "This record does not have a `" <> N.toString field <> "` field:"
515 "This record does not have a `" <> N.toString field <> "` field:"
@@ -593,7 +543,7 @@ toMismatchReport source localizer exprRegion thing tipe expected =
596− Lambda _ _ ->
546+ T.Lambda _ _ _ ->
598 H.reflow $
548 H.reflow $
599 "I cannot access field `" <> N.toString field <> "` of this " <> whatever <> ":"
549 "I cannot access field `" <> N.toString field <> "` of this " <> whatever <> ":"
@@ -620,7 +570,7 @@ toMismatchReport source localizer exprRegion thing tipe expected =
621 RecordUpdate ->
571 RecordUpdate ->
622 case error "TODO figure out record things" tipe of
572 case error "TODO figure out record things" tipe of
623− Record _ _ ->
573+ T.Record _ _ ->
624 Report.toCodeSnippet source region Nothing
574 Report.toCodeSnippet source region Nothing
626 H.reflow $
576 H.reflow $
@@ -649,11 +599,11 @@ toMismatchReport source localizer exprRegion thing tipe expected =
649-- COUNT ARGS
599-- COUNT ARGS
652−countArgs :: Type -> Int
602+countArgs :: T.Type -> Int
653countArgs tipe =
603countArgs tipe =
654 case tipe of
604 case tipe of
655− Lambda _ stuff ->
605+ T.Lambda _ _ stuff ->
656− length stuff
606+ 1 + length stuff
@@ -663,8 +613,8 @@ countArgs tipe =
663-- OP LEFT
613-- OP LEFT
666−opLeftToDocs :: Localizer -> Thing -> N.Name -> Type -> Type -> (H.Doc, H.Doc)
616+opLeftToDocs :: T.Localizer -> Category -> N.Name -> T.Type -> T.Type -> (H.Doc, H.Doc)
667−opLeftToDocs localizer thing op tipe expectedType =
617+opLeftToDocs localizer category op tipe expectedType =
668 case op of
618 case op of
670 | isString tipe -> badStringAdd
620 | isString tipe -> badStringAdd
@@ -681,10 +631,10 @@ opLeftToDocs localizer thing op tipe expectedType =
681 "//" -> badIDiv localizer "left" tipe
631 "//" -> badIDiv localizer "left" tipe
682 "&&" -> badBool localizer "&&" "left" tipe
632 "&&" -> badBool localizer "&&" "left" tipe
683 "||" -> badBool localizer "||" "left" tipe
633 "||" -> badBool localizer "||" "left" tipe
684− "<" -> badCompLeft localizer thing "<" "left" tipe
634+ "<" -> badCompLeft localizer category "<" "left" tipe
685− ">" -> badCompLeft localizer thing ">" "left" tipe
635+ ">" -> badCompLeft localizer category ">" "left" tipe
686− "<=" -> badCompLeft localizer thing "<=" "left" tipe
636+ "<=" -> badCompLeft localizer category "<=" "left" tipe
687− ">=" -> badCompLeft localizer thing ">=" "left" tipe
637+ ">=" -> badCompLeft localizer category ">=" "left" tipe
690 ( "The left side of (<|) needs to be a function so I can pipe arguments to it!"
640 ( "The left side of (<|) needs to be a function so I can pipe arguments to it!"
@@ -712,7 +662,7 @@ opLeftToDocs localizer thing op tipe expectedType =
713 typeComparison localizer tipe expectedType
663 typeComparison localizer tipe expectedType
715− toDescription thing "The left argument is"
665+ toDescription category "The left argument is"
717 "But (" <> N.toString op <> ") needs the left argument to be:"
667 "But (" <> N.toString op <> ") needs the left argument to be:"
@@ -730,8 +680,8 @@ data RightDocs
730 | EmphRight (H.Doc, H.Doc)
680 | EmphRight (H.Doc, H.Doc)
733−opRightToDocs :: Localizer -> Thing -> N.Name -> Type -> Type -> RightDocs
683+opRightToDocs :: T.Localizer -> Category -> N.Name -> T.Type -> T.Type -> RightDocs
734−opRightToDocs localizer thing op tipe expectedType =
684+opRightToDocs localizer category op tipe expectedType =
735 case op of
685 case op of
737 | isInt tipe -> badCast op FloatInt
687 | isInt tipe -> badCast op FloatInt
@@ -778,7 +728,7 @@ opRightToDocs localizer thing op tipe expectedType =
779 typeComparison localizer tipe expectedType
729 typeComparison localizer tipe expectedType
781− toDescription thing "You are providing"
731+ toDescription category "You are providing"
783 "But (<|) is piping it a function that expects:"
733 "But (<|) is piping it a function that expects:"
@@ -790,9 +740,10 @@ opRightToDocs localizer thing op tipe expectedType =
792 case (tipe, expectedType) of
742 case (tipe, expectedType) of
793− (Lambda expectedArgType _, Lambda argType _) ->
743+ (T.Lambda expectedArgType _ _, T.Lambda argType _ _) ->
794 EmphRight
744 EmphRight
746+ -- TODO try to say the function name instead of "this function"
796 "I cannot pipe the argument through to this function:"
747 "I cannot pipe the argument through to this function:"
798 typeComparison localizer argType expectedArgType
749 typeComparison localizer argType expectedArgType
@@ -847,7 +798,7 @@ opRightToDocs localizer thing op tipe expectedType =
848 typeComparison localizer tipe expectedType
799 typeComparison localizer tipe expectedType
850− toDescription thing "The right argument is"
801+ toDescription category "The right argument is"
852 "But (" <> N.toString op <> ") needs the right argument to be:"
803 "But (" <> N.toString op <> ") needs the right argument to be:"
@@ -862,40 +813,40 @@ opRightToDocs localizer thing op tipe expectedType =
865−isInt :: Type -> Bool
816+isInt :: T.Type -> Bool
866isInt tipe =
817isInt tipe =
867 case tipe of
818 case tipe of
868− Type home name [] ->
819+ T.Type home name [] ->
869 home == ModuleName.basics && name == N.int
820 home == ModuleName.basics && name == N.int
875−isFloat :: Type -> Bool
826+isFloat :: T.Type -> Bool
876isFloat tipe =
827isFloat tipe =
877 case tipe of
828 case tipe of
878− Type home name [] ->
829+ T.Type home name [] ->
879 home == ModuleName.basics && name == N.float
830 home == ModuleName.basics && name == N.float
885−isString :: Type -> Bool
836+isString :: T.Type -> Bool
886isString tipe =
837isString tipe =
887 case tipe of
838 case tipe of
888− Type home name [] ->
839+ T.Type home name [] ->
889 home == ModuleName.string && name == N.string
840 home == ModuleName.string && name == N.string
895−isList :: Type -> Bool
846+isList :: T.Type -> Bool
896isList tipe =
847isList tipe =
897 case tipe of
848 case tipe of
898− Type home name [_] ->
849+ T.Type home name [_] ->
899 home == ModuleName.list && name == N.list
850 home == ModuleName.list && name == N.list
@@ -969,7 +920,7 @@ badStringAdd =
972−badListAdd :: Localizer -> String -> Type -> (H.Doc, H.Doc)
923+badListAdd :: T.Localizer -> String -> T.Type -> (H.Doc, H.Doc)
973badListAdd localizer direction tipe =
924badListAdd localizer direction tipe =
975 "I cannot do addition with lists:"
926 "I cannot do addition with lists:"
@@ -988,7 +939,7 @@ badListAdd localizer direction tipe =
991−badListMul :: Localizer -> String -> Type -> (H.Doc, H.Doc)
942+badListMul :: T.Localizer -> String -> T.Type -> (H.Doc, H.Doc)
992badListMul localizer direction tipe =
943badListMul localizer direction tipe =
993 badMath localizer "Multiplication" direction "*" tipe
944 badMath localizer "Multiplication" direction "*" tipe
@@ -1000,7 +951,7 @@ badListMul localizer direction tipe =
1003−badMath :: Localizer -> String -> String -> String -> Type -> [H.Doc] -> (H.Doc, H.Doc)
954+badMath :: T.Localizer -> String -> String -> String -> T.Type -> [H.Doc] -> (H.Doc, H.Doc)
1004badMath localizer operation direction op tipe otherHints =
955badMath localizer operation direction op tipe otherHints =
1006 H.reflow $
957 H.reflow $
@@ -1020,7 +971,7 @@ badMath localizer operation direction op tipe otherHints =
1023−badFDiv :: Localizer -> H.Doc -> Type -> (H.Doc, H.Doc)
974+badFDiv :: T.Localizer -> H.Doc -> T.Type -> (H.Doc, H.Doc)
1024badFDiv localizer direction tipe =
975badFDiv localizer direction tipe =
1026 H.reflow $
977 H.reflow $
@@ -1053,7 +1004,7 @@ badFDiv localizer direction tipe =
1056−badIDiv :: Localizer -> H.Doc -> Type -> (H.Doc, H.Doc)
1007+badIDiv :: T.Localizer -> H.Doc -> T.Type -> (H.Doc, H.Doc)
1057badIDiv localizer direction tipe =
1008badIDiv localizer direction tipe =
1059 H.reflow $
1010 H.reflow $
@@ -1092,7 +1043,7 @@ badIDiv localizer direction tipe =
1092-- BAD BOOLS
1043-- BAD BOOLS
1095−badBool :: Localizer -> H.Doc -> H.Doc -> Type -> (H.Doc, H.Doc)
1046+badBool :: T.Localizer -> H.Doc -> H.Doc -> T.Type -> (H.Doc, H.Doc)
1096badBool localizer op direction tipe =
1047badBool localizer op direction tipe =
1098 H.reflow $
1049 H.reflow $
@@ -1115,14 +1066,14 @@ badBool localizer op direction tipe =
1115-- BAD COMPARISON
1066-- BAD COMPARISON
1118−badCompLeft :: Localizer -> Thing -> String -> String -> Type -> (H.Doc, H.Doc)
1069+badCompLeft :: T.Localizer -> Category -> String -> String -> T.Type -> (H.Doc, H.Doc)
1119−badCompLeft localizer thing op direction tipe =
1070+badCompLeft localizer category op direction tipe =
1121 H.reflow $
1072 H.reflow $
1122 "I cannot do a comparison with this value:"
1073 "I cannot do a comparison with this value:"
1125− [ H.reflow $ toDescription thing $
1076+ [ H.reflow $ toDescription category $
1126 "The " <> direction <> " side of (" <> op <> ") is"
1077 "The " <> direction <> " side of (" <> op <> ") is"
1127 , indentType localizer tipe
1078 , indentType localizer tipe
1128 , H.fillSep
1079 , H.fillSep
@@ -1139,7 +1090,7 @@ badCompLeft localizer thing op direction tipe =
1142−badCompRight :: Localizer -> String -> Type -> Type -> RightDocs
1093+badCompRight :: T.Localizer -> String -> T.Type -> T.Type -> RightDocs
1143badCompRight localizer op tipe expectedType =
1094badCompRight localizer op tipe expectedType =
1144 EmphBoth
1095 EmphBoth
@@ -1163,7 +1114,7 @@ badCompRight localizer op tipe expectedType =
1163-- BAD EQUALITY
1114-- BAD EQUALITY
1166−badEquality :: Localizer -> String -> Type -> Type -> RightDocs
1117+badEquality :: T.Localizer -> String -> T.Type -> T.Type -> RightDocs
1167badEquality localizer op tipe expectedType =
1118badEquality localizer op tipe expectedType =
1168 EmphBoth
1119 EmphBoth
@@ -1195,10 +1146,7 @@ badEquality localizer op tipe expectedType =
1195-- DIFF TYPES
1146-- DIFF TYPES
1198−type Localizer = Map.Map N.Name ()
1201−typeComparison :: Localizer -> Type -> Type -> ( String, String, [H.Doc] ) -> H.Doc
1149+typeComparison :: T.Localizer -> T.Type -> T.Type -> ( String, String, [H.Doc] ) -> H.Doc
1202typeComparison localizer actual expected ( iAmSeeing, insteadOf, soHereAreSomeThoughts ) =
1150typeComparison localizer actual expected ( iAmSeeing, insteadOf, soHereAreSomeThoughts ) =
1204 (actualDoc, expectedDoc) =
1152 (actualDoc, expectedDoc) =
@@ -1213,7 +1161,7 @@ typeComparison localizer actual expected ( iAmSeeing, insteadOf, soHereAreSomeTh
1213 ++ soHereAreSomeThoughts
1161 ++ soHereAreSomeThoughts
1216−indentType :: Localizer -> Type -> H.Doc
1164+indentType :: T.Localizer -> T.Type -> H.Doc
1217indentType localizer tipe =
1165indentType localizer tipe =
1218 H.indent 4 (H.dullyellow (error "TODO Type.toDoc" localizer tipe))
1166 H.indent 4 (H.dullyellow (error "TODO Type.toDoc" localizer tipe))