Skip to content

Commit aba91c0

Browse files
review: move the function guard into a pre-check
1 parent 1ea6624 commit aba91c0

File tree

1 file changed

+24
-22
lines changed

1 file changed

+24
-22
lines changed

clang/include/clang/ExtractAPI/ExtractAPIVisitor.h

Lines changed: 24 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -173,32 +173,34 @@ class ExtractAPIVisitorBase : public RecursiveASTVisitor<Derived> {
173173

174174
protected:
175175
SmallVector<SymbolReference> getBases(const CXXRecordDecl *Decl) {
176+
if (!Decl->isCompleteDefinition()) {
177+
return {};
178+
}
179+
176180
// FIXME: store AccessSpecifier given by inheritance
177181
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));
199201
}
200-
Bases.emplace_back(BaseClass);
201202
}
203+
Bases.emplace_back(BaseClass);
202204
}
203205
}
204206
return Bases;

0 commit comments

Comments
 (0)