I imagine this is to make vkd3d_shader_scan() more similar to vkd3d_shader_compile(), but I think vkd3d_unreachable() is worse than the existing code.
Even if the source type is already validated by `vkd3d_shader_validate_compile_info()`? Which use do you see into validating the source type twice?
It's more about disliking vkd3d_unreachable()/abort(). That's a discussion we've had a few times before, of course; what's different this time is that we've seen a number of bugs come in through WineHQ Bugzilla with assertions failing inside vkd3d-shader since the last time we had that discussion.