clang 19.0.0git
|
#include "clang/AST/Expr.h"
#include "clang/AST/ASTContext.h"
#include "clang/AST/DeclCXX.h"
#include "clang/AST/DeclObjC.h"
#include "clang/AST/DeclTemplate.h"
#include "clang/AST/ExprCXX.h"
#include "clang/AST/ExprObjC.h"
#include "llvm/Support/ErrorHandling.h"
#include "clang/AST/StmtNodes.inc"
Go to the source code of this file.
Macros | |
#define | ABSTRACT_STMT(Kind) |
#define | STMT(Kind, Base) case Expr::Kind##Class: |
#define | EXPR(Kind, Base) |
Typedefs | |
using | Cl = Expr::Classification |
Functions | |
static Cl::Kinds | ClassifyInternal (ASTContext &Ctx, const Expr *E) |
static Cl::Kinds | ClassifyDecl (ASTContext &Ctx, const Decl *D) |
ClassifyDecl - Return the classification of an expression referencing the given declaration. | |
static Cl::Kinds | ClassifyUnnamed (ASTContext &Ctx, QualType T) |
ClassifyUnnamed - Return the classification of an expression yielding an unnamed value of the given type. | |
static Cl::Kinds | ClassifyMemberExpr (ASTContext &Ctx, const MemberExpr *E) |
static Cl::Kinds | ClassifyBinaryOp (ASTContext &Ctx, const BinaryOperator *E) |
static Cl::Kinds | ClassifyConditional (ASTContext &Ctx, const Expr *trueExpr, const Expr *falseExpr) |
static Cl::ModifiableType | IsModifiable (ASTContext &Ctx, const Expr *E, Cl::Kinds Kind, SourceLocation &Loc) |
static Cl::Kinds | ClassifyTemporary (QualType T) |
Classify an expression which creates a temporary, based on its type. | |
static Cl::Kinds | ClassifyExprValueKind (const LangOptions &Lang, const Expr *E, ExprValueKind Kind) |
#define ABSTRACT_STMT | ( | Kind | ) |
#define EXPR | ( | Kind, | |
Base | |||
) |
#define STMT | ( | Kind, | |
Base | |||
) | case Expr::Kind##Class: |
using Cl = Expr::Classification |
Definition at line 24 of file ExprClassification.cpp.
|
static |
Definition at line 575 of file ExprClassification.cpp.
References clang::Expr::Classification::CL_LValue, clang::Expr::Classification::CL_MemberFunction, clang::Expr::Classification::CL_PRValue, ClassifyInternal(), clang::ASTContext::getLangOpts(), clang::BinaryOperator::getLHS(), clang::Expr::getObjectKind(), clang::BinaryOperator::getOpcode(), clang::BinaryOperator::getRHS(), clang::Expr::getType(), clang::Expr::hasPlaceholderType(), clang::BinaryOperator::isAssignmentOp(), clang::Type::isFunctionType(), and clang::OK_ObjCProperty.
Referenced by ClassifyInternal().
|
static |
Definition at line 610 of file ExprClassification.cpp.
References clang::Expr::Classification::CL_PRValue, ClassifyInternal(), clang::ASTContext::getLangOpts(), clang::Expr::getType(), clang::Expr::IgnoreParenImpCasts(), and clang::Type::isVoidType().
Referenced by ClassifyInternal().
|
static |
ClassifyDecl - Return the classification of an expression referencing the given declaration.
Definition at line 463 of file ExprClassification.cpp.
References clang::Expr::Classification::CL_LValue, clang::Expr::Classification::CL_MemberFunction, clang::Expr::Classification::CL_PRValue, clang::ASTContext::getLangOpts(), and clang::isa().
Referenced by ClassifyInternal().
|
static |
Definition at line 94 of file ExprClassification.cpp.
References clang::Expr::Classification::CL_LValue, clang::Expr::Classification::CL_PRValue, clang::Expr::Classification::CL_XValue, ClassifyTemporary(), clang::Expr::getType(), clang::VK_LValue, clang::VK_PRValue, and clang::VK_XValue.
Referenced by ClassifyInternal().
|
static |
Definition at line 108 of file ExprClassification.cpp.
References clang::Expr::Classification::CL_ArrayTemporary, clang::Expr::Classification::CL_ClassTemporary, clang::Expr::Classification::CL_DuplicateVectorComponents, clang::Expr::Classification::CL_LValue, clang::Expr::Classification::CL_ObjCMessageRValue, clang::Expr::Classification::CL_PRValue, clang::Expr::Classification::CL_SubObjCPropertySetting, clang::Expr::Classification::CL_XValue, ClassifyBinaryOp(), ClassifyConditional(), ClassifyDecl(), ClassifyExprValueKind(), ClassifyInternal(), ClassifyMemberExpr(), ClassifyTemporary(), ClassifyUnnamed(), clang::ASTContext::getLangOpts(), clang::Stmt::getStmtClass(), clang::Expr::getType(), clang::Expr::getValueKind(), clang::Expr::IgnoreParens(), clang::Expr::isLValue(), clang::Expr::isPRValue(), clang::Stmt::NoStmtClass, and clang::ASTContext::UnknownAnyTy.
Referenced by ClassifyBinaryOp(), ClassifyConditional(), ClassifyInternal(), and ClassifyMemberExpr().
|
static |
Definition at line 513 of file ExprClassification.cpp.
References clang::Expr::Classification::CL_LValue, clang::Expr::Classification::CL_MemberFunction, clang::Expr::Classification::CL_PRValue, clang::Expr::Classification::CL_SubObjCPropertySetting, ClassifyInternal(), clang::MemberExpr::getBase(), clang::ASTContext::getLangOpts(), clang::MemberExpr::getMemberDecl(), clang::Expr::getType(), clang::Value::getType(), clang::Expr::IgnoreParenImpCasts(), clang::Expr::IgnoreParens(), clang::MemberExpr::isArrow(), clang::Type::isReferenceType(), clang::Member, and clang::ASTContext::UnknownAnyTy.
Referenced by ClassifyInternal().
Classify an expression which creates a temporary, based on its type.
Definition at line 83 of file ExprClassification.cpp.
References clang::Expr::Classification::CL_ArrayTemporary, clang::Expr::Classification::CL_ClassTemporary, clang::Expr::Classification::CL_PRValue, clang::Type::isArrayType(), clang::Type::isRecordType(), and clang::T.
Referenced by ClassifyExprValueKind(), ClassifyInternal(), and ClassifyUnnamed().
|
static |
ClassifyUnnamed - Return the classification of an expression yielding an unnamed value of the given type.
This applies in particular to function calls and casts.
Definition at line 496 of file ExprClassification.cpp.
References clang::Expr::Classification::CL_LValue, clang::Expr::Classification::CL_PRValue, clang::Expr::Classification::CL_XValue, ClassifyTemporary(), clang::Type::getAs(), clang::ASTContext::getLangOpts(), clang::Type::isLValueReferenceType(), and clang::T.
Referenced by ClassifyInternal().
|
static |
Definition at line 642 of file ExprClassification.cpp.
References clang::Expr::Classification::CL_LValue, clang::Expr::Classification::CL_PRValue, clang::Expr::Classification::CM_ArrayType, clang::Expr::Classification::CM_ConstAddrSpace, clang::Expr::Classification::CM_ConstQualified, clang::Expr::Classification::CM_ConstQualifiedField, clang::Expr::Classification::CM_Function, clang::Expr::Classification::CM_IncompleteType, clang::Expr::Classification::CM_LValueCast, clang::Expr::Classification::CM_Modifiable, clang::Expr::Classification::CM_NoSetterProperty, clang::Expr::Classification::CM_RValue, clang::Qualifiers::getAddressSpace(), clang::CanQual< T >::getAs(), clang::ASTContext::getCanonicalType(), clang::ASTContext::getLangOpts(), clang::CanQual< T >::getQualifiers(), clang::Expr::getType(), clang::Expr::IgnoreParens(), clang::CanQual< T >::isConstQualified(), clang::Type::isFunctionType(), and clang::opencl_constant.