diff --git a/include/swift/Option/Options.td b/include/swift/Option/Options.td index 353d09a2a4077..c41be344a5cdc 100644 --- a/include/swift/Option/Options.td +++ b/include/swift/Option/Options.td @@ -1779,6 +1779,14 @@ def emit_symbol_graph_dir : Separate<["-"], "emit-symbol-graph-dir">, HelpText<"Emit a symbol graph to directory ">, MetaVarName<"">; +def symbol_graph_pretty_print: Flag<["-"], "symbol-graph-pretty-print">, + Flags<[FrontendOption, NoInteractiveOption, HelpHidden, SupplementaryOutput]>, + HelpText<"Pretty-print the output symbol graph JSON">; + +def symbol_graph_skip_synthesized_members: Flag<["-"], "symbol-graph-skip-synthesized-members">, + Flags<[FrontendOption, NoInteractiveOption, HelpHidden, SupplementaryOutput]>, + HelpText<"Skip members inherited through classes or default implementations">; + def symbol_graph_minimum_access_level: Separate<["-"], "symbol-graph-minimum-access-level">, Flags<[FrontendOption, NoInteractiveOption, SupplementaryOutput, HelpHidden]>, HelpText<"Include symbols with this access level or more when emitting a symbol graph">, diff --git a/lib/Driver/ToolChains.cpp b/lib/Driver/ToolChains.cpp index f20fce519faab..7586c1c578cbf 100644 --- a/lib/Driver/ToolChains.cpp +++ b/lib/Driver/ToolChains.cpp @@ -706,6 +706,8 @@ ToolChain::constructInvocation(const CompileJobAction &job, context.Args.AddLastArg(Arguments, options::OPT_emit_extension_block_symbols, options::OPT_omit_extension_block_symbols); context.Args.AddLastArg(Arguments, options::OPT_symbol_graph_minimum_access_level); + context.Args.AddLastArg(Arguments, options::OPT_symbol_graph_skip_synthesized_members); + context.Args.AddLastArg(Arguments, options::OPT_symbol_graph_pretty_print); return II; } diff --git a/lib/Frontend/CompilerInvocation.cpp b/lib/Frontend/CompilerInvocation.cpp index 6b31e72876c2d..8faa8b33802de 100644 --- a/lib/Frontend/CompilerInvocation.cpp +++ b/lib/Frontend/CompilerInvocation.cpp @@ -2283,8 +2283,8 @@ static void ParseSymbolGraphArgs(symbolgraphgen::SymbolGraphOptions &Opts, } // default values for generating symbol graphs during a build - Opts.PrettyPrint = false; - Opts.EmitSynthesizedMembers = true; + Opts.PrettyPrint = Args.hasArg(OPT_symbol_graph_pretty_print); + Opts.EmitSynthesizedMembers = !Args.hasArg(OPT_symbol_graph_skip_synthesized_members); Opts.PrintMessages = false; Opts.IncludeClangDocs = false; } diff --git a/test/SymbolGraph/Symbols/SkipsSynthesizedMembers.swift b/test/SymbolGraph/Symbols/SkipsSynthesizedMembers.swift new file mode 100644 index 0000000000000..19e7933c8e5a0 --- /dev/null +++ b/test/SymbolGraph/Symbols/SkipsSynthesizedMembers.swift @@ -0,0 +1,10 @@ +// RUN: %empty-directory(%t) +// RUN: %target-build-swift %s -module-name SkipsSynthesizedMembers -emit-module -emit-module-path %t/ +// RUN: %target-swift-symbolgraph-extract -module-name SkipsSynthesizedMembers -I %t -pretty-print -skip-synthesized-members -output-dir %t +// RUN: %FileCheck %s --input-file %t/SkipsSynthesizedMembers.symbols.json + +// CHECK-NOT: ::SYNTHESIZED + +public struct ShouldAppear: Hashable { + public let foo: Int +}