clang  9.0.0svn
Macros | Functions
Expr.cpp File Reference
#include "clang/AST/Expr.h"
#include "clang/AST/APValue.h"
#include "clang/AST/ASTContext.h"
#include "clang/AST/Attr.h"
#include "clang/AST/DeclCXX.h"
#include "clang/AST/DeclObjC.h"
#include "clang/AST/DeclTemplate.h"
#include "clang/AST/EvaluatedExprVisitor.h"
#include "clang/AST/ExprCXX.h"
#include "clang/AST/Mangle.h"
#include "clang/AST/RecordLayout.h"
#include "clang/AST/StmtVisitor.h"
#include "clang/Basic/Builtins.h"
#include "clang/Basic/CharInfo.h"
#include "clang/Basic/SourceManager.h"
#include "clang/Basic/TargetInfo.h"
#include "clang/Lex/Lexer.h"
#include "clang/Lex/LiteralSupport.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/raw_ostream.h"
#include <algorithm>
#include <cstring>
#include "clang/AST/StmtNodes.inc"
#include "clang/AST/OperationKinds.def"
Include dependency graph for Expr.cpp:

Go to the source code of this file.

Macros

#define ABSTRACT_STMT(type)
 
#define STMT(type, base)   case Stmt::type##Class: break;
 
#define EXPR(type, base)   case Stmt::type##Class: return getExprLocImpl<type>(this, &type::getExprLoc);
 
#define UNARY_OPERATION(Name, Spelling)   case UO_##Name: return Spelling;
 
#define CAST_OPERATION(Name)   case CK_##Name: return #Name;
 
#define ABSTRACT_STMT(x)
 
#define CASTEXPR(Type, Base)
 
#define STMT(Type, Base)
 
#define BINARY_OPERATION(Name, Spelling)   case BO_##Name: return Spelling;
 
#define ABSTRACT_STMT(Type)
 
#define STMT(Type, Base)   case Type##Class:
 
#define EXPR(Type, Base)
 

Functions

static void computeDeclRefDependence (const ASTContext &Ctx, NamedDecl *D, QualType T, bool &TypeDependent, bool &ValueDependent, bool &InstantiationDependent)
 Compute the type-, value-, and instantiation-dependence of a declaration reference based on the declaration being referenced. More...
 
static QualType getDecayedSourceLocExprType (const ASTContext &Ctx, SourceLocExpr::IdentKind Kind)
 
static ExprIgnoreImpCastsSingleStep (Expr *E)
 
static ExprIgnoreImpCastsExtraSingleStep (Expr *E)
 
static ExprIgnoreCastsSingleStep (Expr *E)
 
static ExprIgnoreLValueCastsSingleStep (Expr *E)
 
static ExprIgnoreBaseCastsSingleStep (Expr *E)
 
static ExprIgnoreImplicitSingleStep (Expr *E)
 
static ExprIgnoreParensSingleStep (Expr *E)
 
static ExprIgnoreNoopCastsSingleStep (const ASTContext &Ctx, Expr *E)
 
static ExprIgnoreExprNodesImpl (Expr *E)
 
template<typename FnTy , typename... FnTys>
static ExprIgnoreExprNodesImpl (Expr *E, FnTy &&Fn, FnTys &&... Fns)
 
template<typename... FnTys>
static ExprIgnoreExprNodes (Expr *E, FnTys &&... Fns)
 Given an expression E and functions Fn_1,...,Fn_n : Expr * -> Expr *, Recursively apply each of the functions to E until reaching a fixed point. More...
 
static const ExprskipTemporaryBindingsNoOpCastsAndParens (const Expr *E)
 Skip over any no-op casts and any temporary-binding expressions. More...
 

Macro Definition Documentation

◆ ABSTRACT_STMT [1/3]

#define ABSTRACT_STMT (   type)

◆ ABSTRACT_STMT [2/3]

#define ABSTRACT_STMT (   x)

◆ ABSTRACT_STMT [3/3]

#define ABSTRACT_STMT (   Type)

◆ BINARY_OPERATION

#define BINARY_OPERATION (   Name,
  Spelling 
)    case BO_##Name: return Spelling;

◆ CAST_OPERATION

#define CAST_OPERATION (   Name)    case CK_##Name: return #Name;

◆ CASTEXPR

#define CASTEXPR (   Type,
  Base 
)
Value:
case Stmt::Type##Class: \
return static_cast<Type *>(this)->getTrailingObjects<CXXBaseSpecifier *>();
The base class of the type hierarchy.
Definition: Type.h:1414
Optional< types::ID > Type

◆ EXPR [1/2]

