aaron.ballman added inline comments.
================ Comment at: clang/include/clang/AST/DeclCXX.h:3801 +/// error. +class UnresolvedUsingIfExistsDecl final : public NamedDecl { + UnresolvedUsingIfExistsDecl(DeclContext *DC, SourceLocation Loc, ---------------- erik.pilkington wrote: > aaron.ballman wrote: > > erik.pilkington wrote: > > > aaron.ballman wrote: > > > > Why is this inheriting from a `NamedDecl` rather than a `UsingDecl`? > > > > Given that this is a type of using declaration, I guess I would have > > > > expected it to appear as such in the AST hierarchy. For instance, > > > > should people using AST matchers be able to match one of these as a > > > > using declaration or are they so different semantically that they need > > > > to be sibling AST nodes? > > > This node isn't a kind of using declaration, it is a declaration that > > > gets inserted into the scope via a usual UsingDecl & UsingShadowDecl > > > mechanism that Sema knows to error out on if it is ever used. So > > > presumably existing AST users would still recognize that this is a > > > UsingDecl that adds a single declaration into the current context, but > > > wouldn't really know anything about that declaration. I updated the doc > > > comment above to make that more clear. > > So given code like this: > > ``` > > using empty_namespace::does_not_exist __attribute__((using_if_exists)); > > ``` > > would you expect this AST matcher to match or not? > > ``` > > usingDecl() > > ``` > > (I hope the answer is "yes" because otherwise the behavior is rather > > inexplicable to me.) > Yeah, the answer is "yes". The AST representation for a using_if_exists > declaration that failed to lookup anything would look something like this: > > ``` > |-UsingDecl 0x7fa42b84a3a0 <t.cpp:20:1, col:9> col:9 ::X > |-UsingShadowDecl 0x7fa42b84a3f8 <col:9> col:9 implicit > UnresolvedUsingIfExists 0x7fa42b84a370 'X' > ``` > > So its still using the typical UsingDecl machinery, its just that the > declaration thats being imported is different. Awesome, thank you for clarifying! CHANGES SINCE LAST ACTION https://reviews.llvm.org/D90188/new/ https://reviews.llvm.org/D90188 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits