Skip to content

Commit 504fe3c

Browse files
committed
Make emission of extension block symbols formal feature
- add name to lib/Option/features.json - add flag for explicitly disabling extension block symbols feature
1 parent 9aa4c93 commit 504fe3c

File tree

6 files changed

+18
-6
lines changed

6 files changed

+18
-6
lines changed

include/swift/Option/Options.td

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1370,6 +1370,11 @@ def emit_extension_block_symbols: Flag<["-"], "emit-extension-block-symbols">,
13701370
NoInteractiveOption, SupplementaryOutput, HelpHidden]>,
13711371
HelpText<"Emit 'swift.extension' symbols for extensions to external types instead of directly associating members and conformances with the extended nominal when generating symbol graphs">;
13721372

1373+
def omit_extension_block_symbols: Flag<["-"], "omit-extension-block-symbols">,
1374+
Flags<[SwiftSymbolGraphExtractOption, FrontendOption,
1375+
NoInteractiveOption, SupplementaryOutput, HelpHidden]>,
1376+
HelpText<"Directly associate members and conformances with the extended nominal when generating symbol graphs instead of emitting 'swift.extension' symbols for extensions to external types">;
1377+
13731378
// swift-symbolgraph-extract-only options
13741379
def output_dir : Separate<["-"], "output-dir">,
13751380
Flags<[NoDriverOption, SwiftSymbolGraphExtractOption, SwiftAPIDigesterOption,

lib/Driver/ToolChains.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -617,7 +617,8 @@ ToolChain::constructInvocation(const CompileJobAction &job,
617617
context.Args.AddLastArg(Arguments, options::OPT_emit_symbol_graph_dir);
618618
}
619619
context.Args.AddLastArg(Arguments, options::OPT_include_spi_symbols);
620-
context.Args.AddLastArg(Arguments, options::OPT_emit_extension_block_symbols);
620+
context.Args.AddLastArg(Arguments, options::OPT_emit_extension_block_symbols,
621+
options::OPT_omit_extension_block_symbols);
621622
context.Args.AddLastArg(Arguments, options::OPT_symbol_graph_minimum_access_level);
622623

623624
return II;
@@ -1114,7 +1115,8 @@ ToolChain::constructInvocation(const MergeModuleJobAction &job,
11141115
context.Args.AddLastArg(Arguments, options::OPT_emit_symbol_graph);
11151116
context.Args.AddLastArg(Arguments, options::OPT_emit_symbol_graph_dir);
11161117
context.Args.AddLastArg(Arguments, options::OPT_include_spi_symbols);
1117-
context.Args.AddLastArg(Arguments, options::OPT_emit_extension_block_symbols);
1118+
context.Args.AddLastArg(Arguments, options::OPT_emit_extension_block_symbols,
1119+
options::OPT_omit_extension_block_symbols);
11181120
context.Args.AddLastArg(Arguments, options::OPT_symbol_graph_minimum_access_level);
11191121

11201122
context.Args.AddLastArg(Arguments, options::OPT_import_objc_header);

lib/DriverTool/swift_symbolgraph_extract_main.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,8 @@ int swift_symbolgraph_extract_main(ArrayRef<const char *> Args,
172172
ParsedArgs.hasArg(OPT_skip_inherited_docs),
173173
ParsedArgs.hasArg(OPT_include_spi_symbols),
174174
/*IncludeClangDocs=*/false,
175-
ParsedArgs.hasArg(OPT_emit_extension_block_symbols),
175+
ParsedArgs.hasFlag(OPT_emit_extension_block_symbols,
176+
OPT_omit_extension_block_symbols, /*default=*/false),
176177
};
177178

178179
if (auto *A = ParsedArgs.getLastArg(OPT_minimum_access_level)) {

lib/Frontend/CompilerInvocation.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1306,7 +1306,8 @@ static void ParseSymbolGraphArgs(symbolgraphgen::SymbolGraphOptions &Opts,
13061306
Opts.SkipInheritedDocs = Args.hasArg(OPT_skip_inherited_docs);
13071307
Opts.IncludeSPISymbols = Args.hasArg(OPT_include_spi_symbols);
13081308
Opts.EmitExtensionBlockSymbols =
1309-
Args.hasArg(OPT_emit_extension_block_symbols);
1309+
Args.hasFlag(OPT_emit_extension_block_symbols,
1310+
OPT_omit_extension_block_symbols, /*default=*/false);
13101311

13111312
if (auto *A = Args.getLastArg(OPT_symbol_graph_minimum_access_level)) {
13121313
Opts.MinimumAccessLevel =

lib/Option/features.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@
2626
},
2727
{
2828
"name": "emit-const-value-sidecar"
29+
},
30+
{
31+
"name": "emit-extension-block-symbols"
2932
}
3033
]
3134
}

test/SymbolGraph/Module/BasicExtension.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22

33
// RUN: %empty-directory(%t)
44
// RUN: %target-build-swift %s -module-name BasicExtension -emit-module -emit-module-path %t/
5-
// RUN: %target-swift-symbolgraph-extract -module-name BasicExtension -I %t -pretty-print -output-dir %t
5+
// RUN: %target-swift-symbolgraph-extract -module-name BasicExtension -I %t -pretty-print -output-dir %t -omit-extension-block-symbols
66
// RUN: %FileCheck %s --input-file %t/[email protected] --check-prefixes ALL,EXTRACT,EBSOff,EBSOff_EXTRACT
77

88
// RUN: %empty-directory(%t)
9-
// RUN: %target-build-swift %s -module-name BasicExtension -emit-module -emit-module-path %t/ -emit-symbol-graph -emit-symbol-graph-dir %t
9+
// RUN: %target-build-swift %s -module-name BasicExtension -emit-module -emit-module-path %t/ -emit-symbol-graph -emit-symbol-graph-dir %t -omit-extension-block-symbols
1010
// RUN: %FileCheck %s --input-file %t/[email protected] --check-prefixes ALL,BUILD,EBSOff,EBSOff_BUILD
1111

1212

0 commit comments

Comments
 (0)