Skip to content

Commit 9fa2d31

Browse files
authored
Merge pull request swiftlang#37206 from owenv/api-digester-opts
2 parents 43c5d89 + 6b004f1 commit 9fa2d31

File tree

3 files changed

+639
-549
lines changed

3 files changed

+639
-549
lines changed

include/swift/Option/Options.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ namespace options {
3939
SupplementaryOutput = (1 << 14),
4040
SwiftAPIExtractOption = (1 << 15),
4141
SwiftSymbolGraphExtractOption = (1 << 16),
42+
SwiftAPIDigesterOption = (1 << 17),
4243
};
4344

4445
enum ID {

include/swift/Option/Options.td

Lines changed: 170 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,9 @@ def SwiftAPIExtractOption : OptionFlag;
6161
// The option should be accepted by swift-symbolgraph-extract.
6262
def SwiftSymbolGraphExtractOption : OptionFlag;
6363

64+
// The option should be accepted by swift-api-digester.
65+
def SwiftAPIDigesterOption : OptionFlag;
66+
6467
/////////
6568
// Options
6669

@@ -177,15 +180,15 @@ def driver_mode : Joined<["--"], "driver-mode=">, Flags<[HelpHidden]>,
177180
def help : Flag<["-", "--"], "help">,
178181
Flags<[FrontendOption, AutolinkExtractOption, ModuleWrapOption,
179182
SwiftIndentOption, SwiftAPIExtractOption,
180-
SwiftSymbolGraphExtractOption]>,
183+
SwiftSymbolGraphExtractOption, SwiftAPIDigesterOption]>,
181184
HelpText<"Display available options">;
182185
def h : Flag<["-"], "h">, Alias<help>;
183186
def help_hidden : Flag<["-", "--"], "help-hidden">,
184187
Flags<[HelpHidden, FrontendOption]>,
185188
HelpText<"Display available options, including hidden options">;
186189

187190
def v : Flag<["-"], "v">,
188-
Flags<[DoesNotAffectIncrementalBuild, SwiftSymbolGraphExtractOption]>,
191+
Flags<[DoesNotAffectIncrementalBuild, SwiftSymbolGraphExtractOption, SwiftAPIDigesterOption]>,
189192
HelpText<"Show commands to run and use verbose output">;
190193
def version : Flag<["-", "--"], "version">, Flags<[FrontendOption]>,
191194
HelpText<"Print version information and exit">;
@@ -201,18 +204,20 @@ def _DASH_DASH : Option<["--"], "", KIND_REMAINING_ARGS>,
201204
def o : JoinedOrSeparate<["-"], "o">,
202205
Flags<[FrontendOption, AutolinkExtractOption, ModuleWrapOption,
203206
NoInteractiveOption, SwiftIndentOption, ArgumentIsPath,
204-
SwiftAPIExtractOption]>,
207+
SwiftAPIExtractOption, SwiftAPIDigesterOption]>,
205208
HelpText<"Write output to <file>">, MetaVarName<"<file>">;
206209

207210
def j : JoinedOrSeparate<["-"], "j">, Flags<[DoesNotAffectIncrementalBuild]>,
208211
HelpText<"Number of commands to execute in parallel">, MetaVarName<"<n>">;
209212

210213
def sdk : Separate<["-"], "sdk">,
211-
Flags<[FrontendOption, ArgumentIsPath, SwiftAPIExtractOption, SwiftSymbolGraphExtractOption]>,
214+
Flags<[FrontendOption, ArgumentIsPath, SwiftAPIExtractOption, SwiftSymbolGraphExtractOption,
215+
SwiftAPIDigesterOption]>,
212216
HelpText<"Compile against <sdk>">, MetaVarName<"<sdk>">;
213217

