================ @@ -1460,30 +1694,32 @@ class UnsafeBufferUsageAttrGadget : public WarningGadget { DeclUseList getClaimedVarUseSites() const override { return {}; } }; -/// A call of a constructor that performs unchecked buffer operations -/// over one of its pointer parameters, or constructs a class object that will -/// perform buffer operations that depend on the correctness of the parameters. +// A call of a constructor that performs unchecked buffer operations +// over one of its pointer parameters, or constructs a class object that will +// perform buffer operations that depend on the correctness of the parameters. class UnsafeBufferUsageCtorAttrGadget : public WarningGadget { constexpr static const char *const OpTag = "cxx_construct_expr"; const CXXConstructExpr *Op; public: - UnsafeBufferUsageCtorAttrGadget(const MatchFinder::MatchResult &Result) + UnsafeBufferUsageCtorAttrGadget(const MatchResult &Result) : WarningGadget(Kind::UnsafeBufferUsageCtorAttr), - Op(Result.Nodes.getNodeAs<CXXConstructExpr>(OpTag)) {} + Op(Result.getNodeAs<CXXConstructExpr>(OpTag)) {} static bool classof(const Gadget *G) { return G->getKind() == Kind::UnsafeBufferUsageCtorAttr; } - static Matcher matcher() { - auto HasUnsafeCtorDecl = - hasDeclaration(cxxConstructorDecl(hasAttr(attr::UnsafeBufferUsage))); - // std::span(ptr, size) ctor is handled by SpanTwoParamConstructorGadget. - auto HasTwoParamSpanCtorDecl = SpanTwoParamConstructorGadget::matcher(); - return stmt( - cxxConstructExpr(HasUnsafeCtorDecl, unless(HasTwoParamSpanCtorDecl)) - .bind(OpTag)); + static bool matches(const Stmt *S, const ASTContext &Ctx, + MatchResult &Result) { + const auto *CE = dyn_cast<CXXConstructExpr>(S); + if (!CE || !CE->getConstructor()->hasAttr<UnsafeBufferUsageAttr>()) + return false; + MatchResult tmp; ---------------- ilya-biryukov wrote:
NIT: per LLVM naming style, use `Tmp`. https://github.com/llvm/llvm-project/pull/125492 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits