diff options
| author | Douglas Gregor <dgregor@apple.com> | 2010-08-11 12:19:30 +0000 |
|---|---|---|
| committer | Douglas Gregor <dgregor@apple.com> | 2010-08-11 12:19:30 +0000 |
| commit | 1c28331b57df1b99af4ff5dcb409cafbe171795c (patch) | |
| tree | cbef2c4e46eb07858e8707ce48629bf73023ea67 /clang/lib/Sema/SemaCodeComplete.cpp | |
| parent | 6a98131468162950c22a866d736e66e300fb2803 (diff) | |
| download | bcm5719-llvm-1c28331b57df1b99af4ff5dcb409cafbe171795c.tar.gz bcm5719-llvm-1c28331b57df1b99af4ff5dcb409cafbe171795c.zip | |
Speculatively revert r110610 " Make ObjCInterfaceDecl redeclarable,
and create separate decl nodes for forward declarations and the
definition," which appears to be causing significant Objective-C
breakage.
llvm-svn: 110803
Diffstat (limited to 'clang/lib/Sema/SemaCodeComplete.cpp')
| -rw-r--r-- | clang/lib/Sema/SemaCodeComplete.cpp | 26 |
1 files changed, 9 insertions, 17 deletions
diff --git a/clang/lib/Sema/SemaCodeComplete.cpp b/clang/lib/Sema/SemaCodeComplete.cpp index f12e1839e55..52ac8dd6498 100644 --- a/clang/lib/Sema/SemaCodeComplete.cpp +++ b/clang/lib/Sema/SemaCodeComplete.cpp @@ -3748,28 +3748,20 @@ static void AddInterfaceResults(DeclContext *Ctx, DeclContext *CurContext, for (DeclContext::decl_iterator D = Ctx->decls_begin(), DEnd = Ctx->decls_end(); D != DEnd; ++D) { - // Record any interfaces we find. Forward declarations are never registered - // in the lexical contest, so if we're only looking for those, don't bother. - if (!OnlyForwardDeclarations) - if (ObjCInterfaceDecl *Class = dyn_cast<ObjCInterfaceDecl>(*D)) - if (!OnlyUnimplemented || !Class->getImplementation()) - Results.AddResult(Result(Class, 0), CurContext, 0, false); + // Record any interfaces we find. + if (ObjCInterfaceDecl *Class = dyn_cast<ObjCInterfaceDecl>(*D)) + if ((!OnlyForwardDeclarations || Class->isForwardDecl()) && + (!OnlyUnimplemented || !Class->getImplementation())) + Results.AddResult(Result(Class, 0), CurContext, 0, false); // Record any forward-declared interfaces we find. if (ObjCClassDecl *Forward = dyn_cast<ObjCClassDecl>(*D)) { for (ObjCClassDecl::iterator C = Forward->begin(), CEnd = Forward->end(); - C != CEnd; ++C) { - ObjCInterfaceDecl *IDecl = C->getInterface(); - ObjCInterfaceDecl *IDef = IDecl->getDefinition(); - // If there's a definition, and we're looking for everything, then we - // already added the decl in question above. - if (!OnlyForwardDeclarations && !OnlyUnimplemented && IDef) - continue; - if ((!OnlyForwardDeclarations || !IDef) && - (!OnlyUnimplemented || !IDef || !IDef->getImplementation())) - Results.AddResult(Result(IDecl, 0), CurContext, + C != CEnd; ++C) + if ((!OnlyForwardDeclarations || C->getInterface()->isForwardDecl()) && + (!OnlyUnimplemented || !C->getInterface()->getImplementation())) + Results.AddResult(Result(C->getInterface(), 0), CurContext, 0, false); - } } } } |

