Turns out `typeck::check` creates a `~fn()` out of thin air when synthesizing expected types. Fixed and eliminated some dead code and a clone along the way.