Lines Matching defs:Base
27 /// the prospective base classes.
169 // ...if C is not X or a base class of X, the class member access expression
260 /// VK should be set in advance to the value kind of the base
428 // Even in dependent contexts, try to diagnose base expressions with
462 /// declarations which do not belong to the static type of the base
480 // specifier in a member expression are actually members of the base
485 // member of the class or of one of its base classes.
497 // We can't check this yet because the base type is still
605 Sema::BuildMemberReferenceExpr(Expr *Base, QualType BaseType,
613 return ActOnDependentMemberExpr(Base, BaseType,
621 if (!Base) {
631 ExprResult BaseResult = Owned(Base);
638 Base = BaseResult.take();
641 Owned(Base);
648 // LookupMemberExpr can modify Base, and thus change BaseType
649 BaseType = Base->getType();
652 return BuildMemberReferenceExpr(Base, BaseType,
669 // First, build the expression that refers to the base object.
674 // Case 1: the base of the indirect field is not a field.
682 // the base object's class. However, under the current standard,
697 // Case 2: the base of the indirect field is a field and the user
700 // The caller provided the base object expression. Determine
713 // Case 3: the base of the indirect field is a field and we should
718 // program our base object expression is "this".
726 // Our base object expression is "this".
776 static MemberExpr *BuildMemberExpr(ASTContext &C, Expr *Base, bool isArrow,
783 return MemberExpr::Create(C, Base, isArrow, SS.getWithLocInContext(C),
822 // Diagnose lookups that find only declarations from a non-base
827 // lookup to find declarations from a non-base type as long as those
836 // Perform a property load on the base regardless of whether we
966 static bool ShouldTryAgainWithRedefinitionType(Sema &S, ExprResult &base) {
968 = base.get()->getType()->getAs<ObjCObjectPointerType>();
988 base = S.ImpCastExprToType(base.take(), redef, CK_BitCast);
1016 assert(BaseExpr.get() && "no base expression");
1087 // There are three cases for the base type:
1210 // This actually uses the base as an r-value.
1433 ExprResult Sema::ActOnMemberAccessExpr(Scope *S, Expr *Base,
1465 ExprResult Result = MaybeConvertParenListExprToParenExpr(S, Base);
1467 Base = Result.take();
1469 if (Base->getType()->isDependentType() || Name.isDependentName() ||
1471 Result = ActOnDependentMemberExpr(Base, Base->getType(),
1477 ExprResult BaseResult = Owned(Base);
1482 Base = BaseResult.take();
1485 Owned(Base);
1501 Result = BuildMemberReferenceExpr(Base, Base->getType(),
1515 // x.a is an l-value/x-value/pr-value if the base is (and note
1516 // that *x is always an l-value), except that if the base isn't
1543 // CVR attributes from the base are picked up by members,
1559 ExprResult Base =
1562 if (Base.isInvalid())
1564 return S.Owned(BuildMemberExpr(S.Context, Base.take(), IsArrow, SS,