35 explicit VirtualMethodEntityExtractor(TUSummaryBuilder &Builder)
36 : TUSummaryExtractor(Builder) {
37 ShouldVisitTemplateInstantiations =
true;
38 ShouldWalkTypesOfTypeLocs =
false;
39 ShouldVisitImplicitCode =
false;
40 ShouldVisitLambdaBody =
true;
44 void HandleTranslationUnit(ASTContext &Ctx)
override { TraverseAST(Ctx); }
46 bool VisitCXXMethodDecl(
const CXXMethodDecl *MD)
override;
50bool VirtualMethodEntityExtractor::VisitCXXMethodDecl(
const CXXMethodDecl *MD) {
54 std::optional<EntityId> MethodId = addEntity(MD);
58 auto Summary = std::make_unique<VirtualMethodSummary>();
61 for (
const ParmVarDecl *P : MD->
parameters()) {
62 auto ParamId = addEntity(P);
68 Summary->ParamEntities.push_back(ParamId.value());
71 if (
auto ReturnId = addEntityForReturn(MD))
72 Summary->ReturnEntity = ReturnId.value();
77 if (
auto OverriddenId = addEntity(Overridden))
78 Summary->OverriddenMethods.push_back(*OverriddenId);
81 SummaryBuilder.addSummary(MethodId.value(), std::move(Summary));
85static TUSummaryExtractorRegistry::Add<VirtualMethodEntityExtractor>
87 "Extract information about virtual methods");
Defines the clang::ASTContext interface.
Defines the C++ Decl subclasses, other than those for templates (found in DeclTemplate....
Represents a static or instance method of a struct/union/class.
overridden_method_range overridden_methods() const
ArrayRef< ParmVarDecl * > parameters() const
unsigned getNumParams() const
Return the number of parameters this function must have based on its FunctionType.
volatile int VirtualMethodEntityExtractorAnchorSource
Top level wrappers for InstallAPI frontend operations.
DynamicRecursiveASTVisitorBase< true > ConstDynamicRecursiveASTVisitor
static constexpr llvm::StringLiteral Name