Skip to content

Commit 23a2a29

Browse files
authored
Merge pull request #31027 from bitjammer/acgarland/rdar-61782916-internal-external-param-fragments
[SymbolGraph] Add internal/externalParam declaration fragment
2 parents d142fab + 9611047 commit 23a2a29

File tree

5 files changed

+40
-9
lines changed

5 files changed

+40
-9
lines changed

lib/SymbolGraphGen/DeclarationFragmentPrinter.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,10 @@ DeclarationFragmentPrinter::getKindSpelling(FragmentKind Kind) const {
4444
return "typeIdentifier";
4545
case FragmentKind::GenericParameter:
4646
return "genericParameter";
47+
case FragmentKind::InternalParam:
48+
return "internalParam";
49+
case FragmentKind::ExternalParam:
50+
return "externalParam";
4751
case FragmentKind::Text:
4852
return "text";
4953
case FragmentKind::None:
@@ -100,10 +104,10 @@ DeclarationFragmentPrinter::printNamePre(PrintNameContext Context) {
100104
break;
101105
case PrintNameContext::ClassDynamicSelf:
102106
case PrintNameContext::FunctionParameterExternal:
103-
openFragment(FragmentKind::Identifier);
107+
openFragment(FragmentKind::ExternalParam);
104108
break;
105109
case PrintNameContext::FunctionParameterLocal:
106-
openFragment(FragmentKind::Identifier);
110+
openFragment(FragmentKind::InternalParam);
107111
break;
108112
case PrintNameContext::TupleElement:
109113
case PrintNameContext::TypeMember:

lib/SymbolGraphGen/DeclarationFragmentPrinter.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ class DeclarationFragmentPrinter : public ASTPrinter {
5252
Identifier,
5353
TypeIdentifier,
5454
GenericParameter,
55+
ExternalParam,
56+
InternalParam,
5557
Text,
5658
};
5759

lib/SymbolGraphGen/SymbolGraph.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ PrintOptions SymbolGraph::getDeclarationFragmentsPrintOptions() const {
4646
PrintOptions Opts;
4747
Opts.FunctionDefinitions = false;
4848
Opts.ArgAndParamPrinting =
49-
PrintOptions::ArgAndParamPrintingMode::ArgumentOnly;
49+
PrintOptions::ArgAndParamPrintingMode::MatchSource;
5050
Opts.PrintGetSetOnRWProperties = false;
5151
Opts.PrintPropertyAccessors = false;
5252
Opts.PrintSubscriptAccessors = false;
@@ -422,6 +422,8 @@ SymbolGraph::serializeSubheadingDeclarationFragments(StringRef Key,
422422
llvm::json::OStream &OS) {
423423
DeclarationFragmentPrinter Printer(OS, Key);
424424
auto Options = getDeclarationFragmentsPrintOptions();
425+
Options.ArgAndParamPrinting =
426+
PrintOptions::ArgAndParamPrintingMode::ArgumentOnly;
425427
Options.VarInitializers = false;
426428
Options.PrintDefaultArgumentValue = false;
427429
Options.PrintEmptyArgumentNames = false;

test/SymbolGraph/Symbols/Mixins/DeclarationFragments.swift renamed to test/SymbolGraph/Symbols/Mixins/DeclarationFragments/DeclarationFragments.swift

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
// RUN: %target-swift-symbolgraph-extract -module-name DeclarationFragments -I %t -pretty-print -output-dir %t
44
// RUN: %FileCheck %s --input-file %t/DeclarationFragments.symbols.json
55

6-
public func foo<S>(f: @escaping () -> (), x: Int = 2, s: S) {}
6+
public func foo<S>(f: @escaping () -> (), ext int: Int = 2, s: S) {}
77

8-
// CHECK: declarationFragments
8+
// CHECK-LABEL: {{^ }}"declarationFragments":
99

1010
// CHECK: "kind": "keyword",
1111
// CHECK-NEXT: "spelling": "func"
@@ -25,14 +25,20 @@ public func foo<S>(f: @escaping () -> (), x: Int = 2, s: S) {}
2525
// CHECK: "kind": "text",
2626
// CHECK-NEXT: "spelling": ">("
2727

28-
// CHECK: "kind": "identifier",
28+
// CHECK: "kind": "externalParam",
2929
// CHECK-NEXT: "spelling": "f"
3030

3131
// CHECK: "kind": "text",
3232
// CHECK-NEXT: "spelling": ": () -> (), "
3333

34-
// CHECK: "kind": "identifier",
35-
// CHECK-NEXT: "spelling": "x"
34+
// CHECK:"kind": "externalParam",
35+
// CHECK-NEXT:"spelling": "ext"
36+
37+
// CHECK: "kind": "text",
38+
// CHECK-NEXT: "spelling": " "
39+
40+
// CHECK:"kind": "internalParam",
41+
// CHECK-NEXT:"spelling": "int"
3642

3743
// CHECK: "kind": "text",
3844
// CHECK-NEXT: "spelling": ": "
@@ -44,7 +50,7 @@ public func foo<S>(f: @escaping () -> (), x: Int = 2, s: S) {}
4450
// CHECK: "kind": "text",
4551
// CHECK-NEXT: "spelling": " = 2, "
4652

47-
// CHECK: "kind": "identifier",
53+
// CHECK: "kind": "externalParam",
4854
// CHECK-NEXT: "spelling": "s"
4955

5056
// CHECK: "kind": "text",
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
// RUN: %empty-directory(%t)
2+
// RUN: %target-build-swift %s -module-name SubheadingDeclarationFragments -emit-module -emit-module-path %t/
3+
// RUN: %target-swift-symbolgraph-extract -module-name SubheadingDeclarationFragments -I %t -pretty-print -output-dir %t
4+
// RUN: %FileCheck %s --input-file %t/SubheadingDeclarationFragments.symbols.json
5+
6+
public func foo<S>(f: @escaping () -> (), ext int: Int = 2, s: S) {}
7+
8+
// Subheading fragments should not contain internalParam kinds.
9+
10+
// CHECK-LABEL: subHeading
11+
// {
12+
// "kind": "externalParam",
13+
// CHECK: "spelling": "ext"
14+
// CHECK-NEXT: },
15+
// CHECK-NEXT: {
16+
// CHECK-NEXT: "kind": "text"
17+
// CHECK-NEXT: "spelling": ": "

0 commit comments

Comments
 (0)