If you can't drop it that's your only choice ...
Bret/Jeff: it is a pity that deferred name resolution is restricted to the proc's scope. It would have helped having an option to avoid parser messages of this sort (whatever its name would be).
I'd go as far as saying that this is really a bug: the code runs and IS correct. Parser is not smart enough to READ conditioned statements - whether this is within SP or not does not really matter here.