WIP: Detect unbounded recursion in normaliseType
Commit message:
Detect unbounded recursion in normaliseType
normaliseType is a function that tries to normalise all
type families in a type. It previously had no check for
unbounded recursion and would loop. This caused trouble in
:kind! (and likely, in other places). Fixed now, using RecTcChecker.
Fixes #17306
Test case: ghci/scripts/T17306
Note that this uses RecTcChecker
, not -freduction-depth
. The error will trigger whenever the same tycon is expanded 100 times or more. This is not configurable.
It uses RecTcChecker
for impedance matching with topNormaliseType
. That function has unconfigurably stopped at 100 unwrappings for some time, and no one has complained.
Edited by Ben Gamari