A variety of tests around reachability. These tests in general check two things:

  • that we get unreachable code warnings in reasonable locations;
  • that we permit coercions into ! from expressions which diverge, where an expression “diverges” if it must execute some subexpression of type !, or it has type ! itself.