Skip to content

Commit 26168f5

Browse files
committed
Create tests for the two new symbol graph options
Add options to the driver and frontend options
1 parent 1ea28d8 commit 26168f5

File tree

5 files changed

+29
-6
lines changed

5 files changed

+29
-6
lines changed

include/swift/Frontend/FrontendOptions.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -573,6 +573,12 @@ class FrontendOptions {
573573
/// Whether to include symbols with SPI information in the symbol graph.
574574
bool IncludeSPISymbolsInSymbolGraph = false;
575575

576+
/// Whether to pretty print the JSON output.
577+
bool PrettyPrint = false;
578+
579+
///Whether to emit synthesized members in the JSON output.
580+
bool EmitSynthesizedMembers = true;
581+
576582
/// Whether to reuse a frontend (i.e. compiler instance) for multiple
577583
/// compilations. This prevents ASTContext being freed.
578584
bool ReuseFrontendForMultipleCompilations = false;

lib/Driver/ToolChains.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -706,6 +706,8 @@ ToolChain::constructInvocation(const CompileJobAction &job,
706706
context.Args.AddLastArg(Arguments, options::OPT_emit_extension_block_symbols,
707707
options::OPT_omit_extension_block_symbols);
708708
context.Args.AddLastArg(Arguments, options::OPT_symbol_graph_minimum_access_level);
709+
context.Args.AddLastArg(Arguments, options::OPT_pretty_print);
710+
context.Args.AddLastArg(Arguments, options::OPT_skip_synthesized_members);
709711

710712
return II;
711713
}
@@ -1223,6 +1225,8 @@ ToolChain::constructInvocation(const MergeModuleJobAction &job,
12231225
addOutputsOfType(Arguments, context.Output, context.Args, file_types::TY_TBD,
12241226
"-emit-tbd-path");
12251227

1228+
context.Args.AddLastArg(Arguments, options::OPT_pretty_print);
1229+
context.Args.AddLastArg(Arguments, options::OPT_skip_synthesized_members);
12261230
context.Args.AddLastArg(Arguments, options::OPT_emit_symbol_graph);
12271231
context.Args.AddLastArg(Arguments, options::OPT_emit_symbol_graph_dir);
12281232
context.Args.AddLastArg(Arguments, options::OPT_include_spi_symbols);

lib/Frontend/ArgsToFrontendOptionsConverter.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -420,6 +420,9 @@ bool ArgsToFrontendOptionsConverter::convert(
420420
Opts.SkipInheritedDocs = Args.hasArg(OPT_skip_inherited_docs);
421421
Opts.IncludeSPISymbolsInSymbolGraph = Args.hasArg(OPT_include_spi_symbols);
422422

423+
Opts.PrettyPrint = Args.hasArg(OPT_pretty_print);
424+
Opts.EmitSynthesizedMembers = !Args.hasArg(OPT_skip_synthesized_members);
425+
423426
Opts.Static = Args.hasArg(OPT_static);
424427

425428
Opts.HermeticSealAtLink = Args.hasArg(OPT_experimental_hermetic_seal_at_link);

lib/Frontend/CompilerInvocation.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2257,6 +2257,9 @@ static void ParseSymbolGraphArgs(symbolgraphgen::SymbolGraphOptions &Opts,
22572257
Args.hasFlag(OPT_emit_extension_block_symbols,
22582258
OPT_omit_extension_block_symbols, /*default=*/false);
22592259

2260+
Opts.PrettyPrint = Args.hasArg(OPT_pretty_print);
2261+
Opts.EmitSynthesizedMembers = !Args.hasArg(OPT_skip_synthesized_members);
2262+
22602263
if (auto *A = Args.getLastArg(OPT_symbol_graph_minimum_access_level)) {
22612264
Opts.MinimumAccessLevel =
22622265
llvm::StringSwitch<AccessLevel>(A->getValue())
@@ -2283,8 +2286,6 @@ static void ParseSymbolGraphArgs(symbolgraphgen::SymbolGraphOptions &Opts,
22832286
}
22842287

22852288
// default values for generating symbol graphs during a build
2286-
Opts.PrettyPrint = Args.hasArg(OPT_pretty_print);
2287-
Opts.EmitSynthesizedMembers = !Args.hasArg(OPT_skip_synthesized_members);
22882289
Opts.PrintMessages = false;
22892290
Opts.IncludeClangDocs = false;
22902291
}

test/SymbolGraph/EmitWhileBuilding.swift

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,16 +33,25 @@
3333
// now run with -symbol-graph-minimum-access-level to change the available symbols
3434

3535
// RUN: %empty-directory(%t)
36-
// RUN: %target-build-swift %s -module-name EmitWhileBuilding -emit-module -emit-module-path %t/EmitWhileBuilding.swiftmodule -emit-symbol-graph -emit-symbol-graph-dir %t/ -symbol-graph-minimum-access-level private
36+
// -skip-synthesized-members
37+
// RUN: %target-build-swift %s -module-name EmitWhileBuilding -emit-module -emit-module-path %t/EmitWhileBuilding.swiftmodule -pretty-print -skip-synthesized-members -emit-symbol-graph -emit-symbol-graph-dir %t/ -symbol-graph-minimum-access-level private
3738
// RUN: %FileCheck %s --input-file %t/EmitWhileBuilding.symbols.json
3839
// RUN: %FileCheck %s --input-file %t/EmitWhileBuilding.symbols.json --check-prefix PRIV
40+
// Check that the JSON has been pretty printed with some indented lines (FIXME - the pretty-print flag isn't working)
41+
// RUN: cat %t/EmitWhileBuilding.symbols.json | jq | grep '^ '
3942

4043
/// Does a foo.
4144
public func foo() {}
4245

4346
/// Does a bar.
4447
func bar() {}
4548

46-
// CHECK: "precise":"s:17EmitWhileBuilding3fooyyF"
47-
// PUB-NOT: "precise":"s:17EmitWhileBuilding3baryyF"
48-
// PRIV: "precise":"s:17EmitWhileBuilding3baryyF"
49+
/// Has a compiler synthesized symbol
50+
public struct Baz: Hashable {
51+
let foo: Int
52+
}
53+
54+
// CHECK: "precise": "s:17EmitWhileBuilding3fooyyF"
55+
// PUB-NOT: "precise": "s:17EmitWhileBuilding3baryyF"
56+
// PUB-NOT: "precise": "s:SQsE2neoiySbx_xtFZ::SYNTHESIZED::s:17EmitWhileBuilding3BazV",
57+
// PRIV: "precise": "s:17EmitWhileBuilding3baryyF"

0 commit comments

Comments
 (0)