this is a pre-patch for adding using-enum support (https://reviews.llvm.org/D101370) On the ML https://lists.llvm.org/pipermail/cfe-dev/2021-April/068074.html, David Rector suggested breaking out the shadow decl handling of UsingDecl to a new intermediate base class. that's what this patch does, altering the decl hierarchy to:
def ShadowIntroducing : DeclNode<Named, "shadow introducer", 1>; def Using : DeclNode<ShadowIntroducing>; def UsingPack : DeclNode<Named>; def UsingShadow : DeclNode<Named>; def ConstructorUsingShadow : DeclNode<UsingShadow>;
I'll add UsingEnumDecl as a sibling of UsingDecl.
I'm not totally enamoured of the 'ShadowIntroducingDecl' name, but couldn't think of a better one right now.
Have I added this new class correctly? (for avoidance of doubt, I don't intend to commit an approved version of this until the using-enum patch is ready to go).
While we're here it would be nice to clarify this documentation, in particular to suggest some ways by which multiple shadows can be introduced by a single using declaration. I suggest: