Go to the documentation of this file.
12 #include "llvm/ADT/DenseSet.h"
26 if (CheckDecls.empty()) {
31 ParentClass->
getName() !=
"CheckError")
37 if (N ==
nullptr || !N->getDeclName().isIdentifier() ||
38 N->getName() !=
"logging")
42 if (N->getParent() ==
nullptr || !N->getParent()->isTranslationUnit())
46 if (M->getDeclName().isIdentifier() && M->getName().endswith(
"Check"))
50 return CheckDecls.contains(&D);
54 if (
const auto *Call = dyn_cast<CallExpr>(
Stmt)) {
55 if (
const auto *M = dyn_cast<CXXMethodDecl>(Call->getDirectCallee())) {
AtomicBoolValue & getBoolLiteralValue(bool Value) const
Returns a symbolic boolean value that models a boolean literal equal to Value
void addToFlowCondition(BoolValue &Val)
Adds Val to the set of clauses that constitute the flow condition.
method_range methods() const
Represents a C++ struct/union/class.
bool isIdentifier() const
Predicate functions for querying what type of name this is.
Stmt - This represents one statement.
DeclarationName getDeclName() const
Get the actual, stored name of the declaration, which may be a special name.
bool transfer(const Stmt *Stmt, Environment &Env) override
Return value indicates whether the model processed the Stmt.
Holds the state of the program (store and heap) at a given program point.
bool isCheckLikeMethod(llvm::SmallDenseSet< const CXXMethodDecl * > &CheckDecls, const CXXMethodDecl &D)
Determines whether D is one of the methods used to implement Chromium's CHECK macros.
const CXXRecordDecl * getParent() const
Return the parent of this method declaration, which is the class in which this method is defined.
Represents a static or instance method of a struct/union/class.
DeclContext * getDeclContext()
StringRef getName() const
Get the name of identifier for this declaration as a StringRef.