@@ -40,7 +40,7 @@ import qualified Type.Error as T
41 = BadExpr R.Region Category T.Type (Expected T.Type)
41 = BadExpr R.Region Category T.Type (Expected T.Type)
42 | BadPattern R.Region PCategory T.Type (PExpected T.Type)
42 | BadPattern R.Region PCategory T.Type (PExpected T.Type)
43− | InfiniteType T.Type
43+ | InfiniteType R.Region N.Name T.Type
@@ -170,8 +170,8 @@ toReport source localizer err =
170 BadPattern region category tipe expected ->
170 BadPattern region category tipe expected ->
171 toPatternReport source localizer region category tipe expected
171 toPatternReport source localizer region category tipe expected
173− InfiniteType overallType ->
173+ InfiniteType region name overallType ->
174− error "TODO" source localizer overallType
174+ toInfiniteReport source localizer region name overallType
@@ -1250,3 +1250,28 @@ badEquality localizer op tipe expectedType =
1259+toInfiniteReport :: Code.Source -> T.Localizer -> R.Region -> N.Name -> T.Type -> Report.Report
1260+toInfiniteReport source localizer region name overallType =
1261+ Report.Report "INFINITE TYPE" region [] $
1262+ Report.toCodeSnippet source region Nothing
1265+ "I am inferring a weird self-referential type for " <> N.toString name <> ":"
1269+ "Here is my best effort at writing down the type. You will see ∞ for\
1270+ \ parts of the type that repeat something already printed out infinitely."
1271+ , indentType localizer overallType
1273+ "Staring at the type is usually not so helpful, so I recommend reading the hints at"