[cfe-commits] r62245 - in /cfe/trunk: lib/Sema/CMakeLists.txt lib/Sema/IdentifierResolver.h lib/Sema/Sema.h lib/Sema/SemaCXXScopeSpec.cpp lib/Sema/SemaDecl.cpp lib/Sema/SemaDeclCXX.cpp lib/Sema/SemaExpr.cpp lib/Sema/SemaExprCXX.cpp lib/Sema/SemaLookup.cpp test/Parser/cxx-using-directive.cpp test/SemaCXX/qualified-id-lookup.cpp
Chris Lattner
clattner at apple.com
Wed Jan 14 23:41:58 PST 2009
On Jan 14, 2009, at 3:24 PM, Douglas Gregor wrote:
>>> +/// @brief Determine the result of name lookup.
>>> +Sema::LookupResult::LookupKind Sema::LookupResult::getKind()
>>> const {
>>> + switch (StoredKind) {
>>> + case SingleDecl:
>>> + return (reinterpret_cast<Decl *>(First) != 0)? Found :
>>> NotFound;
>>> +
>>> + case OverloadedDeclFromIdResolver:
>>> + case OverloadedDeclFromDeclContext:
>>> + return FoundOverloaded;
>>> +
>>> + case AmbiguousLookup:
>>> + return Ambiguous;
>>> + }
>>> +
>>> + // We can't get here, but GCC complains nonetheless.
>>> + return Ambiguous;
>>> +}
>>>
>>
>> I believe our standard way of handling this is by having a default
>> case
>> that asserts.
>>
>> switch (StoredKind) {
>> default: assert(false && "Bad StoredKind");
>
> IIRC, I was getting bogus "function does not return a value" warnings
> from GCC when I've done this.
Make sure the default case is at the start of the switch (Before the
first case) not at the end.
-Chris
More information about the cfe-commits
mailing list