Why is an irrefutable pattern desugared to a 'cast', while an incomplete pattern is not?