As I understand, the problem is that switch statement was taken from C where it's a goto with a bunch of labels, so the compiler can't easily reason about variable lifetime or something like that.