From: Eli Friedman Date: Fri, 4 Dec 2009 06:40:45 +0000 (+0000) Subject: Make the type of the Decl referred to by a MemberExpr a bit more precise. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f595cc41c4d95fe323f8a2b209523de9956f874d;p=clang Make the type of the Decl referred to by a MemberExpr a bit more precise. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90549 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/AST/Expr.h b/include/clang/AST/Expr.h index 7cf9aabc6d..f41f8cf65c 100644 --- a/include/clang/AST/Expr.h +++ b/include/clang/AST/Expr.h @@ -1252,7 +1252,7 @@ class MemberExpr : public Expr { /// MemberDecl - This is the decl being referenced by the field/member name. /// In X.F, this is the decl referenced by F. - NamedDecl *MemberDecl; + ValueDecl *MemberDecl; /// MemberLoc - This is the location of the member name. SourceLocation MemberLoc; @@ -1305,12 +1305,12 @@ class MemberExpr : public Expr { } MemberExpr(Expr *base, bool isarrow, NestedNameSpecifier *qual, - SourceRange qualrange, NamedDecl *memberdecl, SourceLocation l, + SourceRange qualrange, ValueDecl *memberdecl, SourceLocation l, const TemplateArgumentListInfo *targs, QualType ty); public: - MemberExpr(Expr *base, bool isarrow, NamedDecl *memberdecl, SourceLocation l, - QualType ty) + MemberExpr(Expr *base, bool isarrow, ValueDecl *memberdecl, + SourceLocation l, QualType ty) : Expr(MemberExprClass, ty, base->isTypeDependent(), base->isValueDependent()), Base(base), MemberDecl(memberdecl), MemberLoc(l), IsArrow(isarrow), @@ -1323,7 +1323,7 @@ public: static MemberExpr *Create(ASTContext &C, Expr *base, bool isarrow, NestedNameSpecifier *qual, SourceRange qualrange, - NamedDecl *memberdecl, + ValueDecl *memberdecl, SourceLocation l, const TemplateArgumentListInfo *targs, QualType ty); @@ -1335,8 +1335,8 @@ public: /// /// The returned declaration will either be a FieldDecl or (in C++) /// a CXXMethodDecl. - NamedDecl *getMemberDecl() const { return MemberDecl; } - void setMemberDecl(NamedDecl *D) { MemberDecl = D; } + ValueDecl *getMemberDecl() const { return MemberDecl; } + void setMemberDecl(ValueDecl *D) { MemberDecl = D; } /// \brief Determines whether this member expression actually had /// a C++ nested-name-specifier prior to the name of the member, e.g., diff --git a/lib/AST/Expr.cpp b/lib/AST/Expr.cpp index 2aca060444..c5fb98dbcb 100644 --- a/lib/AST/Expr.cpp +++ b/lib/AST/Expr.cpp @@ -470,7 +470,7 @@ QualType CallExpr::getCallReturnType() const { } MemberExpr::MemberExpr(Expr *base, bool isarrow, NestedNameSpecifier *qual, - SourceRange qualrange, NamedDecl *memberdecl, + SourceRange qualrange, ValueDecl *memberdecl, SourceLocation l, const TemplateArgumentListInfo *targs, QualType ty) : Expr(MemberExprClass, ty, @@ -493,7 +493,7 @@ MemberExpr::MemberExpr(Expr *base, bool isarrow, NestedNameSpecifier *qual, MemberExpr *MemberExpr::Create(ASTContext &C, Expr *base, bool isarrow, NestedNameSpecifier *qual, SourceRange qualrange, - NamedDecl *memberdecl, + ValueDecl *memberdecl, SourceLocation l, const TemplateArgumentListInfo *targs, QualType ty) { diff --git a/lib/Sema/SemaExpr.cpp b/lib/Sema/SemaExpr.cpp index dc0b6db050..895f9305ff 100644 --- a/lib/Sema/SemaExpr.cpp +++ b/lib/Sema/SemaExpr.cpp @@ -1213,7 +1213,7 @@ Sema::PerformObjectMemberConversion(Expr *&From, NamedDecl *Member) { /// \brief Build a MemberExpr AST node. static MemberExpr *BuildMemberExpr(ASTContext &C, Expr *Base, bool isArrow, - const CXXScopeSpec &SS, NamedDecl *Member, + const CXXScopeSpec &SS, ValueDecl *Member, SourceLocation Loc, QualType Ty, const TemplateArgumentListInfo *TemplateArgs = 0) { NestedNameSpecifier *Qualifier = 0; diff --git a/lib/Sema/TreeTransform.h b/lib/Sema/TreeTransform.h index 145e3c70a6..e1ac3225d2 100644 --- a/lib/Sema/TreeTransform.h +++ b/lib/Sema/TreeTransform.h @@ -947,7 +947,7 @@ public: NestedNameSpecifier *Qualifier, SourceRange QualifierRange, SourceLocation MemberLoc, - NamedDecl *Member, + ValueDecl *Member, const TemplateArgumentListInfo *ExplicitTemplateArgs, NamedDecl *FirstQualifierInScope) { if (!Member->getDeclName()) { @@ -3671,8 +3671,8 @@ TreeTransform::TransformMemberExpr(MemberExpr *E, return SemaRef.ExprError(); } - NamedDecl *Member - = cast_or_null(getDerived().TransformDecl(E->getMemberDecl())); + ValueDecl *Member + = cast_or_null(getDerived().TransformDecl(E->getMemberDecl())); if (!Member) return SemaRef.ExprError();