214218
def swift_version : Separate<["-"], "swift-version">,
215-
Flags<[FrontendOption, ModuleInterfaceOption, SwiftAPIExtractOption, SwiftSymbolGraphExtractOption]>,
219+
Flags<[FrontendOption, ModuleInterfaceOption, SwiftAPIExtractOption, SwiftSymbolGraphExtractOption,
220+
SwiftAPIDigesterOption]>,
216221
HelpText<"Interpret input according to a specific Swift language version number">,
217222
MetaVarName<"<vers>">;
218223

@@ -230,7 +235,7 @@ def D : JoinedOrSeparate<["-"], "D">, Flags<[FrontendOption]>,
230235
HelpText<"Marks a conditional compilation flag as true">;
231236

232237
def F : JoinedOrSeparate<["-"], "F">,
233-
Flags<[FrontendOption, ArgumentIsPath, SwiftAPIExtractOption, SwiftSymbolGraphExtractOption]>,
238+
Flags<[FrontendOption, ArgumentIsPath, SwiftAPIExtractOption, SwiftSymbolGraphExtractOption, SwiftAPIDigesterOption]>,
234239
HelpText<"Add directory to framework search path">;
235240
def F_EQ : Joined<["-"], "F=">, Flags<[FrontendOption, ArgumentIsPath]>,
236241
Alias<F>;
@@ -240,7 +245,7 @@ def Fsystem : Separate<["-"], "Fsystem">,
240245
HelpText<"Add directory to system framework search path">;
241246

242247
def I : JoinedOrSeparate<["-"], "I">,
243-
Flags<[FrontendOption, ArgumentIsPath, SwiftAPIExtractOption, SwiftSymbolGraphExtractOption]>,
248+
Flags<[FrontendOption, ArgumentIsPath, SwiftAPIExtractOption, SwiftSymbolGraphExtractOption, SwiftAPIDigesterOption]>,
244249
HelpText<"Add directory to the import search path">;
245250
def I_EQ : Joined<["-"], "I=">, Flags<[FrontendOption, ArgumentIsPath]>,
246251
Alias<I>;
@@ -347,11 +352,13 @@ def serialize_diagnostics : Flag<["-"], "serialize-diagnostics">,
347352
Flags<[FrontendOption, NoInteractiveOption, SupplementaryOutput]>,
348353
HelpText<"Serialize diagnostics in a binary format">;
349354
def serialize_diagnostics_path : Separate<["-"], "serialize-diagnostics-path">,
350-
Flags<[FrontendOption, NoBatchOption, ArgumentIsPath, SupplementaryOutput]>,
355+
Flags<[FrontendOption, SwiftAPIDigesterOption, NoBatchOption,
356+
ArgumentIsPath, SupplementaryOutput]>,
351357
HelpText<"Emit a serialized diagnostics file to <path>">,
352358
MetaVarName<"<path>">;
353359
def serialize_diagnostics_path_EQ: Joined<["-"], "serialize-diagnostics-path=">,
354-
Flags<[FrontendOption, NoBatchOption, ArgumentIsPath, SupplementaryOutput]>,
360+
Flags<[FrontendOption, SwiftAPIDigesterOption, NoBatchOption,
361+
ArgumentIsPath, SupplementaryOutput]>,
355362
Alias<serialize_diagnostics_path>;
356363
def color_diagnostics : Flag<["-"], "color-diagnostics">,
357364
Flags<[FrontendOption, DoesNotAffectIncrementalBuild]>,
@@ -383,7 +390,7 @@ def localization_path : Separate<["-"], "localization-path">,
383390

384391
def module_cache_path : Separate<["-"], "module-cache-path">,
385392
Flags<[FrontendOption, DoesNotAffectIncrementalBuild, ArgumentIsPath, SwiftAPIExtractOption,
386-
SwiftSymbolGraphExtractOption]>,
393+
SwiftSymbolGraphExtractOption, SwiftAPIDigesterOption]>,
387394
HelpText<"Specifies the Clang module cache path">;
388395

389396
def enable_library_evolution : Flag<["-"], "enable-library-evolution">,
@@ -1045,12 +1052,13 @@ def Xllvm : Separate<["-"], "Xllvm">,
10451052
MetaVarName<"<arg>">, HelpText<"Pass <arg> to LLVM.">;
10461053

