clang
9.0.0
|
Construction context can be seen as a linked list of multiple layers. More...
#include "clang/Analysis/ConstructionContext.h"
Public Member Functions | |
const ConstructionContextItem & | getItem () const |
const ConstructionContextLayer * | getParent () const |
bool | isLast () const |
bool | isStrictlyMoreSpecificThan (const ConstructionContextLayer *Other) const |
See if Other is a proper initial segment of this construction context in terms of the parent chain - i.e. More... | |
Static Public Member Functions | |
static const ConstructionContextLayer * | create (BumpVectorContext &C, const ConstructionContextItem &Item, const ConstructionContextLayer *Parent=nullptr) |
Construction context can be seen as a linked list of multiple layers.
Sometimes a single trigger is not enough to describe the construction site. That's what causing us to have a chain of "partial" construction context layers. Some examples:
Definition at line 203 of file ConstructionContext.h.
|
static |
Definition at line 22 of file ConstructionContext.cpp.
References clang::BumpVectorContext::getAllocator().
Referenced by FindVA().
|
inline |
Definition at line 216 of file ConstructionContext.h.
Referenced by clang::ConstructionContext::createFromLayers(), FindVA(), and isStrictlyMoreSpecificThan().
|
inline |
Definition at line 217 of file ConstructionContext.h.
References Parent.
Referenced by clang::ConstructionContext::createFromLayers(), and isStrictlyMoreSpecificThan().
|
inline |
Definition at line 218 of file ConstructionContext.h.
References Parent.
Referenced by clang::ConstructionContext::createFromLayers(), and isStrictlyMoreSpecificThan().
bool ConstructionContextLayer::isStrictlyMoreSpecificThan | ( | const ConstructionContextLayer * | Other | ) | const |
See if Other is a proper initial segment of this construction context in terms of the parent chain - i.e.
a few first parents coincide and then the other context terminates but our context goes further - i.e., we are providing the same context that the other context provides, and a bit more above that.
Definition at line 30 of file ConstructionContext.cpp.
References clang::ConstructionContextItem::ArgumentKind, clang::C, clang::ConstructionContextItem::ElidableConstructorKind, clang::ConstructionContextItem::ElidedDestructorKind, clang::Type::getAsCXXRecordDecl(), clang::QualType::getCanonicalType(), getItem(), clang::ConstructionContextItem::getKind(), getParent(), clang::ConstructionContextItem::getStmt(), clang::MaterializeTemporaryExpr::getStorageDuration(), clang::Expr::getType(), clang::CXXRecordDecl::hasTrivialDestructor(), clang::ConstructionContextItem::InitializerKind, isLast(), clang::ConstructionContextItem::MaterializationKind, clang::ConstructionContextItem::NewAllocatorKind, clang::ConstructionContextItem::ReturnKind, clang::SD_FullExpression, clang::ConstructionContextItem::TemporaryDestructorKind, and clang::ConstructionContextItem::VariableKind.