@@ -395,6 +395,13 @@ class SILSymbolVisitorImpl : public ASTVisitor<SILSymbolVisitorImpl> {
395
395
addMainIfNecessary (file);
396
396
397
397
for (auto D : decls) {
398
+ D->visitAuxiliaryDecls ([&](Decl *decl) {
399
+ if (Ctx.getOpts ().LinkerDirectivesOnly && !requiresLinkerDirective (decl))
400
+ return ;
401
+
402
+ visit (decl);
403
+ });
404
+
398
405
if (Ctx.getOpts ().LinkerDirectivesOnly && !requiresLinkerDirective (D))
399
406
continue ;
400
407
@@ -573,6 +580,20 @@ class SILSymbolVisitorImpl : public ASTVisitor<SILSymbolVisitorImpl> {
573
580
visitAbstractStorageDecl (SD);
574
581
}
575
582
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
+
576
597
void visitNominalTypeDecl (NominalTypeDecl *NTD) {
577
598
auto declaredType = NTD->getDeclaredType ()->getCanonicalType ();
578
599
@@ -591,9 +612,7 @@ class SILSymbolVisitorImpl : public ASTVisitor<SILSymbolVisitorImpl> {
591
612
592
613
addRuntimeDiscoverableAttrGenerators (NTD);
593
614
594
- if (Ctx.getOpts ().VisitMembers )
595
- for (auto member : NTD->getMembers ())
596
- visit (member);
615
+ visitMembers (NTD);
597
616
}
598
617
599
618
void visitClassDecl (ClassDecl *CD) {
@@ -682,9 +701,7 @@ class SILSymbolVisitorImpl : public ASTVisitor<SILSymbolVisitorImpl> {
682
701
addConformances (ED);
683
702
}
684
703
685
- if (Ctx.getOpts ().VisitMembers )
686
- for (auto member : ED->getMembers ())
687
- visit (member);
704
+ visitMembers (ED);
688
705
}
689
706
690
707
#ifndef NDEBUG
0 commit comments