clang 22.0.0git
clang::dataflow::statusor_model Namespace Reference

Classes

class  MatchFinder
 A class to allow finding matches over the Clang AST. More...
class  UncheckedStatusOrAccessDiagnoser
class  UncheckedStatusOrAccessModel
struct  UncheckedStatusOrAccessModelOptions

Typedefs

using LatticeTransferState
using StatementMatcher

Functions

clang::ast_matchers::DeclarationMatcher statusOrClass ()
clang::ast_matchers::DeclarationMatcher statusClass ()
clang::ast_matchers::DeclarationMatcher statusOrOperatorBaseClass ()
clang::ast_matchers::TypeMatcher statusOrType ()
RecordStorageLocationlocForStatus (RecordStorageLocation &StatusOrLoc)
StorageLocationlocForOk (RecordStorageLocation &StatusLoc)
BoolValuevalForOk (RecordStorageLocation &StatusLoc, Environment &Env)
llvm::StringMap< QualTypegetSyntheticFields (QualType Ty, QualType StatusType, const CXXRecordDecl &RD)
BoolValueinitializeStatusOr (RecordStorageLocation &StatusOrLoc, Environment &Env)
BoolValueinitializeStatus (RecordStorageLocation &StatusLoc, Environment &Env)
bool isStatusOrType (QualType Type)
bool isStatusType (QualType Type)
QualType findStatusType (const ASTContext &Ctx)
CFGMatchSwitch< LatticeTransferStatebuildTransferMatchSwitch (ASTContext &Ctx, CFGMatchSwitchBuilder< LatticeTransferState > Builder)
static bool namespaceEquals (const NamespaceDecl *NS, clang::ArrayRef< clang::StringRef > NamespaceNames)
static bool isTypeNamed (QualType Type, clang::ArrayRef< clang::StringRef > NS, StringRef Name)
static bool isStatusOrOperatorBaseType (QualType Type)
static bool isSafeUnwrap (RecordStorageLocation *StatusOrLoc, const Environment &Env)
static ClassTemplateSpecializationDeclgetStatusOrBaseClass (const QualType &Ty)
static QualType getStatusOrValueType (ClassTemplateSpecializationDecl *TRD)
static auto ofClassStatus ()
static auto isStatusMemberCallWithName (llvm::StringRef member_name)
static auto isStatusOrMemberCallWithName (llvm::StringRef member_name)
static auto isStatusOrOperatorCallWithName (llvm::StringRef operator_name)
static auto valueCall ()
static auto valueOperatorCall ()
static clang::ast_matchers::TypeMatcher statusType ()
static auto isComparisonOperatorCall (llvm::StringRef operator_name)
static auto isOkStatusCall ()
static auto isNotOkStatusCall ()
static auto isPointerComparisonOperatorCall (std::string operator_name)
static auto isStatusOrValueAssignmentCall ()
static auto isStatusOrValueConstructor ()
static auto isStatusOrConstructor ()
static auto isStatusConstructor ()
static auto buildDiagnoseMatchSwitch (const UncheckedStatusOrAccessModelOptions &Options)
static void transferStatusOrOkCall (const CXXMemberCallExpr *Expr, const MatchFinder::MatchResult &, LatticeTransferState &State)
static void transferStatusCall (const CXXMemberCallExpr *Expr, const MatchFinder::MatchResult &, LatticeTransferState &State)
static void transferStatusOkCall (const CXXMemberCallExpr *Expr, const MatchFinder::MatchResult &, LatticeTransferState &State)
static void transferStatusUpdateCall (const CXXMemberCallExpr *Expr, const MatchFinder::MatchResult &, LatticeTransferState &State)
static BoolValueevaluateStatusEquality (RecordStorageLocation &LhsStatusLoc, RecordStorageLocation &RhsStatusLoc, Environment &Env)
static BoolValueevaluateStatusOrEquality (RecordStorageLocation &LhsStatusOrLoc, RecordStorageLocation &RhsStatusOrLoc, Environment &Env)
static BoolValueevaluateEquality (const Expr *LhsExpr, const Expr *RhsExpr, Environment &Env)
static void transferComparisonOperator (const CXXOperatorCallExpr *Expr, LatticeTransferState &State, bool IsNegative)
static RecordStorageLocationgetPointeeLocation (const Expr &Expr, Environment &Env)
static BoolValueevaluatePointerEquality (const Expr *LhsExpr, const Expr *RhsExpr, Environment &Env)
static void transferPointerComparisonOperator (const BinaryOperator *Expr, LatticeTransferState &State, bool IsNegative)
static void transferOkStatusCall (const CallExpr *Expr, const MatchFinder::MatchResult &, LatticeTransferState &State)
static void transferNotOkStatusCall (const CallExpr *Expr, const MatchFinder::MatchResult &, LatticeTransferState &State)
static void transferEmplaceCall (const CXXMemberCallExpr *Expr, const MatchFinder::MatchResult &, LatticeTransferState &State)
static void transferValueAssignmentCall (const CXXOperatorCallExpr *Expr, const MatchFinder::MatchResult &, LatticeTransferState &State)
static void transferValueConstructor (const CXXConstructExpr *Expr, const MatchFinder::MatchResult &, LatticeTransferState &State)
static void transferStatusOrConstructor (const CXXConstructExpr *Expr, const MatchFinder::MatchResult &, LatticeTransferState &State)
static void transferStatusConstructor (const CXXConstructExpr *Expr, const MatchFinder::MatchResult &, LatticeTransferState &State)

