Lines Matching refs:Expr

10 // This file implements Expr::classify.
14 #include "clang/AST/Expr.h"
24 typedef Expr::Classification Cl;
26 static Cl::Kinds ClassifyInternal(ASTContext &Ctx, const Expr *E);
32 const Expr *trueExpr,
33 const Expr *falseExpr);
34 static Cl::ModifiableType IsModifiable(ASTContext &Ctx, const Expr *E,
37 Cl Expr::ClassifyImpl(ASTContext &Ctx, SourceLocation *Loc) const {
89 const Expr *E,
102 static Cl::Kinds ClassifyInternal(ASTContext &Ctx, const Expr *E) {
109 #define STMT(Kind, Base) case Expr::Kind##Class:
115 case Expr::ObjCIsaExprClass:
117 case Expr::StringLiteralClass:
119 case Expr::ObjCEncodeExprClass:
121 case Expr::PredefinedExprClass:
123 case Expr::ObjCSubscriptRefExprClass:
124 case Expr::ObjCPropertyRefExprClass:
126 case Expr::CXXTypeidExprClass:
129 case Expr::UnresolvedLookupExprClass:
130 case Expr::UnresolvedMemberExprClass:
131 case Expr::TypoExprClass:
132 case Expr::CXXDependentScopeMemberExprClass:
133 case Expr::DependentScopeDeclRefExprClass:
136 case Expr::ObjCIvarRefExprClass:
137 case Expr::FunctionParmPackExprClass:
138 case Expr::MSPropertyRefExprClass:
139 case Expr::MSPropertySubscriptExprClass:
140 case Expr::OMPArraySectionExprClass:
145 case Expr::CompoundLiteralExprClass:
150 case Expr::CXXBoolLiteralExprClass:
151 case Expr::CXXPseudoDestructorExprClass:
152 case Expr::UnaryExprOrTypeTraitExprClass:
153 case Expr::CXXNewExprClass:
154 case Expr::CXXThisExprClass:
155 case Expr::CXXNullPtrLiteralExprClass:
156 case Expr::ImaginaryLiteralClass:
157 case Expr::GNUNullExprClass:
158 case Expr::OffsetOfExprClass:
159 case Expr::CXXThrowExprClass:
160 case Expr::ShuffleVectorExprClass:
161 case Expr::ConvertVectorExprClass:
162 case Expr::IntegerLiteralClass:
163 case Expr::CharacterLiteralClass:
164 case Expr::AddrLabelExprClass:
165 case Expr::CXXDeleteExprClass:
166 case Expr::ImplicitValueInitExprClass:
167 case Expr::BlockExprClass:
168 case Expr::FloatingLiteralClass:
169 case Expr::CXXNoexceptExprClass:
170 case Expr::CXXScalarValueInitExprClass:
171 case Expr::TypeTraitExprClass:
172 case Expr::ArrayTypeTraitExprClass:
173 case Expr::ExpressionTraitExprClass:
174 case Expr::ObjCSelectorExprClass:
175 case Expr::ObjCProtocolExprClass:
176 case Expr::ObjCStringLiteralClass:
177 case Expr::ObjCBoxedExprClass:
178 case Expr::ObjCArrayLiteralClass:
179 case Expr::ObjCDictionaryLiteralClass:
180 case Expr::ObjCBoolLiteralExprClass:
181 case Expr::ParenListExprClass:
182 case Expr::SizeOfPackExprClass:
183 case Expr::SubstNonTypeTemplateParmPackExprClass:
184 case Expr::AsTypeExprClass:
185 case Expr::ObjCIndirectCopyRestoreExprClass:
186 case Expr::AtomicExprClass:
187 case Expr::CXXFoldExprClass:
188 case Expr::NoInitExprClass:
189 case Expr::DesignatedInitUpdateExprClass:
190 case Expr::CoyieldExprClass:
194 case Expr::SubstNonTypeTemplateParmExprClass:
200 case Expr::ArraySubscriptExprClass:
207 case Expr::DeclRefExprClass:
214 case Expr::MemberExprClass:
217 case Expr::UnaryOperatorClass:
233 const Expr *Op = cast<UnaryOperator>(E)->getSubExpr()->IgnoreParens();
253 case Expr::OpaqueValueExprClass:
257 case Expr::PseudoObjectExprClass:
263 case Expr::ImplicitCastExprClass:
268 case Expr::ParenExprClass:
274 case Expr::GenericSelectionExprClass:
279 case Expr::BinaryOperatorClass:
280 case Expr::CompoundAssignOperatorClass:
286 case Expr::CallExprClass:
287 case Expr::CXXOperatorCallExprClass:
288 case Expr::CXXMemberCallExprClass:
289 case Expr::UserDefinedLiteralClass:
290 case Expr::CUDAKernelCallExprClass:
294 case Expr::ChooseExprClass:
299 case Expr::ExtVectorElementExprClass:
307 case Expr::CXXDefaultArgExprClass:
311 case Expr::CXXDefaultInitExprClass:
315 case Expr::CXXBindTemporaryExprClass:
319 case Expr::ExprWithCleanupsClass:
323 case Expr::CStyleCastExprClass:
324 case Expr::CXXFunctionalCastExprClass:
325 case Expr::CXXStaticCastExprClass:
326 case Expr::CXXDynamicCastExprClass:
327 case Expr::CXXReinterpretCastExprClass:
328 case Expr::CXXConstCastExprClass:
329 case Expr::ObjCBridgedCastExprClass:
334 case Expr::CXXUnresolvedConstructExprClass:
338 case Expr::BinaryConditionalOperatorClass: {
344 case Expr::ConditionalOperatorClass: {
353 case Expr::ObjCMessageExprClass:
362 case Expr::CXXConstructExprClass:
363 case Expr::CXXTemporaryObjectExprClass:
364 case Expr::LambdaExprClass:
365 case Expr::CXXStdInitializerListExprClass:
368 case Expr::VAArgExprClass:
371 case Expr::DesignatedInitExprClass:
374 case Expr::StmtExprClass: {
376 if (const Expr *LastExpr = dyn_cast_or_null<Expr>(S->body_back()))
381 case Expr::CXXUuidofExprClass:
384 case Expr::PackExpansionExprClass:
387 case Expr::MaterializeTemporaryExprClass:
392 case Expr::InitListExprClass:
403 case Expr::CoawaitExprClass:
470 Expr *Base = E->getBase()->IgnoreParens();
496 Expr *Base = E->getBase()->IgnoreParenImpCasts();
549 static Cl::Kinds ClassifyConditional(ASTContext &Ctx, const Expr *True,
550 const Expr *False) {
563 if (const Expr *NonThrow = TrueIsThrow ? (FalseIsThrow ? nullptr : False)
581 static Cl::ModifiableType IsModifiable(ASTContext &Ctx, const Expr *E,
606 if (const ObjCPropertyRefExpr *Expr = dyn_cast<ObjCPropertyRefExpr>(E)) {
607 if (Expr->isImplicitProperty() &&
608 Expr->getImplicitPropertySetter() == nullptr)
634 Expr::LValueClassification Expr::ClassifyLValue(ASTContext &Ctx) const {
653 Expr::isModifiableLvalueResult
654 Expr::isModifiableLvalue(ASTContext &Ctx, SourceLocation *Loc) const {