115#define ABSTRACT_STMT(Kind)
116#define STMT(Kind, Base) case Expr::Kind##Class:
117#define EXPR(Kind, Base)
118#include "clang/AST/StmtNodes.inc"
119 llvm_unreachable(
"cannot classify a statement");
122 case Expr::ObjCIsaExprClass:
124 case Expr::ObjCSubscriptRefExprClass:
125 case Expr::ObjCPropertyRefExprClass:
127 case Expr::CXXTypeidExprClass:
128 case Expr::CXXUuidofExprClass:
131 case Expr::UnresolvedLookupExprClass:
132 case Expr::UnresolvedMemberExprClass:
133 case Expr::DependentTemplateIdExprClass:
134 case Expr::DependentCoawaitExprClass:
135 case Expr::CXXDependentScopeMemberExprClass:
136 case Expr::DependentScopeDeclRefExprClass:
139 case Expr::ObjCIvarRefExprClass:
140 case Expr::FunctionParmPackExprClass:
141 case Expr::MSPropertyRefExprClass:
142 case Expr::MSPropertySubscriptExprClass:
143 case Expr::ArraySectionExprClass:
144 case Expr::OMPArrayShapingExprClass:
145 case Expr::OMPIteratorExprClass:
146 case Expr::HLSLOutArgExprClass:
150 case Expr::StringLiteralClass:
152 case Expr::ObjCEncodeExprClass:
160 case Expr::PredefinedExprClass: {
163 if (PE->isTransparent())
171 case Expr::CompoundLiteralExprClass:
175 case Expr::CXXBoolLiteralExprClass:
176 case Expr::CXXPseudoDestructorExprClass:
177 case Expr::UnaryExprOrTypeTraitExprClass:
178 case Expr::CXXNewExprClass:
179 case Expr::CXXNullPtrLiteralExprClass:
180 case Expr::ImaginaryLiteralClass:
181 case Expr::GNUNullExprClass:
182 case Expr::OffsetOfExprClass:
183 case Expr::CXXThrowExprClass:
184 case Expr::ShuffleVectorExprClass:
185 case Expr::ConvertVectorExprClass:
186 case Expr::IntegerLiteralClass:
187 case Expr::FixedPointLiteralClass:
188 case Expr::CharacterLiteralClass:
189 case Expr::AddrLabelExprClass:
190 case Expr::CXXDeleteExprClass:
191 case Expr::ImplicitValueInitExprClass:
192 case Expr::BlockExprClass:
193 case Expr::FloatingLiteralClass:
194 case Expr::CXXNoexceptExprClass:
195 case Expr::CXXScalarValueInitExprClass:
196 case Expr::TypeTraitExprClass:
197 case Expr::ArrayTypeTraitExprClass:
198 case Expr::ExpressionTraitExprClass:
199 case Expr::ObjCSelectorExprClass:
200 case Expr::ObjCProtocolExprClass:
201 case Expr::ObjCStringLiteralClass:
202 case Expr::ObjCBoxedExprClass:
203 case Expr::ObjCArrayLiteralClass:
204 case Expr::ObjCDictionaryLiteralClass:
205 case Expr::ObjCBoolLiteralExprClass:
206 case Expr::ObjCAvailabilityCheckExprClass:
207 case Expr::ParenListExprClass:
208 case Expr::SizeOfPackExprClass:
209 case Expr::SubstNonTypeTemplateParmPackExprClass:
210 case Expr::AsTypeExprClass:
211 case Expr::ObjCIndirectCopyRestoreExprClass:
212 case Expr::AtomicExprClass:
213 case Expr::CXXFoldExprClass:
214 case Expr::ArrayInitLoopExprClass:
215 case Expr::ArrayInitIndexExprClass:
216 case Expr::NoInitExprClass:
217 case Expr::DesignatedInitUpdateExprClass:
218 case Expr::SourceLocExprClass:
219 case Expr::ConceptSpecializationExprClass:
220 case Expr::RequiresExprClass:
221 case Expr::CXXReflectExprClass:
222 case Expr::CXXExpansionSelectExprClass:
225 case Expr::EmbedExprClass:
231 case Expr::CXXThisExprClass:
234 case Expr::ConstantExprClass:
238 case Expr::SubstNonTypeTemplateParmExprClass:
242 case Expr::PackIndexingExprClass: {
254 case Expr::ArraySubscriptExprClass:
257 if (Lang.CPlusPlus11) {
261 if (
Base->getType()->isArrayType())
266 case Expr::MatrixSingleSubscriptExprClass:
270 case Expr::MatrixSubscriptExprClass:
275 case Expr::DeclRefExprClass:
282 case Expr::MemberExprClass:
285 case Expr::UnaryOperatorClass:
327 case Expr::RecoveryExprClass:
328 case Expr::OpaqueValueExprClass:
332 case Expr::PseudoObjectExprClass:
338 case Expr::ImplicitCastExprClass:
343 case Expr::ParenExprClass:
349 case Expr::GenericSelectionExprClass:
354 case Expr::BinaryOperatorClass:
355 case Expr::CompoundAssignOperatorClass:
361 case Expr::CallExprClass:
362 case Expr::CXXOperatorCallExprClass:
363 case Expr::CXXMemberCallExprClass:
364 case Expr::UserDefinedLiteralClass:
365 case Expr::CUDAKernelCallExprClass:
368 case Expr::CXXRewrittenBinaryOperatorClass:
373 case Expr::ChooseExprClass:
378 case Expr::ExtVectorElementExprClass:
387 case Expr::MatrixElementExprClass:
396 case Expr::CXXDefaultArgExprClass:
400 case Expr::CXXDefaultInitExprClass:
404 case Expr::CXXBindTemporaryExprClass:
408 case Expr::ExprWithCleanupsClass:
412 case Expr::CStyleCastExprClass:
413 case Expr::CXXFunctionalCastExprClass:
414 case Expr::CXXStaticCastExprClass:
415 case Expr::CXXDynamicCastExprClass:
416 case Expr::CXXReinterpretCastExprClass:
417 case Expr::CXXConstCastExprClass:
418 case Expr::CXXAddrspaceCastExprClass:
419 case Expr::ObjCBridgedCastExprClass:
420 case Expr::BuiltinBitCastExprClass:
425 case Expr::CXXUnresolvedConstructExprClass:
429 case Expr::BinaryConditionalOperatorClass: {
435 case Expr::ConditionalOperatorClass: {
444 case Expr::ObjCMessageExprClass:
453 case Expr::CXXConstructExprClass:
454 case Expr::CXXInheritedCtorInitExprClass:
455 case Expr::CXXTemporaryObjectExprClass:
456 case Expr::LambdaExprClass:
457 case Expr::CXXStdInitializerListExprClass:
460 case Expr::VAArgExprClass:
463 case Expr::DesignatedInitExprClass:
466 case Expr::StmtExprClass: {
468 if (
const auto *LastExpr = dyn_cast_or_null<Expr>(S->
body_back()))
473 case Expr::PackExpansionExprClass:
476 case Expr::MaterializeTemporaryExprClass:
481 case Expr::InitListExprClass:
489 "Only 1-element init lists can be glvalues.");
492 case Expr::CoawaitExprClass:
493 case Expr::CoyieldExprClass:
495 case Expr::SYCLUniqueStableNameExprClass:
496 case Expr::OpenACCAsteriskSizeExprClass:
500 case Expr::CXXParenListInitExprClass:
506 llvm_unreachable(
"unhandled expression kind in classification");
Defines the clang::ASTContext interface.
Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...
static CanQualType getCanonicalType(QualType T)
Return the canonical (structural) type corresponding to the specified potentially non-canonical type ...