Actually the compiler is right from making this assumption. You told him it was attached. What the compiler could probably tell you is that it was useless to do an object test in this particular case. I believe that you are going too far in your conversion for the conformance mode of void-safety. In that stage, you decide which queries are attached, which are detachable. Once done, you simply fix conformance errors without introducing any object tests. Even if you were using an object test before, it meant that the expression was detachable, so it should stay that way. If during your conversion you made it attached, you should look at the callers and update them accordingly. Once the conformance level is done, you can go to one level up in the migration to void-safe and this will really perform check about void-safety which would detect your original error. A final note, do not reply to the email since it goes to a barely monitored email address. Thanks.