MCPcopy Create free account
hub / github.com/Samsung/UTopia / isDescendantOf

Method isDescendantOf

lib/tcanalysis/GoogleTestExtractor.cpp:20–52  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

18 : TCExtractor(SC) {}
19
20bool GoogleTestExtractor::isDescendantOf(
21 const CXXRecordDecl *ClassCXXRecordDecl, std::string AncestorName) {
22 if (!ClassCXXRecordDecl)
23 return false;
24 if (ClassCXXRecordDecl->getNameAsString().compare(AncestorName) == 0)
25 return true;
26
27 for (auto SuperClassBaseSpecifier : ClassCXXRecordDecl->bases()) {
28 const auto *SuperClassBaseType =
29 SuperClassBaseSpecifier.getType().getTypePtrOrNull();
30 assert(SuperClassBaseType && "Unexpected Program State");
31 const auto *DesugaredType =
32 SuperClassBaseType->getUnqualifiedDesugaredType();
33
34 while (SuperClassBaseType != DesugaredType) {
35 SuperClassBaseType = DesugaredType;
36 DesugaredType = DesugaredType->getUnqualifiedDesugaredType();
37 }
38
39 const auto *Record = SuperClassBaseType->getAs<RecordType>();
40 if (!Record)
41 continue;
42
43 auto *Decl = Record->getDecl();
44 assert(Decl && "Unexpected Program State");
45 assert(isa<CXXRecordDecl>(Decl) && "Unexpected Program State");
46
47 if (isDescendantOf(llvm::dyn_cast_or_null<CXXRecordDecl>(Decl),
48 AncestorName))
49 return true;
50 }
51 return false;
52}
53
54const CXXMethodDecl *
55GoogleTestExtractor::findTestMethod(const CXXRecordDecl *TestCXXRecordDecl,

Callers

nothing calls this directly

Calls 2

compareMethod · 0.80
getTypeMethod · 0.45

Tested by

no test coverage detected