In Haskell, support an assertion that a given expression is not an infinite data structure. Of course, this is trivially reduceable to the impossible Halting Problem, so we seek approximations: determine whether the assertion definitely holds, definitely fails, or the compiler can't figure it out.
Could be done at compile-time, or possibly at runtime when there is more information.
Inspired by debugging with Debug.Trace: we don't want printing an expression to hang the program. (And in particular debugging a compiler compiling a program with data or type recursion.)