Lines Matching refs:Ctx
27 static Cl::Kinds ClassifyInternal(ASTContext &Ctx, const Expr *E);
28 static Cl::Kinds ClassifyDecl(ASTContext &Ctx, const Decl *D);
29 static Cl::Kinds ClassifyUnnamed(ASTContext &Ctx, QualType T);
30 static Cl::Kinds ClassifyMemberExpr(ASTContext &Ctx, const MemberExpr *E);
31 static Cl::Kinds ClassifyBinaryOp(ASTContext &Ctx, const BinaryOperator *E);
32 static Cl::Kinds ClassifyConditional(ASTContext &Ctx,
35 static Cl::ModifiableType IsModifiable(ASTContext &Ctx, const Expr *E,
38 Cl Expr::ClassifyImpl(ASTContext &Ctx, SourceLocation *Loc) const { in ClassifyImpl() argument
41 Cl::Kinds kind = ClassifyInternal(Ctx, this); in ClassifyImpl()
44 if (!Ctx.getLangOpts().CPlusPlus) { in ClassifyImpl()
46 if (TR->isFunctionType() || TR == Ctx.OverloadTy) in ClassifyImpl()
73 modifiable = IsModifiable(Ctx, this, kind, *Loc); in ClassifyImpl()
103 static Cl::Kinds ClassifyInternal(ASTContext &Ctx, const Expr *E) { in ClassifyInternal() argument
105 const LangOptions &Lang = Ctx.getLangOpts(); in ClassifyInternal()
198 return ClassifyInternal(Ctx, cast<ConstantExpr>(E)->getSubExpr()); in ClassifyInternal()
202 return ClassifyInternal(Ctx, in ClassifyInternal()
211 return ClassifyInternal(Ctx, cast<ArraySubscriptExpr>(E)->getBase()); in ClassifyInternal()
217 return ClassifyInternal(Ctx, Base); in ClassifyInternal()
224 if (E->getType() == Ctx.UnknownAnyTy) in ClassifyInternal()
227 return ClassifyDecl(Ctx, cast<DeclRefExpr>(E)->getDecl()); in ClassifyInternal()
231 return ClassifyMemberExpr(Ctx, cast<MemberExpr>(E)); in ClassifyInternal()
243 return ClassifyInternal(Ctx, cast<UnaryOperator>(E)->getSubExpr()); in ClassifyInternal()
250 Cl::Kinds K = ClassifyInternal(Ctx, Op); in ClassifyInternal()
285 return ClassifyInternal(Ctx, cast<ParenExpr>(E)->getSubExpr()); in ClassifyInternal()
293 return ClassifyInternal(Ctx,cast<GenericSelectionExpr>(E)->getResultExpr()); in ClassifyInternal()
299 return ClassifyBinaryOp(Ctx, cast<BinaryOperator>(E)); in ClassifyInternal()
307 return ClassifyUnnamed(Ctx, cast<CallExpr>(E)->getCallReturnType(Ctx)); in ClassifyInternal()
311 return ClassifyInternal(Ctx, cast<ChooseExpr>(E)->getChosenSubExpr()); in ClassifyInternal()
320 return ClassifyInternal(Ctx, cast<ExtVectorElementExpr>(E)->getBase()); in ClassifyInternal()
324 return ClassifyInternal(Ctx, cast<CXXDefaultArgExpr>(E)->getExpr()); in ClassifyInternal()
328 return ClassifyInternal(Ctx, cast<CXXDefaultInitExpr>(E)->getExpr()); in ClassifyInternal()
332 return ClassifyInternal(Ctx, cast<CXXBindTemporaryExpr>(E)->getSubExpr()); in ClassifyInternal()
336 return ClassifyInternal(Ctx, cast<ExprWithCleanups>(E)->getSubExpr()); in ClassifyInternal()
348 return ClassifyUnnamed(Ctx, cast<ExplicitCastExpr>(E)->getTypeAsWritten()); in ClassifyInternal()
351 return ClassifyUnnamed(Ctx, in ClassifyInternal()
357 return ClassifyConditional(Ctx, co->getTrueExpr(), co->getFalseExpr()); in ClassifyInternal()
364 return ClassifyConditional(Ctx, co->getTrueExpr(), co->getFalseExpr()); in ClassifyInternal()
372 Cl::Kinds kind = ClassifyUnnamed(Ctx, Method->getReturnType()); in ClassifyInternal()
386 return ClassifyUnnamed(Ctx, E->getType()); in ClassifyInternal()
389 return ClassifyInternal(Ctx, cast<DesignatedInitExpr>(E)->getInit()); in ClassifyInternal()
394 return ClassifyUnnamed(Ctx, LastExpr->getType()); in ClassifyInternal()
402 return ClassifyInternal(Ctx, cast<PackExpansionExpr>(E)->getPattern()); in ClassifyInternal()
418 return ClassifyInternal(Ctx, cast<InitListExpr>(E)->getInit(0)); in ClassifyInternal()
422 return ClassifyInternal(Ctx, cast<CoroutineSuspendExpr>(E)->getResumeExpr()); in ClassifyInternal()
430 static Cl::Kinds ClassifyDecl(ASTContext &Ctx, const Decl *D) { in ClassifyDecl() argument
448 (Ctx.getLangOpts().CPlusPlus && in ClassifyDecl()
458 static Cl::Kinds ClassifyUnnamed(ASTContext &Ctx, QualType T) { in ClassifyUnnamed() argument
460 if (!Ctx.getLangOpts().CPlusPlus) return Cl::CL_PRValue; in ClassifyUnnamed()
475 static Cl::Kinds ClassifyMemberExpr(ASTContext &Ctx, const MemberExpr *E) { in ClassifyMemberExpr() argument
476 if (E->getType() == Ctx.UnknownAnyTy) in ClassifyMemberExpr()
481 if (!Ctx.getLangOpts().CPlusPlus) { in ClassifyMemberExpr()
491 return ClassifyInternal(Ctx, Base); in ClassifyMemberExpr()
517 return ClassifyInternal(Ctx, E->getBase()); in ClassifyMemberExpr()
532 static Cl::Kinds ClassifyBinaryOp(ASTContext &Ctx, const BinaryOperator *E) { in ClassifyBinaryOp() argument
533 assert(Ctx.getLangOpts().CPlusPlus && in ClassifyBinaryOp()
544 return ClassifyInternal(Ctx, E->getRHS()); in ClassifyBinaryOp()
553 : ClassifyInternal(Ctx, E->getLHS()); in ClassifyBinaryOp()
567 static Cl::Kinds ClassifyConditional(ASTContext &Ctx, const Expr *True, in ClassifyConditional() argument
569 assert(Ctx.getLangOpts().CPlusPlus && in ClassifyConditional()
583 return ClassifyInternal(Ctx, NonThrow); in ClassifyConditional()
594 Cl::Kinds LCl = ClassifyInternal(Ctx, True), in ClassifyConditional()
595 RCl = ClassifyInternal(Ctx, False); in ClassifyConditional()
599 static Cl::ModifiableType IsModifiable(ASTContext &Ctx, const Expr *E, in IsModifiable() argument
618 if (Ctx.getLangOpts().CPlusPlus && E->getType()->isFunctionType()) in IsModifiable()
629 CanQualType CT = Ctx.getCanonicalType(E->getType()); in IsModifiable()
633 if (Ctx.getLangOpts().OpenCL && in IsModifiable()
652 Expr::LValueClassification Expr::ClassifyLValue(ASTContext &Ctx) const { in ClassifyLValue()
653 Classification VC = Classify(Ctx); in ClassifyLValue()
672 Expr::isModifiableLvalue(ASTContext &Ctx, SourceLocation *Loc) const { in isModifiableLvalue() argument
674 Classification VC = ClassifyModifiable(Ctx, Loc ? *Loc : dummy); in isModifiableLvalue()