]> granicus.if.org Git - clang/commitdiff
Refactor FieldDecls to be ValueDecls instead of NamedDecls.
authorMike Stump <mrs@apple.com>
Tue, 10 Feb 2009 20:06:48 +0000 (20:06 +0000)
committerMike Stump <mrs@apple.com>
Tue, 10 Feb 2009 20:06:48 +0000 (20:06 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64231 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/AST/Decl.h
include/clang/AST/DeclNodes.def
lib/AST/DeclSerialization.cpp

index 15945affce456fd1af01e8a48c5542be0123060c..1ea015066c5bacbe3ac716d4c60dc6ad41a3942b 100644 (file)
@@ -662,15 +662,13 @@ protected:
 
 /// FieldDecl - An instance of this class is created by Sema::ActOnField to 
 /// represent a member of a struct/union/class.
-class FieldDecl : public NamedDecl {
+class FieldDecl : public ValueDecl {
   bool Mutable : 1;
-  QualType DeclType;  
   Expr *BitWidth;
 protected:
   FieldDecl(Kind DK, DeclContext *DC, SourceLocation L, 
             IdentifierInfo *Id, QualType T, Expr *BW, bool Mutable)
-    : NamedDecl(DK, DC, L, Id), Mutable(Mutable), DeclType(T), 
-      BitWidth(BW)
+    : ValueDecl(DK, DC, L, Id, T), Mutable(Mutable), BitWidth(BW)
       { }
 
 public:
@@ -678,8 +676,6 @@ public:
                            IdentifierInfo *Id, QualType T, Expr *BW, 
                            bool Mutable);
 
-  QualType getType() const { return DeclType; }
-
   /// isMutable - Determines whether this field is mutable (C++ only).
   bool isMutable() const { return Mutable; }
 
index 195553ccefd3c545bce23c1099bf8270b864aeb3..602c37e5e68893b25ef69ff389788502ca86dd5c 100644 (file)
@@ -72,9 +72,6 @@
 DECL(TranslationUnit, Decl)
 ABSTRACT_DECL(Named,  Decl)
   DECL(OverloadedFunction, NamedDecl)
-  DECL(Field, NameDecl)
-    DECL(ObjCIvar, FieldDecl)
-    DECL(ObjCAtDefsField, FieldDecl)
   DECL(Namespace, NamedDecl)
   DECL(UsingDirective, NamedDecl)
   ABSTRACT_DECL(Type, NamedDecl)
@@ -91,6 +88,9 @@ ABSTRACT_DECL(Named,  Decl)
         DECL(CXXConstructor, CXXMethodDecl)
         DECL(CXXDestructor, CXXMethodDecl)
         DECL(CXXConversion, CXXMethodDecl)
+    DECL(Field, ValueDecl)
+      DECL(ObjCIvar, FieldDecl)
+      DECL(ObjCAtDefsField, FieldDecl)
     DECL(Var, ValueDecl)
       DECL(ImplicitParam, VarDecl)
       DECL(CXXClassVar, VarDecl)
index ea027df1df9ed7165d6dafc1edd442b1c4e676d2..e4534a26865e985e4b00c9fd34f4c6882ce162a1 100644 (file)
@@ -437,7 +437,7 @@ EnumConstantDecl* EnumConstantDecl::CreateImpl(Deserializer& D, ASTContext& C) {
 void FieldDecl::EmitImpl(Serializer& S) const {
   S.EmitBool(Mutable);
   S.Emit(getType());
-  NamedDecl::EmitInRec(S);
+  ValueDecl::EmitInRec(S);
   S.EmitOwnedPtr(BitWidth);  
 }
 
@@ -445,8 +445,7 @@ FieldDecl* FieldDecl::CreateImpl(Deserializer& D, ASTContext& C) {
   FieldDecl* decl = new (C) FieldDecl(Field, 0, SourceLocation(), NULL, 
                                         QualType(), 0, false);
   decl->Mutable = D.ReadBool();
-  decl->DeclType.ReadBackpatch(D);  
-  decl->ReadInRec(D, C);
+  decl->ValueDecl::ReadInRec(D, C);
   decl->BitWidth = D.ReadOwnedPtr<Expr>(C);
   return decl;
 }