Home | History | Annotate | Download | only in AST

Lines Matching refs: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,
52 Cl Expr::ClassifyImpl(ASTContext &Ctx, SourceLocation *Loc) const {
55 Cl::Kinds kind = ClassifyInternal(Ctx, this);
58 if (!Ctx.getLangOpts().CPlusPlus) {
60 if (TR->isFunctionType() || TR == Ctx.OverloadTy)
87 modifiable = IsModifiable(Ctx, this, kind, *Loc);
103 static Cl::Kinds ClassifyInternal(ASTContext &Ctx, const Expr *E) {
105 const LangOptions &Lang = Ctx.getLangOpts();
142 return Ctx.getLangOpts().CPlusPlus ? ClassifyTemporary(E->getType())
188 return ClassifyInternal(Ctx,
195 return ClassifyInternal(Ctx, cast<ArraySubscriptExpr>(E)->getBase());
201 if (E->getType() == Ctx.UnknownAnyTy)
204 return ClassifyDecl(Ctx, cast<DeclRefExpr>(E)->getDecl());
208 return ClassifyMemberExpr(Ctx, cast<MemberExpr>(E));
220 return ClassifyInternal(Ctx, cast<UnaryOperator>(E)->getSubExpr());
227 Cl::Kinds K = ClassifyInternal(Ctx, Op);
262 return ClassifyInternal(Ctx, cast<ParenExpr>(E)->getSubExpr());
270 return ClassifyInternal(Ctx,cast<GenericSelectionExpr>(E)->getResultExpr());
276 return ClassifyBinaryOp(Ctx, cast<BinaryOperator>(E));
284 return ClassifyUnnamed(Ctx, cast<CallExpr>(E)->getCallReturnType());
288 return ClassifyInternal(Ctx, cast<ChooseExpr>(E)->getChosenSubExpr(Ctx));
298 return ClassifyInternal(Ctx, cast<CXXDefaultArgExpr>(E)->getExpr());
302 return ClassifyInternal(Ctx, cast<CXXBindTemporaryExpr>(E)->getSubExpr());
306 return ClassifyInternal(Ctx, cast<ExprWithCleanups>(E)->getSubExpr());
318 return ClassifyUnnamed(Ctx, cast<ExplicitCastExpr>(E)->getTypeAsWritten());
321 return ClassifyUnnamed(Ctx,
327 return ClassifyConditional(Ctx, co->getTrueExpr(), co->getFalseExpr());
334 return ClassifyConditional(Ctx, co->getTrueExpr(), co->getFalseExpr());
342 Cl::Kinds kind = ClassifyUnnamed(Ctx, Method->getResultType());
354 return ClassifyUnnamed(Ctx, E->getType());
357 return ClassifyInternal(Ctx, cast<DesignatedInitExpr>(E)->getInit());
362 return ClassifyUnnamed(Ctx, LastExpr->getType());
370 return ClassifyInternal(Ctx, cast<PackExpansionExpr>(E)->getPattern());
386 return ClassifyInternal(Ctx, cast<InitListExpr>(E)->getInit(0));
394 static Cl::Kinds ClassifyDecl(ASTContext &Ctx, const Decl *D) {
412 (Ctx.getLangOpts().CPlusPlus &&
421 Ctx, QualType T) {
423 if (!Ctx.getLangOpts().CPlusPlus) return Cl::CL_PRValue;
438 static Cl::Kinds ClassifyMemberExpr(ASTContext &Ctx, const MemberExpr *E) {
439 if (E->getType() == Ctx.UnknownAnyTy)
444 if (!Ctx.getLangOpts().CPlusPlus) {
454 return ClassifyInternal(Ctx, Base);
480 return ClassifyInternal(Ctx, E->getBase());
495 static Cl::Kinds ClassifyBinaryOp(ASTContext &Ctx, const BinaryOperator *E) {
496 assert(Ctx.getLangOpts().CPlusPlus &&
507 return ClassifyInternal(Ctx, E->getRHS());
516 : ClassifyInternal(Ctx, E->getLHS());
530 static Cl::Kinds ClassifyConditional(ASTContext &Ctx, const Expr *True,
532 assert(Ctx.getLangOpts().CPlusPlus &&
546 Cl::Kinds LCl = ClassifyInternal(Ctx, True),
547 RCl = ClassifyInternal(Ctx, False);
551 static Cl::ModifiableType IsModifiable(ASTContext &Ctx, const Expr *E,
571 if (Ctx.getLangOpts().CPlusPlus && E->getType()->isFunctionType())
581 CanQualType CT = Ctx.getCanonicalType(E->getType());
596 !Ctx.getLangOpts().CPlusPlus) &&
606 Expr::LValueClassification Expr::ClassifyLValue(ASTContext &Ctx) const {
607 Classification VC = Classify(Ctx);
626 Expr::isModifiableLvalue(ASTContext &Ctx, SourceLocation *Loc) const {
628 Classification VC = ClassifyModifiable(Ctx, Loc ? *Loc : dummy);