[cfe-commits] r173171 - in /cfe/trunk/lib/Serialization: ASTCommon.cpp ASTCommon.h ASTReader.cpp

Douglas Gregor dgregor at apple.com
Tue Jan 22 09:08:30 PST 2013


Author: dgregor
Date: Tue Jan 22 11:08:30 2013
New Revision: 173171

URL: http://llvm.org/viewvc/llvm-project?rev=173171&view=rev
Log:
Make getDefinitiveDeclContext() actually return a DeclContext, as one
would expect, and clean up the return/break inconsistencies. Thanks,
Sebastian!

Modified:
    cfe/trunk/lib/Serialization/ASTCommon.cpp
    cfe/trunk/lib/Serialization/ASTCommon.h
    cfe/trunk/lib/Serialization/ASTReader.cpp

Modified: cfe/trunk/lib/Serialization/ASTCommon.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/ASTCommon.cpp?rev=173171&r1=173170&r2=173171&view=diff
==============================================================================
--- cfe/trunk/lib/Serialization/ASTCommon.cpp (original)
+++ cfe/trunk/lib/Serialization/ASTCommon.cpp Tue Jan 22 11:08:30 2013
@@ -87,7 +87,8 @@
   return R;
 }
 
-const Decl *serialization::getDefinitiveDeclContext(const DeclContext *DC) {
+const DeclContext *
+serialization::getDefinitiveDeclContext(const DeclContext *DC) {
   switch (DC->getDeclKind()) {
   // These entities may have multiple definitions.
   case Decl::TranslationUnit:
@@ -100,7 +101,7 @@
   case Decl::Record:
     if (const TagDecl *Def = cast<TagDecl>(DC)->getDefinition())
       return Def;
-    break;
+    return 0;
 
   // FIXME: These can be defined in one place... except special member
   // functions and out-of-line definitions.
@@ -122,25 +123,25 @@
   case Decl::ObjCCategory:
   case Decl::ObjCCategoryImpl:
   case Decl::ObjCImplementation:
-    return cast<Decl>(DC);
+    return DC;
 
   case Decl::ObjCProtocol:
     if (const ObjCProtocolDecl *Def
           = cast<ObjCProtocolDecl>(DC)->getDefinition())
       return Def;
-    break;
+    return 0;
 
   // FIXME: These are defined in one place, but properties in class extensions
   // end up being back-patched into the main interface. See
   // Sema::HandlePropertyInClassExtension for the offending code.
   case Decl::ObjCInterface:
-    break;
+    return 0;
     
   default:
     llvm_unreachable("Unhandled DeclContext in AST reader");
   }
   
-  return 0;
+  llvm_unreachable("Unhandled decl kind");
 }
 
 bool serialization::isRedeclarableDeclKind(unsigned Kind) {

Modified: cfe/trunk/lib/Serialization/ASTCommon.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/ASTCommon.h?rev=173171&r1=173170&r2=173171&view=diff
==============================================================================
--- cfe/trunk/lib/Serialization/ASTCommon.h (original)
+++ cfe/trunk/lib/Serialization/ASTCommon.h Tue Jan 22 11:08:30 2013
@@ -68,7 +68,7 @@
 /// single place in the source code, so they have definitive declarations
 /// associated with them. C++ namespaces, on the other hand, can have
 /// multiple definitions.
-const Decl *getDefinitiveDeclContext(const DeclContext *DC);
+const DeclContext *getDefinitiveDeclContext(const DeclContext *DC);
 
 /// \brief Determine whether the given declaration kind is redeclarable.
 bool isRedeclarableDeclKind(unsigned Kind);

Modified: cfe/trunk/lib/Serialization/ASTReader.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/ASTReader.cpp?rev=173171&r1=173170&r2=173171&view=diff
==============================================================================
--- cfe/trunk/lib/Serialization/ASTReader.cpp (original)
+++ cfe/trunk/lib/Serialization/ASTReader.cpp Tue Jan 22 11:08:30 2013
@@ -5323,8 +5323,8 @@
 /// NDEBUG checking.
 static ModuleFile *getDefinitiveModuleFileFor(const DeclContext *DC,
                                               ASTReader &Reader) {
-  if (const Decl *D = getDefinitiveDeclContext(DC))
-    return Reader.getOwningModuleFile(D);
+  if (const DeclContext *DefDC = getDefinitiveDeclContext(DC))
+    return Reader.getOwningModuleFile(cast<Decl>(DefDC));
 
   return 0;
 }





More information about the cfe-commits mailing list