Typedef Documentation

◆ LatticeTransferState

Initial value:
A common form of state shared between the cases of a transfer function.
Definition MatchSwitch.h:41

Definition at line 84 of file UncheckedStatusOrAccessModel.h.

◆ StatementMatcher

Definition at line 146 of file ASTMatchers.h.

Function Documentation

◆ buildDiagnoseMatchSwitch()

◆ buildTransferMatchSwitch()

◆ evaluateEquality()

BoolValue * clang::dataflow::statusor_model::evaluateEquality ( const Expr * LhsExpr,
const Expr * RhsExpr,
Environment & Env )
static

◆ evaluatePointerEquality()

◆ evaluateStatusEquality()

BoolValue * clang::dataflow::statusor_model::evaluateStatusEquality ( RecordStorageLocation & LhsStatusLoc,
RecordStorageLocation & RhsStatusLoc,
Environment & Env )
static

◆ evaluateStatusOrEquality()

BoolValue * clang::dataflow::statusor_model::evaluateStatusOrEquality ( RecordStorageLocation & LhsStatusOrLoc,
RecordStorageLocation & RhsStatusOrLoc,
Environment & Env )
static

◆ findStatusType()

QualType clang::dataflow::statusor_model::findStatusType ( const ASTContext & Ctx)

◆ getPointeeLocation()

RecordStorageLocation * clang::dataflow::statusor_model::getPointeeLocation ( const Expr & Expr,
Environment & Env )
static

◆ getStatusOrBaseClass()

ClassTemplateSpecializationDecl * clang::dataflow::statusor_model::getStatusOrBaseClass ( const QualType & Ty)
static

◆ getStatusOrValueType()

◆ getSyntheticFields()

◆ initializeStatus()

◆ initializeStatusOr()

BoolValue & clang::dataflow::statusor_model::initializeStatusOr ( RecordStorageLocation & StatusOrLoc,
Environment & Env )

◆ isComparisonOperatorCall()

auto clang::dataflow::statusor_model::isComparisonOperatorCall ( llvm::StringRef operator_name)
static

◆ isNotOkStatusCall()

auto clang::dataflow::statusor_model::isNotOkStatusCall ( )
static

◆ isOkStatusCall()

auto clang::dataflow::statusor_model::isOkStatusCall ( )
static

◆ isPointerComparisonOperatorCall()

auto clang::dataflow::statusor_model::isPointerComparisonOperatorCall ( std::string operator_name)
static

◆ isSafeUnwrap()

bool clang::dataflow::statusor_model::isSafeUnwrap ( RecordStorageLocation * StatusOrLoc,
const Environment & Env )
static

◆ isStatusConstructor()

auto clang::dataflow::statusor_model::isStatusConstructor ( )
static

◆ isStatusMemberCallWithName()

auto clang::dataflow::statusor_model::isStatusMemberCallWithName ( llvm::StringRef member_name)
static

◆ isStatusOrConstructor()

auto clang::dataflow::statusor_model::isStatusOrConstructor ( )
static

◆ isStatusOrMemberCallWithName()

◆ isStatusOrOperatorBaseType()

bool clang::dataflow::statusor_model::isStatusOrOperatorBaseType ( QualType Type)
static

Definition at line 64 of file UncheckedStatusOrAccessModel.cpp.

References isTypeNamed().

Referenced by getStatusOrBaseClass().

◆ isStatusOrOperatorCallWithName()

auto clang::dataflow::statusor_model::isStatusOrOperatorCallWithName ( llvm::StringRef operator_name)
static

◆ isStatusOrType()

bool clang::dataflow::statusor_model::isStatusOrType ( QualType Type)

◆ isStatusOrValueAssignmentCall()

◆ isStatusOrValueConstructor()

auto clang::dataflow::statusor_model::isStatusOrValueConstructor ( )
static

◆ isStatusType()

bool clang::dataflow::statusor_model::isStatusType ( QualType Type)

◆ isTypeNamed()

bool clang::dataflow::statusor_model::isTypeNamed ( QualType Type,
clang::ArrayRef< clang::StringRef > NS,
StringRef Name )
static

◆ locForOk()

◆ locForStatus()

◆ namespaceEquals()

