Declaring a variable as __weak__ ought to imply that the type includes zero.

Consider

  class Foo(__weak__ object bar){}

If the gc zaps bar, it will be set to 0, so either the compiler should complain and/or it should add zero to the type implicitly.