Assuming ns::foo doesn't exist, given:
using ns::foo __attribute__((using_if_exists));
The AST will look something like:
UsingDecl
UsingShadowDecl UnresolvedUsingIfExistsDecl
Thus we end up adding a reference to UnresolvedUsingIfExistsDecl when
processing UsingDecl, but never add the decl itself. In this case the
decl is really the UsingDecl anyway though (which we do output), so it
makes more sense to just remove the extra reference.
The AST here is:
UsingDecl -> UsingShadowDecl -> UnresolvedUsingIfExistsDecl
So the UnresolvedUsingIfExistsDecl is a reference, which is a bit weird since there is no decl. But... there is no decl ("foo" doesn't exist), so this seems somewhat reasonable. Any objections?