@@ -588,6 +588,10 @@ extension SwiftPackageTool {
588588
589589 @Flag ( help: " Add symbols with SPI information to the symbol graph. " )
590590 var includeSPISymbols = false
591+
592+ @Flag ( help: " Emit extension block symbols for extensions to external types or directly associate members and conformances with the extended nominal. " )
593+ var extensionBlockSymbolBehavior : ExtensionBlockSymbolBehavior = . omitExtensionBlockSymbols
594+
591595
592596 func run( _ swiftTool: SwiftTool ) throws {
593597 // Build the current package.
@@ -604,6 +608,7 @@ extension SwiftPackageTool {
604608 minimumAccessLevel: minimumAccessLevel,
605609 skipInheritedDocs: skipInheritedDocs,
606610 includeSPISymbols: includeSPISymbols,
611+ emitExtensionBlockSymbols: extensionBlockSymbolBehavior == . emitExtensionBlockSymbols,
607612 outputFormat: . json( pretty: prettyPrint)
608613 )
609614
@@ -624,6 +629,11 @@ extension SwiftPackageTool {
624629 print ( " Files written to " , symbolGraphDirectory. pathString)
625630 }
626631 }
632+
633+ enum ExtensionBlockSymbolBehavior : String , EnumerableFlag {
634+ case emitExtensionBlockSymbols
635+ case omitExtensionBlockSymbols
636+ }
627637
628638 struct DumpPackage : SwiftCommand {
629639 static let configuration = CommandConfiguration (
@@ -1428,6 +1438,7 @@ final class PluginDelegate: PluginInvocationDelegate {
14281438 }
14291439 symbolGraphExtractor. skipInheritedDocs = true
14301440 symbolGraphExtractor. includeSPISymbols = options. includeSPI
1441+ symbolGraphExtractor. emitExtensionBlockSymbols = options. emitExtensionBlocks
14311442
14321443 // Determine the output directory, and remove any old version if it already exists.
14331444 guard let package = packageGraph. package ( for: target) else {
0 commit comments