10471054
def resource_dir : Separate<["-"], "resource-dir">,
1048-
Flags<[FrontendOption, SwiftSymbolGraphExtractOption, HelpHidden, ArgumentIsPath]>,
1055+
Flags<[FrontendOption, SwiftSymbolGraphExtractOption, SwiftAPIDigesterOption, HelpHidden, ArgumentIsPath]>,
10491056
MetaVarName<"</usr/lib/swift>">,
10501057
HelpText<"The directory that holds the compiler resource files">;
10511058

10521059
def target : Separate<["-"], "target">,
1053-
Flags<[FrontendOption, ModuleWrapOption, ModuleInterfaceOption, SwiftAPIExtractOption, SwiftSymbolGraphExtractOption]>,
1060+
Flags<[FrontendOption, ModuleWrapOption, ModuleInterfaceOption, SwiftAPIExtractOption, SwiftSymbolGraphExtractOption,
1061+
SwiftAPIDigesterOption]>,
10541062
HelpText<"Generate code for the given target <triple>, such as x86_64-apple-macos10.9">, MetaVarName<"<triple>">;
10551063
def target_legacy_spelling : Joined<["--"], "target=">,
10561064
Flags<[FrontendOption]>, Alias<target>;
@@ -1216,8 +1224,9 @@ def pretty_print: Flag<["-"], "pretty-print">,
12161224

12171225
// swift-symbolgraph-extract-only options
12181226
def output_dir : Separate<["-"], "output-dir">,
1219-
Flags<[NoDriverOption, SwiftSymbolGraphExtractOption, ArgumentIsPath]>,
1220-
HelpText<"Symbol Graph JSON Output Directory (Required)">,
1227+
Flags<[NoDriverOption, SwiftSymbolGraphExtractOption, SwiftAPIDigesterOption,
1228+
ArgumentIsPath]>,
1229+
HelpText<"Output directory">,
12211230
MetaVarName<"<dir>">;
12221231

12231232
def skip_synthesized_members: Flag<[ "-" ], "skip-synthesized-members">,
@@ -1235,4 +1244,151 @@ def skip_inherited_docs : Flag<["-"], "skip-inherited-docs">,
12351244
HelpText<"Skip emitting doc comments for members inherited through classes or "
12361245
"default implementations">;
12371246

