From 9a3b269ea18e191f0a91fc7a38a4d4b2037d6db0 Mon Sep 17 00:00:00 2001 From: Fariborz Jahanian Date: Fri, 19 Aug 2011 18:02:47 +0000 Subject: Revers r138040. Need to look at a few buildbot failures. llvm-svn: 138049 --- clang/lib/Sema/SemaCodeComplete.cpp | 37 ++++++++++++++++++------------------- 1 file changed, 18 insertions(+), 19 deletions(-) (limited to 'clang/lib/Sema/SemaCodeComplete.cpp') diff --git a/clang/lib/Sema/SemaCodeComplete.cpp b/clang/lib/Sema/SemaCodeComplete.cpp index ef54fbcad88..858a001d439 100644 --- a/clang/lib/Sema/SemaCodeComplete.cpp +++ b/clang/lib/Sema/SemaCodeComplete.cpp @@ -4141,14 +4141,15 @@ static void AddObjCTopLevelResults(ResultBuilder &Results, bool NeedAt) { Results.AddResult(Result(Builder.TakeString())); } -void Sema::CodeCompleteObjCAtDirective(Scope *S) { +void Sema::CodeCompleteObjCAtDirective(Scope *S, Decl *ObjCImpDecl, + bool InInterface) { typedef CodeCompletionResult Result; ResultBuilder Results(*this, CodeCompleter->getAllocator(), CodeCompletionContext::CCC_Other); Results.EnterNewScope(); - if (isa(CurContext)) + if (ObjCImpDecl) AddObjCImplementationResults(getLangOptions(), Results, false); - else if (CurContext->isObjCContainer()) + else if (InInterface) AddObjCInterfaceResults(getLangOptions(), Results, false); else AddObjCTopLevelResults(Results, false); @@ -4520,14 +4521,14 @@ static void AddObjCMethods(ObjCContainerDecl *Container, } -void Sema::CodeCompleteObjCPropertyGetter(Scope *S) { +void Sema::CodeCompleteObjCPropertyGetter(Scope *S, Decl *ClassDecl) { typedef CodeCompletionResult Result; // Try to find the interface where getters might live. - ObjCInterfaceDecl *Class = dyn_cast_or_null(CurContext); + ObjCInterfaceDecl *Class = dyn_cast_or_null(ClassDecl); if (!Class) { if (ObjCCategoryDecl *Category - = dyn_cast_or_null(CurContext)) + = dyn_cast_or_null(ClassDecl)) Class = Category->getClassInterface(); if (!Class) @@ -4548,15 +4549,15 @@ void Sema::CodeCompleteObjCPropertyGetter(Scope *S) { Results.data(),Results.size()); } -void Sema::CodeCompleteObjCPropertySetter(Scope *S) { +void Sema::CodeCompleteObjCPropertySetter(Scope *S, Decl *ObjCImplDecl) { typedef CodeCompletionResult Result; // Try to find the interface where setters might live. ObjCInterfaceDecl *Class - = dyn_cast_or_null(CurContext); + = dyn_cast_or_null(ObjCImplDecl); if (!Class) { if (ObjCCategoryDecl *Category - = dyn_cast_or_null(CurContext)) + = dyn_cast_or_null(ObjCImplDecl)) Class = Category->getClassInterface(); if (!Class) @@ -5550,14 +5551,14 @@ void Sema::CodeCompleteObjCImplementationCategory(Scope *S, Results.data(),Results.size()); } -void Sema::CodeCompleteObjCPropertyDefinition(Scope *S) { +void Sema::CodeCompleteObjCPropertyDefinition(Scope *S, Decl *ObjCImpDecl) { typedef CodeCompletionResult Result; ResultBuilder Results(*this, CodeCompleter->getAllocator(), CodeCompletionContext::CCC_Other); // Figure out where this @synthesize lives. ObjCContainerDecl *Container - = dyn_cast_or_null(CurContext); + = dyn_cast_or_null(ObjCImpDecl); if (!Container || (!isa(Container) && !isa(Container))) @@ -5590,14 +5591,15 @@ void Sema::CodeCompleteObjCPropertyDefinition(Scope *S) { } void Sema::CodeCompleteObjCPropertySynthesizeIvar(Scope *S, - IdentifierInfo *PropertyName) { + IdentifierInfo *PropertyName, + Decl *ObjCImpDecl) { typedef CodeCompletionResult Result; ResultBuilder Results(*this, CodeCompleter->getAllocator(), CodeCompletionContext::CCC_Other); // Figure out where this @synthesize lives. ObjCContainerDecl *Container - = dyn_cast_or_null(CurContext); + = dyn_cast_or_null(ObjCImpDecl); if (!Container || (!isa(Container) && !isa(Container))) @@ -6410,15 +6412,12 @@ static void AddObjCKeyValueCompletions(ObjCPropertyDecl *Property, void Sema::CodeCompleteObjCMethodDecl(Scope *S, bool IsInstanceMethod, - ParsedType ReturnTy) { + ParsedType ReturnTy, + Decl *IDecl) { // Determine the return type of the method we're declaring, if // provided. QualType ReturnType = GetTypeFromParser(ReturnTy); - Decl *IDecl = 0; - if (CurContext->isObjCContainer()) { - ObjCContainerDecl *OCD = dyn_cast(CurContext); - IDecl = cast(OCD); - } + // Determine where we should start searching for methods. ObjCContainerDecl *SearchDecl = 0; bool IsInImplementation = false; -- cgit v1.2.3