#define EXPR (   type,
  base 
)    case Stmt::type##Class: return getExprLocImpl<type>(this, &type::getExprLoc);

◆ EXPR [2/2]

#define EXPR (   Type,
  Base 
)

◆ STMT [1/3]

#define STMT (   type,
  base 
)    case Stmt::type##Class: break;

◆ STMT [2/3]

#define STMT (   Type,
  Base 
)

◆ STMT [3/3]

#define STMT (   Type,
  Base 
)    case Type##Class:

◆ UNARY_OPERATION

#define UNARY_OPERATION (   Name,
  Spelling 
)    case UO_##Name: return Spelling;

Function Documentation

◆ computeDeclRefDependence()

static void computeDeclRefDependence ( const ASTContext Ctx,
NamedDecl D,
QualType  T,
bool TypeDependent,
bool ValueDependent,
bool InstantiationDependent 
)
static

◆ getDecayedSourceLocExprType()

static QualType getDecayedSourceLocExprType ( const ASTContext Ctx,
SourceLocExpr::IdentKind  Kind 
)
static

◆ IgnoreBaseCastsSingleStep()

static Expr* IgnoreBaseCastsSingleStep ( Expr E)
static

Definition at line 2702 of file Expr.cpp.

Referenced by clang::Expr::ignoreParenBaseCasts().

◆ IgnoreCastsSingleStep()

static Expr* IgnoreCastsSingleStep ( Expr E)
static

◆ IgnoreExprNodes()

template<typename... FnTys>
static Expr* IgnoreExprNodes ( Expr E,
FnTys &&...  Fns 
)
static

Given an expression E and functions Fn_1,...,Fn_n : Expr * -> Expr *, Recursively apply each of the functions to E until reaching a fixed point.

Note that a null E is valid; in this case nothing is done.

Definition at line 2784 of file Expr.cpp.

References IgnoreExprNodesImpl().

Referenced by clang::Expr::IgnoreCasts(), clang::Expr::IgnoreImpCasts(), clang::Expr::IgnoreImplicit(), clang::Expr::ignoreParenBaseCasts(), clang::Expr::IgnoreParenCasts(), clang::Expr::IgnoreParenImpCasts(), clang::Expr::IgnoreParenLValueCasts(), clang::Expr::IgnoreParenNoopCasts(), and clang::Expr::IgnoreParens().

◆ IgnoreExprNodesImpl() [1/2]

static Expr* IgnoreExprNodesImpl ( Expr E)
static

Definition at line 2774 of file Expr.cpp.

Referenced by IgnoreExprNodes(), and IgnoreExprNodesImpl().

◆ IgnoreExprNodesImpl() [2/2]

template<typename FnTy , typename... FnTys>
static Expr* IgnoreExprNodesImpl ( Expr E,
FnTy &&  Fn,
FnTys &&...  Fns 
)
static

Definition at line 2776 of file Expr.cpp.

References IgnoreExprNodesImpl().

◆ IgnoreImpCastsExtraSingleStep()

static Expr* IgnoreImpCastsExtraSingleStep ( Expr E)
static

Definition at line 2659 of file Expr.cpp.

References IgnoreImpCastsSingleStep().

Referenced by clang::Expr::IgnoreParenImpCasts().

◆ IgnoreImpCastsSingleStep()

static Expr* IgnoreImpCastsSingleStep ( Expr E)
static

◆ IgnoreImplicitSingleStep()

static Expr* IgnoreImplicitSingleStep ( Expr E)
static

Definition at line 2712 of file Expr.cpp.

References IgnoreImpCastsSingleStep().

Referenced by clang::Expr::IgnoreImplicit().

◆ IgnoreLValueCastsSingleStep()

static Expr* IgnoreLValueCastsSingleStep ( Expr E)
static

Definition at line 2692 of file Expr.cpp.

References IgnoreCastsSingleStep().

Referenced by clang::Expr::IgnoreParenLValueCasts().

◆ IgnoreNoopCastsSingleStep()

static Expr* IgnoreNoopCastsSingleStep ( const ASTContext Ctx,
Expr E 
)
static

◆ IgnoreParensSingleStep()

static Expr* IgnoreParensSingleStep ( Expr E)
static

◆ skipTemporaryBindingsNoOpCastsAndParens()

static const Expr* skipTemporaryBindingsNoOpCastsAndParens ( const Expr E)
static

Skip over any no-op casts and any temporary-binding expressions.

Definition at line 2855 of file Expr.cpp.

References clang::Expr::IgnoreParens().

Referenced by clang::Expr::isTemporaryObject().