bool clang::dataflow::statusor_model::namespaceEquals ( const NamespaceDecl * NS,
clang::ArrayRef< clang::StringRef > NamespaceNames )
static

◆ ofClassStatus()

auto clang::dataflow::statusor_model::ofClassStatus ( )
static

Definition at line 99 of file UncheckedStatusOrAccessModel.cpp.

References clang::dataflow::hasName().

Referenced by isStatusMemberCallWithName().

◆ statusClass()

clang::ast_matchers::DeclarationMatcher clang::dataflow::statusor_model::statusClass ( )

◆ statusOrClass()

◆ statusOrOperatorBaseClass()

◆ statusOrType()

◆ statusType()

◆ transferComparisonOperator()

void clang::dataflow::statusor_model::transferComparisonOperator ( const CXXOperatorCallExpr * Expr,
LatticeTransferState & State,
bool IsNegative )
static

Definition at line 471 of file UncheckedStatusOrAccessModel.cpp.

References evaluateEquality().

Referenced by buildTransferMatchSwitch().

◆ transferEmplaceCall()

void clang::dataflow::statusor_model::transferEmplaceCall ( const CXXMemberCallExpr * Expr,
const MatchFinder::MatchResult & ,
LatticeTransferState & State )
static

◆ transferNotOkStatusCall()

void clang::dataflow::statusor_model::transferNotOkStatusCall ( const CallExpr * Expr,
const MatchFinder::MatchResult & ,
LatticeTransferState & State )
static

Definition at line 545 of file UncheckedStatusOrAccessModel.cpp.

References initializeStatus().

Referenced by buildTransferMatchSwitch().

◆ transferOkStatusCall()

void clang::dataflow::statusor_model::transferOkStatusCall ( const CallExpr * Expr,
const MatchFinder::MatchResult & ,
LatticeTransferState & State )
static

Definition at line 537 of file UncheckedStatusOrAccessModel.cpp.

References initializeStatus().

Referenced by buildTransferMatchSwitch().

◆ transferPointerComparisonOperator()

void clang::dataflow::statusor_model::transferPointerComparisonOperator ( const BinaryOperator * Expr,
LatticeTransferState & State,
bool IsNegative )
static

Definition at line 523 of file UncheckedStatusOrAccessModel.cpp.

References evaluatePointerEquality().

Referenced by buildTransferMatchSwitch().

◆ transferStatusCall()

void clang::dataflow::statusor_model::transferStatusCall ( const CXXMemberCallExpr * Expr,
const MatchFinder::MatchResult & ,
LatticeTransferState & State )
static

◆ transferStatusConstructor()

void clang::dataflow::statusor_model::transferStatusConstructor ( const CXXConstructExpr * Expr,
const MatchFinder::MatchResult & ,
LatticeTransferState & State )
static

Definition at line 597 of file UncheckedStatusOrAccessModel.cpp.

References initializeStatus(), and locForOk().

Referenced by buildTransferMatchSwitch().

◆ transferStatusOkCall()

void clang::dataflow::statusor_model::transferStatusOkCall ( const CXXMemberCallExpr * Expr,
const MatchFinder::MatchResult & ,
LatticeTransferState & State )
static

◆ transferStatusOrConstructor()

void clang::dataflow::statusor_model::transferStatusOrConstructor ( const CXXConstructExpr * Expr,
const MatchFinder::MatchResult & ,
LatticeTransferState & State )
static

◆ transferStatusOrOkCall()

void clang::dataflow::statusor_model::transferStatusOrOkCall ( const CXXMemberCallExpr * Expr,
const MatchFinder::MatchResult & ,
LatticeTransferState & State )
static

◆ transferStatusUpdateCall()

void clang::dataflow::statusor_model::transferStatusUpdateCall ( const CXXMemberCallExpr * Expr,
const MatchFinder::MatchResult & ,
LatticeTransferState & State )
static

◆ transferValueAssignmentCall()

void clang::dataflow::statusor_model::transferValueAssignmentCall ( const CXXOperatorCallExpr * Expr,
const MatchFinder::MatchResult & ,
LatticeTransferState & State )
static

Definition at line 566 of file UncheckedStatusOrAccessModel.cpp.

References initializeStatusOr().

Referenced by buildTransferMatchSwitch().

◆ transferValueConstructor()

void clang::dataflow::statusor_model::transferValueConstructor ( const CXXConstructExpr * Expr,
const MatchFinder::MatchResult & ,
LatticeTransferState & State )
static

Definition at line 579 of file UncheckedStatusOrAccessModel.cpp.

References initializeStatusOr().

Referenced by buildTransferMatchSwitch().

◆ valForOk()

◆ valueCall()

auto clang::dataflow::statusor_model::valueCall ( )
static

◆ valueOperatorCall()

auto clang::dataflow::statusor_model::valueOperatorCall ( )
static