@@ -74,34 +74,31 @@ void Symbol::serializeKind(llvm::json::OStream &OS) const {
74
74
}
75
75
}
76
76
77
- void Symbol::serializeIdentifier (SymbolGraphASTWalker &Walker,
78
- llvm::json::OStream &OS) const {
77
+ void Symbol::serializeIdentifier (llvm::json::OStream &OS) const {
79
78
OS.attributeObject (" identifier" , [&](){
80
- OS.attribute (" precise" , Walker .getUSR (VD));
79
+ OS.attribute (" precise" , Graph .getUSR (VD));
81
80
OS.attribute (" interfaceLanguage" , " swift" );
82
81
});
83
82
}
84
83
85
- void Symbol::serializePathComponents (SymbolGraphASTWalker &Walker,
86
- llvm::json::OStream &OS) const {
84
+ void Symbol::serializePathComponents (llvm::json::OStream &OS) const {
87
85
OS.attributeArray (" pathComponents" , [&](){
88
86
SmallVector<SmallString<32 >, 8 > PathComponents;
89
- Walker .getPathComponents (VD, PathComponents);
87
+ Graph .getPathComponents (VD, PathComponents);
90
88
for (auto Component : PathComponents) {
91
89
OS.value (Component);
92
90
}
93
91
});
94
92
}
95
93
96
- void Symbol::serializeNames (SymbolGraphASTWalker &Walker,
97
- llvm::json::OStream &OS) const {
94
+ void Symbol::serializeNames (llvm::json::OStream &OS) const {
98
95
OS.attributeObject (" names" , [&](){
99
96
SmallVector<SmallString<32 >, 8 > PathComponents;
100
- Walker .getPathComponents (VD, PathComponents);
97
+ Graph .getPathComponents (VD, PathComponents);
101
98
102
99
OS.attribute (" title" , PathComponents.back ());
103
100
// "navigator": null
104
- Walker .serializeSubheadingDeclarationFragments (" subheading" , VD, OS);
101
+ Graph .serializeSubheadingDeclarationFragments (" subheading" , VD, OS);
105
102
// "prose": null
106
103
});
107
104
}
@@ -131,10 +128,9 @@ void Symbol::serializeRange(size_t InitialIndentation,
131
128
});
132
129
}
133
130
134
- void Symbol::serializeDocComment (SymbolGraphASTWalker &Walker,
135
- llvm::json::OStream &OS) const {
131
+ void Symbol::serializeDocComment (llvm::json::OStream &OS) const {
136
132
OS.attributeObject (" docComment" , [&](){
137
- auto LL = Walker .Ctx .getLineList (VD->getRawComment ());
133
+ auto LL = Graph .Ctx .getLineList (VD->getRawComment ());
138
134
size_t InitialIndentation = LL.getLines ().empty ()
139
135
? 0
140
136
: markup::measureIndentation (LL.getLines ().front ().Text );
@@ -146,7 +142,7 @@ void Symbol::serializeDocComment(SymbolGraphASTWalker &Walker,
146
142
// text and start of its source range, if it has one.
147
143
if (Line.Range .isValid ()) {
148
144
serializeRange (InitialIndentation,
149
- Line.Range , Walker .M .getASTContext ().SourceMgr , OS);
145
+ Line.Range , Graph .M .getASTContext ().SourceMgr , OS);
150
146
}
151
147
auto TrimmedLine = Line.Text .drop_front (std::min (InitialIndentation,
152
148
Line.FirstNonspaceOffset ));
@@ -157,8 +153,7 @@ void Symbol::serializeDocComment(SymbolGraphASTWalker &Walker,
157
153
}); // end docComment:
158
154
}
159
155
160
- void Symbol::serializeFunctionSignature (SymbolGraphASTWalker &Walker,
161
- llvm::json::OStream &OS) const {
156
+ void Symbol::serializeFunctionSignature (llvm::json::OStream &OS) const {
162
157
if (const auto *FD = dyn_cast_or_null<FuncDecl>(VD)) {
163
158
OS.attributeObject (" functionSignature" , [&](){
164
159
@@ -180,7 +175,7 @@ void Symbol::serializeFunctionSignature(SymbolGraphASTWalker &Walker,
180
175
OS.attribute (" internalName" , InternalName);
181
176
}
182
177
}
183
- Walker .serializeDeclarationFragments (" declarationFragments" ,
178
+ Graph .serializeDeclarationFragments (" declarationFragments" ,
184
179
Param, OS);
185
180
}); // end parameter object
186
181
}
@@ -190,7 +185,7 @@ void Symbol::serializeFunctionSignature(SymbolGraphASTWalker &Walker,
190
185
191
186
// Returns
192
187
if (const auto ReturnType = FD->getResultInterfaceType ()) {
193
- Walker .serializeDeclarationFragments (" returns" , ReturnType, OS);
188
+ Graph .serializeDeclarationFragments (" returns" , ReturnType, OS);
194
189
}
195
190
});
196
191
}
@@ -257,12 +252,15 @@ void Symbol::serializeSwiftGenericMixin(llvm::json::OStream &OS) const {
257
252
}
258
253
}
259
254
260
- void Symbol::serializeSwiftExtensionMixin (SymbolGraphASTWalker &Walker,
261
- llvm::json::OStream &OS) const {
255
+ void Symbol::serializeSwiftExtensionMixin (llvm::json::OStream &OS) const {
262
256
if (const auto *Extension
263
257
= dyn_cast_or_null<ExtensionDecl>(VD->getInnermostDeclContext ())) {
264
258
OS.attributeObject (" swiftExtension" , [&](){
265
- OS.attribute (" definedInModule" , Walker.M .getNameStr ());
259
+ if (const auto *ExtendedNominal = Extension->getExtendedNominal ()) {
260
+ if (const auto *ExtendedModule = ExtendedNominal->getModuleContext ()) {
261
+ OS.attribute (" extendedModule" , ExtendedModule->getNameStr ());
262
+ }
263
+ }
266
264
auto Generics = Extension->getGenericSignature ();
267
265
if (Generics && !Generics->getRequirements ().empty ()) {
268
266
OS.attributeArray (" constraints" , [&](){
@@ -275,9 +273,8 @@ void Symbol::serializeSwiftExtensionMixin(SymbolGraphASTWalker &Walker,
275
273
}
276
274
}
277
275
278
- void Symbol::serializeDeclarationFragmentMixin (SymbolGraphASTWalker &Walker,
279
- llvm::json::OStream &OS) const {
280
- Walker.serializeDeclarationFragments (" declarationFragments" , VD, OS);
276
+ void Symbol::serializeDeclarationFragmentMixin (llvm::json::OStream &OS) const {
277
+ Graph.serializeDeclarationFragments (" declarationFragments" , VD, OS);
281
278
}
282
279
283
280
void Symbol::serializeAccessLevelMixin (llvm::json::OStream &OS) const {
@@ -380,20 +377,19 @@ void Symbol::serializeAvailabilityMixin(llvm::json::OStream &OS) const {
380
377
}); // end availability: []
381
378
}
382
379
383
- void Symbol::serialize (SymbolGraphASTWalker &Walker,
384
- llvm::json::OStream &OS) const {
380
+ void Symbol::serialize (llvm::json::OStream &OS) const {
385
381
OS.object ([&](){
386
382
serializeKind (OS);
387
- serializeIdentifier (Walker, OS);
388
- serializePathComponents (Walker, OS);
389
- serializeNames (Walker, OS);
390
- serializeDocComment (Walker, OS);
383
+ serializeIdentifier (OS);
384
+ serializePathComponents (OS);
385
+ serializeNames (OS);
386
+ serializeDocComment (OS);
391
387
392
388
// "Mixins"
393
- serializeFunctionSignature (Walker, OS);
389
+ serializeFunctionSignature (OS);
394
390
serializeSwiftGenericMixin (OS);
395
- serializeSwiftExtensionMixin (Walker, OS);
396
- serializeDeclarationFragmentMixin (Walker, OS);
391
+ serializeSwiftExtensionMixin (OS);
392
+ serializeDeclarationFragmentMixin (OS);
397
393
serializeAccessLevelMixin (OS);
398
394
serializeAvailabilityMixin (OS);
399
395
});
0 commit comments