1247+
// swift-api-digester-only options
1248+
def dump_sdk: Flag<["-", "--"], "dump-sdk">,
1249+
Flags<[NoDriverOption, SwiftAPIDigesterOption]>,
1250+
HelpText<"Dump SDK content to JSON file">;
1251+
1252+
def generate_migration_script: Flag<["-", "--"], "generate-migration-script">,
1253+
Flags<[NoDriverOption, SwiftAPIDigesterOption]>,
1254+
HelpText<"Compare SDK content in JSON file and generate migration script">;
1255+
1256+
def diagnose_sdk: Flag<["-", "--"], "diagnose-sdk">,
1257+
Flags<[NoDriverOption, SwiftAPIDigesterOption]>,
1258+
HelpText<"Diagnose SDK content in JSON file">;
1259+
1260+
def deserialize_diff: Flag<["-", "--"], "deserialize-diff">,
1261+
Flags<[NoDriverOption, SwiftAPIDigesterOption]>,
1262+
HelpText<"Deserialize diff items in a JSON file">;
1263+
1264+
def deserialize_sdk: Flag<["-", "--"], "deserialize-sdk">,
1265+
Flags<[NoDriverOption, SwiftAPIDigesterOption]>,
1266+
HelpText<"Deserialize sdk digester in a JSON file">;
1267+
1268+
def find_usr: Flag<["-", "--"], "find-usr">,
1269+
Flags<[NoDriverOption, SwiftAPIDigesterOption]>,
1270+
HelpText<"Find USR for decls by given condition">;
1271+
1272+
def generate_name_correction: Flag<["-", "--"], "generate-name-correction">,
1273+
Flags<[NoDriverOption, SwiftAPIDigesterOption]>,
1274+
HelpText<"Generate name correction template">;
1275+
1276+
def generate_empty_baseline: Flag<["-", "--"], "generate-empty-baseline">,
1277+
Flags<[NoDriverOption, SwiftAPIDigesterOption]>,
1278+
HelpText<"Generate an empty baseline">;
1279+
1280+
def empty_baseline: Flag<["-", "--"], "empty-baseline">,
1281+
Flags<[NoDriverOption, SwiftAPIDigesterOption]>,
1282+
HelpText<"Use empty baseline for diagnostics">;
1283+
1284+
def ignored_usrs: Separate<["-", "--"], "ignored-usrs">,
1285+
Flags<[NoDriverOption, SwiftAPIDigesterOption, ArgumentIsPath]>,
1286+
HelpText<"the file containing USRs of removed decls that the digester should ignore">,
1287+
MetaVarName<"<path>">;
1288+
1289+
def protocol_requirement_allow_list: Separate<["-", "--"], "protocol-requirement-allow-list">,
1290+
Flags<[NoDriverOption, SwiftAPIDigesterOption, ArgumentIsPath]>,
1291+
HelpText<"File containing a new-line separated list of protocol names">,
1292+
MetaVarName<"<path>">;
1293+
1294+
def input_paths: Separate<["-", "--"], "input-paths">,
1295+
Flags<[NoDriverOption, SwiftAPIDigesterOption, ArgumentIsPath]>,
1296+
HelpText<"The SDK contents under comparison">,
1297+
MetaVarName<"<path>">;
1298+
1299+
def compiler_style_diags: Flag<["-", "--"], "compiler-style-diags">,
1300+
Flags<[NoDriverOption, SwiftAPIDigesterOption]>,
1301+
HelpText<"Print compiler style diagnostics to stderr.">;
1302+
1303+
def json: Flag<["-", "--"], "json">,
1304+
Flags<[NoDriverOption, SwiftAPIDigesterOption]>,
1305+
HelpText<"Print output in JSON format.">;
1306+
1307+
def avoid_location: Flag<["-", "--"], "avoid-location">,
1308+
Flags<[NoDriverOption, SwiftAPIDigesterOption]>,
1309+
HelpText<"Avoid serializing the file paths of SDK nodes.">;
1310+
1311+
def location: Separate<["-", "--"], "location">,
1312+
Flags<[NoDriverOption, SwiftAPIDigesterOption]>,
1313+
HelpText<"Filter nodes with the given location.">,
1314+
MetaVarName<"<location>">;
1315+
1316+
def avoid_tool_args: Flag<["-", "--"], "avoid-tool-args">,
1317+
Flags<[NoDriverOption, SwiftAPIDigesterOption]>,
1318+
HelpText<"Avoid serializing the arguments for invoking the tool.">;
1319+
1320+
def abi: Flag<["-", "--"], "abi">,
1321+
Flags<[NoDriverOption, SwiftAPIDigesterOption]>,
1322+
HelpText<"Dumping ABI interface">;
1323+
1324+
def swift_only: Flag<["-", "--"], "swift-only">,
1325+
Flags<[NoDriverOption, SwiftAPIDigesterOption]>,
1326+
HelpText<"Only include APIs defined from Swift source">;
1327+
1328+
def disable_os_checks: Flag<["-", "--"], "disable-os-checks">,
1329+
Flags<[NoDriverOption, SwiftAPIDigesterOption]>,
1330+
HelpText<"Skip OS related diagnostics">;
1331+
1332+
def print_module: Flag<["-", "--"], "print-module">,
1333+
Flags<[NoDriverOption, SwiftAPIDigesterOption]>,
1334+
HelpText<"Print module names in diagnostics">;
1335+
1336+
def migrator: Flag<["-", "--"], "migrator">,
1337+
Flags<[NoDriverOption, SwiftAPIDigesterOption]>,
1338+
HelpText<"Dump Json suitable for generating migration script">;
1339+
1340+
def abort_on_module_fail: Flag<["-", "--"], "abort-on-module-fail">,
1341+
Flags<[NoDriverOption, SwiftAPIDigesterOption]>,
1342+
HelpText<"Abort if a module failed to load">;
1343+
1344+
def debug_mapping: Flag<["-", "--"], "debug-mapping">,
1345+
Flags<[NoDriverOption, SwiftAPIDigesterOption]>,
1346+
HelpText<"Dumping information for debug purposes">;
1347+
1348+
def BF : JoinedOrSeparate<["-"], "BF">,
1349+
Flags<[NoDriverOption, SwiftAPIDigesterOption, ArgumentIsPath]>,
1350+
HelpText<"add a directory to the baseline framework search path">;
1351+
def BF_EQ : Joined<["-"], "BF=">, Flags<[NoDriverOption, SwiftAPIDigesterOption]>,
1352+
Alias<BF>;
1353+
1354+
def BI : JoinedOrSeparate<["-"], "BI">,
1355+
Flags<[NoDriverOption, SwiftAPIDigesterOption, ArgumentIsPath]>,
1356+
HelpText<"add a module for baseline input">;
1357+
def BI_EQ : Joined<["-"], "BI=">, Flags<[NoDriverOption, SwiftAPIDigesterOption]>,
1358+
Alias<BI>;
1359+
1360+
def iframework : JoinedOrSeparate<["-"], "iframework">,
1361+
Flags<[NoDriverOption, SwiftAPIDigesterOption, ArgumentIsPath]>,
1362+
HelpText<"add a directory to the clang importer system framework search path">;
1363+
1364+
def baseline_path : JoinedOrSeparate<["-"], "baseline-path">,
1365+
Flags<[NoDriverOption, SwiftAPIDigesterOption, ArgumentIsPath]>,
1366+
HelpText<"The path to the Json file that we should use as the baseline">;
1367+
1368+
def baseline_dir : JoinedOrSeparate<["-"], "baseline-dir">,
1369+
Flags<[NoDriverOption, SwiftAPIDigesterOption, ArgumentIsPath]>,
1370+
HelpText<"The path to a directory containing baseline files: macos.json, iphoneos.json, appletvos.json, watchos.json, and iosmac.json">;
1371+
1372+
def breakage_allowlist_path : JoinedOrSeparate<["-"], "breakage-allowlist-path">,
1373+
Flags<[NoDriverOption, SwiftAPIDigesterOption, ArgumentIsPath]>,
1374+
HelpText<"An allowlist of breakages to not complain about">;
1375+
1376+
def bsdk : JoinedOrSeparate<["-"], "bsdk">,
1377+
Flags<[NoDriverOption, SwiftAPIDigesterOption, ArgumentIsPath]>,
1378+
HelpText<"path to the baseline SDK to import frameworks">;
1379+
1380+
def module_list_file : JoinedOrSeparate<["-"], "module-list-file">,
1381+
Flags<[NoDriverOption, SwiftAPIDigesterOption, ArgumentIsPath]>,
1382+
HelpText<"File containing a new-line separated list of modules">;
1383+
1384+
def module: Separate<["-", "--"], "module">,
1385+
Flags<[NoDriverOption, SwiftAPIDigesterOption]>,
1386+
HelpText<"Names of modules">,
1387+
MetaVarName<"<name>">;
1388+
1389+
def use_interface_for_module: Separate<["-", "--"], "use-interface-for-module">,
1390+
Flags<[NoDriverOption, SwiftAPIDigesterOption]>,
1391+
HelpText<"Prefer loading these modules via interface">,
1392+
MetaVarName<"<name>">;
1393+
12381394
include "FrontendOptions.td"

0 commit comments

Comments
 (0)