]> granicus.if.org Git - clang/commitdiff
Add IsMarkedOverride and IsMarkedFinal flags to FunctionDecl (to be used by CXXRecord...
authorAnders Carlsson <andersca@mac.com>
Thu, 20 Jan 2011 05:36:44 +0000 (05:36 +0000)
committerAnders Carlsson <andersca@mac.com>
Thu, 20 Jan 2011 05:36:44 +0000 (05:36 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123885 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/AST/Decl.h
lib/Serialization/ASTReaderDecl.cpp
lib/Serialization/ASTWriterDecl.cpp

index b7fcbe9652ace9a6bbd4ac1c8740a3e8a6d2fbb0..fe4b71ccc1dc3fcd18e6d3abd7685ea31fedd7fa 100644 (file)
@@ -1195,6 +1195,8 @@ private:
   bool IsDeleted : 1;
   bool IsTrivial : 1; // sunk from CXXMethodDecl
   bool HasImplicitReturnZero : 1;
+  bool IsMarkedOverride : 1; // sunk from CXXMethodDecl
+  bool IsMarkedFinal : 1; // sunk from CXXMethodDecl
 
   /// \brief End part of this FunctionDecl's source range.
   ///
@@ -1274,8 +1276,8 @@ protected:
       IsInline(isInlineSpecified), IsInlineSpecified(isInlineSpecified),
       IsVirtualAsWritten(false), IsPure(false), HasInheritedPrototype(false),
       HasWrittenPrototype(true), IsDeleted(false), IsTrivial(false),
-      HasImplicitReturnZero(false),
-      EndRangeLoc(NameInfo.getEndLoc()),
+      HasImplicitReturnZero(false), IsMarkedOverride(false), 
+      IsMarkedFinal(false), EndRangeLoc(NameInfo.getEndLoc()),
       TemplateOrSpecialization(),
       DNLoc(NameInfo.getInfo()) {}
 
@@ -1388,6 +1390,16 @@ public:
   bool hasImplicitReturnZero() const { return HasImplicitReturnZero; }
   void setHasImplicitReturnZero(bool IRZ) { HasImplicitReturnZero = IRZ; }
 
+  /// \brief Whether this member function is marked with the 'override' keyword,
+  /// C++0x [class.mem]p8.
+  bool isMarkedOverride() const { return IsMarkedOverride; }
+  void setIsMarkedOverride(bool IMO) { IsMarkedOverride = IMO; }
+
+  /// \brief Whether this member function is marked with the 'final' keyword,
+  /// C++0x [class.mem]p8.
+  bool isMarkedFinal() const { return IsMarkedFinal; }
+  void setIsMarkedFinal(bool IMF) { IsMarkedFinal = IMF; }
+
   /// \brief Whether this function has a prototype, either because one
   /// was explicitly written or because it was "inherited" by merging
   /// a declaration without a prototype with a declaration that has a
index 757433228fd8da7333bb0773557eef0e3620bc8c..190f584a04575eb695e5d108836c1b21f5ec2e23 100644 (file)
@@ -395,6 +395,9 @@ void ASTDeclReader::VisitFunctionDecl(FunctionDecl *FD) {
   FD->IsDeleted = Record[Idx++];
   FD->IsTrivial = Record[Idx++];
   FD->HasImplicitReturnZero = Record[Idx++];
+  FD->IsMarkedOverride = Record[Idx++];
+  FD->IsMarkedFinal = Record[Idx++];
+
   FD->EndRangeLoc = ReadSourceLocation(Record, Idx);
 
   // Read in the parameters.
index 507c66931c555345dd0f94b034ef0ef0e9bd6884..88ff1a7c9bb5b6fd892b7c66f4535e612299fbe9 100644 (file)
@@ -312,6 +312,8 @@ void ASTDeclWriter::VisitFunctionDecl(FunctionDecl *D) {
   Record.push_back(D->isDeleted());
   Record.push_back(D->isTrivial());
   Record.push_back(D->hasImplicitReturnZero());
+  Record.push_back(D->isMarkedOverride());
+  Record.push_back(D->isMarkedFinal());
   Writer.AddSourceLocation(D->getLocEnd(), Record);
 
   Record.push_back(D->param_size());