On Jan 14, 2009, at 3:24 PM, Douglas Gregor wrote: > > On Jan 14, 2009, at 3:10 PM, Sebastian Redl wrote: > >> Douglas Gregor wrote: >>> Author: dgregor >>> Date: Wed Jan 14 16:20:51 2009 >>> New Revision: 62245 >>> >>> URL: http://llvm.org/viewvc/llvm-project?rev=62245&view=rev >>> Log: >>> Refactor name lookup. >>> >>> This change refactors and cleans up our handling of name lookup with >>> LookupDecl. There are several aspects to this refactoring: >>> >>> >>> +/// @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.
Nevermind, I have a better reason: if I put in a default clause, then I've suppressed the warning that will tell me if I've added an enumerator to StoredKind and forgotten to add it here. That's worse than having a little dead code. - Doug _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
