@@ -173,32 +173,34 @@ class ExtractAPIVisitorBase : public RecursiveASTVisitor<Derived> {
173
173
174
174
protected:
175
175
SmallVector<SymbolReference> getBases (const CXXRecordDecl *Decl) {
176
+ if (!Decl->isCompleteDefinition ()) {
177
+ return {};
178
+ }
179
+
176
180
// FIXME: store AccessSpecifier given by inheritance
177
181
SmallVector<SymbolReference> Bases;
178
- if (Decl->isCompleteDefinition ()) {
179
- for (const auto &BaseSpecifier : Decl->bases ()) {
180
- // skip classes not inherited as public
181
- if (BaseSpecifier.getAccessSpecifier () != AccessSpecifier::AS_public)
182
- continue ;
183
- if (auto *BaseDecl = BaseSpecifier.getType ()->getAsTagDecl ()) {
184
- Bases.emplace_back (createSymbolReferenceForDecl (*BaseDecl));
185
- } else {
186
- SymbolReference BaseClass;
187
- BaseClass.Name = API.copyString (BaseSpecifier.getType ().getAsString (
188
- Decl->getASTContext ().getPrintingPolicy ()));
189
-
190
- if (BaseSpecifier.getType ().getTypePtr ()->isTemplateTypeParmType ()) {
191
- if (auto *TTPTD = BaseSpecifier.getType ()
192
- ->getAs <TemplateTypeParmType>()
193
- ->getDecl ()) {
194
- SmallString<128 > USR;
195
- index::generateUSRForDecl (TTPTD, USR);
196
- BaseClass.USR = API.copyString (USR);
197
- BaseClass.Source = API.copyString (getOwningModuleName (*TTPTD));
198
- }
182
+ for (const auto &BaseSpecifier : Decl->bases ()) {
183
+ // skip classes not inherited as public
184
+ if (BaseSpecifier.getAccessSpecifier () != AccessSpecifier::AS_public)
185
+ continue ;
186
+ if (auto *BaseDecl = BaseSpecifier.getType ()->getAsTagDecl ()) {
187
+ Bases.emplace_back (createSymbolReferenceForDecl (*BaseDecl));
188
+ } else {
189
+ SymbolReference BaseClass;
190
+ BaseClass.Name = API.copyString (BaseSpecifier.getType ().getAsString (
191
+ Decl->getASTContext ().getPrintingPolicy ()));
192
+
193
+ if (BaseSpecifier.getType ().getTypePtr ()->isTemplateTypeParmType ()) {
194
+ if (auto *TTPTD = BaseSpecifier.getType ()
195
+ ->getAs <TemplateTypeParmType>()
196
+ ->getDecl ()) {
197
+ SmallString<128 > USR;
198
+ index::generateUSRForDecl (TTPTD, USR);
199
+ BaseClass.USR = API.copyString (USR);
200
+ BaseClass.Source = API.copyString (getOwningModuleName (*TTPTD));
199
201
}
200
- Bases.emplace_back (BaseClass);
201
202
}
203
+ Bases.emplace_back (BaseClass);
202
204
}
203
205
}
204
206
return Bases;
0 commit comments