Lines Matching defs:Ctx
26 static Cl::Kinds ClassifyInternal(ASTContext &Ctx, const Expr *E);
27 static Cl::Kinds ClassifyDecl(ASTContext &Ctx, const Decl *D);
28 static Cl::Kinds ClassifyUnnamed(ASTContext &Ctx, QualType T);
29 static Cl::Kinds ClassifyMemberExpr(ASTContext &Ctx, const MemberExpr *E);
30 static Cl::Kinds ClassifyBinaryOp(ASTContext &Ctx, const BinaryOperator *E);
31 static Cl::Kinds ClassifyConditional(ASTContext &Ctx,
34 static Cl::ModifiableType IsModifiable(ASTContext &Ctx, const Expr *E,
37 Cl Expr::ClassifyImpl(ASTContext &Ctx, SourceLocation *Loc) const {
40 Cl::Kinds kind = ClassifyInternal(Ctx, this);
43 if (!Ctx.getLangOpts().CPlusPlus) {
45 if (TR->isFunctionType() || TR == Ctx.OverloadTy)
78 modifiable = IsModifiable(Ctx, this, kind, *Loc);
108 static Cl::Kinds ClassifyInternal(ASTContext &Ctx, const Expr *E) {
110 const LangOptions &Lang = Ctx.getLangOpts();
217 return ClassifyInternal(Ctx, cast<ConstantExpr>(E)->getSubExpr());
221 return ClassifyInternal(Ctx,
229 return ClassifyInternal(Ctx, cast<PackIndexingExpr>(E)->getSelectedExpr());
238 return ClassifyInternal(Ctx, cast<ArraySubscriptExpr>(E)->getBase());
244 return ClassifyInternal(Ctx, Base);
250 return ClassifyInternal(Ctx, cast<MatrixSubscriptExpr>(E)->getBase());
255 if (E->getType() == Ctx.UnknownAnyTy)
258 return ClassifyDecl(Ctx, cast<DeclRefExpr>(E)->getDecl());
262 return ClassifyMemberExpr(Ctx, cast<MemberExpr>(E));
274 return ClassifyInternal(Ctx, cast<UnaryOperator>(E)->getSubExpr());
281 Cl::Kinds K = ClassifyInternal(Ctx, Op);
317 return ClassifyInternal(Ctx, cast<ParenExpr>(E)->getSubExpr());
325 return ClassifyInternal(Ctx,cast<GenericSelectionExpr>(E)->getResultExpr());
331 return ClassifyBinaryOp(Ctx, cast<BinaryOperator>(E));
339 return ClassifyUnnamed(Ctx, cast<CallExpr>(E)->getCallReturnType(Ctx));
343 Ctx, cast<CXXRewrittenBinaryOperator>(E)->getSemanticForm());
347 return ClassifyInternal(Ctx, cast<ChooseExpr>(E)->getChosenSubExpr());
356 return ClassifyInternal(Ctx, cast<ExtVectorElementExpr>(E)->getBase());
360 return ClassifyInternal(Ctx, cast<CXXDefaultArgExpr>(E)->getExpr());
364 return ClassifyInternal(Ctx, cast<CXXDefaultInitExpr>(E)->getExpr());
368 return ClassifyInternal(Ctx, cast<CXXBindTemporaryExpr>(E)->getSubExpr());
372 return ClassifyInternal(Ctx, cast<ExprWithCleanups>(E)->getSubExpr());
386 return ClassifyUnnamed(Ctx, cast<ExplicitCastExpr>(E)->getTypeAsWritten());
389 return ClassifyUnnamed(Ctx,
395 return ClassifyConditional(Ctx, co->getTrueExpr(), co->getFalseExpr());
402 return ClassifyConditional(Ctx, co->getTrueExpr(), co->getFalseExpr());
410 Cl::Kinds kind = ClassifyUnnamed(Ctx, Method->getReturnType());
424 return ClassifyUnnamed(Ctx, E->getType());
427 return ClassifyInternal(Ctx, cast<DesignatedInitExpr>(E)->getInit());
432 return ClassifyUnnamed(Ctx, LastExpr->getType());
437 return ClassifyInternal(Ctx, cast<PackExpansionExpr>(E)->getPattern());
453 return ClassifyInternal(Ctx, cast<InitListExpr>(E)->getInit(0));
457 return ClassifyInternal(Ctx, cast<CoroutineSuspendExpr>(E)->getResumeExpr());
473 static Cl::Kinds ClassifyDecl(ASTContext &Ctx, const Decl *D) {
497 (Ctx.getLangOpts().CPlusPlus &&
506 static Cl::Kinds ClassifyUnnamed(ASTContext &Ctx, QualType T) {
508 if (!Ctx.getLangOpts().CPlusPlus) return Cl::CL_PRValue;
523 static Cl::Kinds ClassifyMemberExpr(ASTContext &Ctx, const MemberExpr *E) {
524 if (E->getType() == Ctx.UnknownAnyTy)
529 if (!Ctx.getLangOpts().CPlusPlus) {
539 return ClassifyInternal(Ctx, Base);
565 return ClassifyInternal(Ctx, E->getBase());
585 static Cl::Kinds ClassifyBinaryOp(ASTContext &Ctx, const BinaryOperator *E) {
586 assert(Ctx.getLangOpts().CPlusPlus &&
597 return ClassifyInternal(Ctx, E->getRHS());
606 : ClassifyInternal(Ctx, E->getLHS());
620 static Cl::Kinds ClassifyConditional(ASTContext &Ctx, const Expr *True,
622 assert(Ctx.getLangOpts().CPlusPlus &&
636 return ClassifyInternal(Ctx, NonThrow);
647 Cl::Kinds LCl = ClassifyInternal(Ctx, True),
648 RCl = ClassifyInternal(Ctx, False);
652 static Cl::ModifiableType IsModifiable(ASTContext &Ctx, const Expr *E,
671 if (Ctx.getLangOpts().CPlusPlus && E->getType()->isFunctionType())
682 CanQualType CT = Ctx.getCanonicalType(E->getType());
686 if (Ctx.getLangOpts().OpenCL &&
705 Expr::LValueClassification Expr::ClassifyLValue(ASTContext &Ctx) const {
706 Classification VC = Classify(Ctx);
725 Expr::isModifiableLvalue(ASTContext &Ctx, SourceLocation *Loc) const {
727 Classification VC = ClassifyModifiable(Ctx, Loc ? *Loc : dummy);