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