This is trivial if we just say that either: A) All pointers have to point to primitive. B) Pointers can point to anything regardless of address space. In either case, the address space of a pointer is decoupled from the pointed-to type, and so could be expressed as its own type variable. Yay! Note that (B) is totally OK - we can just say that this is an instantiation-time verification.
We don't have generics any more, so this doesn't make any sense.
Migrated to https://github.com/gpuweb/WHLSL/issues/129