diff options
author | John McCall <rjmccall@apple.com> | 2010-08-24 07:21:54 +0000 |
---|---|---|
committer | John McCall <rjmccall@apple.com> | 2010-08-24 07:21:54 +0000 |
commit | 7cd088e519d7e6caa4c4c12db52e0e4ae35d25c2 (patch) | |
tree | 59697de0c5de8f1955fc38e66a56b323b4eecede /lib/Sema/IdentifierResolver.cpp | |
parent | 60d7b3a319d84d688752be3870615ac0f111fb16 (diff) |
Struggle mightily against header inclusion in Sema.h.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111904 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema/IdentifierResolver.cpp')
-rw-r--r-- | lib/Sema/IdentifierResolver.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/lib/Sema/IdentifierResolver.cpp b/lib/Sema/IdentifierResolver.cpp index 9421cad224..384fbec676 100644 --- a/lib/Sema/IdentifierResolver.cpp +++ b/lib/Sema/IdentifierResolver.cpp @@ -13,6 +13,8 @@ //===----------------------------------------------------------------------===// #include "clang/Sema/IdentifierResolver.h" +#include "clang/Sema/Scope.h" +#include "clang/AST/Decl.h" #include "clang/Basic/LangOptions.h" using namespace clang; @@ -271,3 +273,16 @@ IdentifierResolver::IdDeclInfoMap::operator[](DeclarationName Name) { ++CurIndex; return *IDI; } + +void IdentifierResolver::iterator::incrementSlowCase() { + NamedDecl *D = **this; + void *InfoPtr = D->getDeclName().getFETokenInfo<void>(); + assert(!isDeclPtr(InfoPtr) && "Decl with wrong id ?"); + IdDeclInfo *Info = toIdDeclInfo(InfoPtr); + + BaseIter I = getIterator(); + if (I != Info->decls_begin()) + *this = iterator(I-1); + else // No more decls. + *this = iterator(); +} |