[cfe-commits] r173171 - in /cfe/trunk/lib/Serialization: ASTCommon.cpp ASTCommon.h ASTReader.cpp
Douglas Gregor
dgregor at apple.com
Tue Jan 22 16:00:03 PST 2013
On Jan 22, 2013, at 3:58 PM, John McCall <rjmccall at apple.com> wrote:
> On Jan 22, 2013, at 9:08 AM, Douglas Gregor <dgregor at apple.com> wrote:
>> 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");
>> }
>
> Why do you have both an unreachable default and an unreachable fall-through?
Couldn't remember if older GCCs were smart enough to suppress -Wswitch errors without the llvm_unreachable at the bottom. I'll remove it, and we'll see.
- Doug
More information about the cfe-commits
mailing list