@@ -395,6 +395,13 @@ class SILSymbolVisitorImpl : public ASTVisitor<SILSymbolVisitorImpl> {
395395 addMainIfNecessary (file);
396396
397397 for (auto D : decls) {
398+ D->visitAuxiliaryDecls ([&](Decl *decl) {
399+ if (Ctx.getOpts ().LinkerDirectivesOnly && !requiresLinkerDirective (decl))
400+ return ;
401+
402+ visit (decl);
403+ });
404+
398405 if (Ctx.getOpts ().LinkerDirectivesOnly && !requiresLinkerDirective (D))
399406 continue ;
400407
@@ -573,6 +580,20 @@ class SILSymbolVisitorImpl : public ASTVisitor<SILSymbolVisitorImpl> {
573580 visitAbstractStorageDecl (SD);
574581 }
575582
583+ template <typename NominalOrExtension>
584+ void visitMembers (NominalOrExtension *D) {
585+ if (!Ctx.getOpts ().VisitMembers )
586+ return ;
587+
588+ for (auto member : D->getMembers ()) {
589+ member->visitAuxiliaryDecls ([&](Decl *decl) {
590+ visit (decl);
591+ });
592+
593+ visit (member);
594+ }
595+ }
596+
576597 void visitNominalTypeDecl (NominalTypeDecl *NTD) {
577598 auto declaredType = NTD->getDeclaredType ()->getCanonicalType ();
578599
@@ -591,9 +612,7 @@ class SILSymbolVisitorImpl : public ASTVisitor<SILSymbolVisitorImpl> {
591612
592613 addRuntimeDiscoverableAttrGenerators (NTD);
593614
594- if (Ctx.getOpts ().VisitMembers )
595- for (auto member : NTD->getMembers ())
596- visit (member);
615+ visitMembers (NTD);
597616 }
598617
599618 void visitClassDecl (ClassDecl *CD) {
@@ -682,9 +701,7 @@ class SILSymbolVisitorImpl : public ASTVisitor<SILSymbolVisitorImpl> {
682701 addConformances (ED);
683702 }
684703
685- if (Ctx.getOpts ().VisitMembers )
686- for (auto member : ED->getMembers ())
687- visit (member);
704+ visitMembers (ED);
688705 }
689706
690707#ifndef NDEBUG
0 commit comments