]> granicus.if.org Git - clang/commitdiff
Make the type of the Decl referred to by a MemberExpr a bit more precise.
authorEli Friedman <eli.friedman@gmail.com>
Fri, 4 Dec 2009 06:40:45 +0000 (06:40 +0000)
committerEli Friedman <eli.friedman@gmail.com>
Fri, 4 Dec 2009 06:40:45 +0000 (06:40 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90549 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/AST/Expr.h
lib/AST/Expr.cpp
lib/Sema/SemaExpr.cpp
lib/Sema/TreeTransform.h

index 7cf9aabc6d6f82b3708f4c69dce43d1e1f4a4f54..f41f8cf65c67ebe190d97792f6624ad9baedb498 100644 (file)
@@ -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.,
index 2aca06044441a630a2a1d93e6b3922eafde66b64..c5fb98dbcb6a5d355c29138bf885c129e9d0870b 100644 (file)
@@ -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) {
index dc0b6db05034622f591efa49c7a7d684b8f0d61e..895f9305ff072f6b73fbe91653b14e6315e4228d 100644 (file)
@@ -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;
index 145e3c70a64a79d44635b078dcf2e3396a49f255..e1ac3225d2d853e32d6cc066c6003d1427389afb 100644 (file)
@@ -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<Derived>::TransformMemberExpr(MemberExpr *E,
       return SemaRef.ExprError();
   }
 
-  NamedDecl *Member
-    = cast_or_null<NamedDecl>(getDerived().TransformDecl(E->getMemberDecl()));
+  ValueDecl *Member
+    = cast_or_null<ValueDecl>(getDerived().TransformDecl(E->getMemberDecl()));
   if (!Member)
     return SemaRef.ExprError();