43 const std::vector<const NamedDecl *> &ContributorDecls,
ASTContext &Ctx) {
44 std::set<const Expr *> UnsafePointers;
45 auto MatchAction = [&UnsafePointers, &Ctx](
const DynTypedNode &Node) {
49 for (
const auto *Contrib : ContributorDecls)
52 EntityPointerLevelSet Results;
54 for (
const Expr *Ptr : UnsafePointers) {
56 translateEntityPointerLevel(Ptr, Ctx, *
this);
61 auto FilteredTranslation = llvm::make_filter_range(
62 *Translation, [](
const EntityPointerLevel &E) ->
bool {
63 return E.getPointerLevel() > 0;
65 Results.insert(FilteredTranslation.begin(), FilteredTranslation.end());
71 return std::make_unique<UnsafeBufferUsageEntitySummary>(
Defines the clang::ASTContext interface.
Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...
void extractAndAddSummaries(TUSummaryExtractor &Extractor, TUSummaryBuilder &Builder, ASTContext &Ctx, ExtractorFnT ExtractFn, const char *ExtractorName="")
The standard contributor-summary extraction procedure: