diff options
author | Douglas Gregor <dgregor@apple.com> | 2010-01-13 21:54:15 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2010-01-13 21:54:15 +0000 |
commit | c38c3e1e726630458154534227d74eda833d26a0 (patch) | |
tree | e66da12fc922ce453adfde27a614a395dec6dcaa /lib/Sema/SemaCodeComplete.cpp | |
parent | fb48049fd5f0457d9052269f6d84768412f5f6df (diff) |
Code-completion for @public, @protected, @private, @package.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93361 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema/SemaCodeComplete.cpp')
-rw-r--r-- | lib/Sema/SemaCodeComplete.cpp | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/lib/Sema/SemaCodeComplete.cpp b/lib/Sema/SemaCodeComplete.cpp index 9f92641f0d..b828a02255 100644 --- a/lib/Sema/SemaCodeComplete.cpp +++ b/lib/Sema/SemaCodeComplete.cpp @@ -893,6 +893,7 @@ static void AddFunctionSpecifiers(Action::CodeCompletionContext CCC, Results.MaybeAddResult(Result("inline", Rank)); break; + case Action::CCC_ObjCInstanceVariableList: case Action::CCC_Expression: case Action::CCC_Statement: case Action::CCC_ForInit: @@ -905,6 +906,10 @@ static void AddObjCExpressionResults(unsigned Rank, ResultBuilder &Results, bool NeedAt); static void AddObjCStatementResults(unsigned Rank, ResultBuilder &Results, bool NeedAt); +static void AddObjCVisibilityResults(unsigned Rank, + const LangOptions &LangOpts, + ResultBuilder &Results, + bool NeedAt); static void AddObjCImplementationResults(unsigned Rank, const LangOptions &LangOpts, ResultBuilder &Results, @@ -1053,6 +1058,10 @@ static void AddOrdinaryNameResults(Action::CodeCompletionContext CCC, AddFunctionSpecifiers(CCC, SemaRef.getLangOptions(), Rank, Results); break; + case Action::CCC_ObjCInstanceVariableList: + AddObjCVisibilityResults(Rank, SemaRef.getLangOptions(), Results, true); + break; + case Action::CCC_Statement: { Results.MaybeAddResult(Result("typedef", Rank)); @@ -1971,6 +1980,7 @@ void Sema::CodeCompleteOrdinaryName(Scope *S, case CCC_Class: case CCC_ObjCInterface: case CCC_ObjCImplementation: + case CCC_ObjCInstanceVariableList: case CCC_Template: case CCC_MemberTemplate: Results.setFilter(&ResultBuilder::IsOrdinaryNonValueName); @@ -2672,8 +2682,27 @@ static void AddObjCStatementResults(unsigned Rank, ResultBuilder &Results, Results.MaybeAddResult(Result(Pattern, 0)); } -void Sema::CodeCompleteObjCAtStatement(Scope *S) { +static void AddObjCVisibilityResults(unsigned Rank, + const LangOptions &LangOpts, + ResultBuilder &Results, + bool NeedAt) { typedef CodeCompleteConsumer::Result Result; + Results.MaybeAddResult(Result(OBJC_AT_KEYWORD_NAME(NeedAt,private), Rank)); + Results.MaybeAddResult(Result(OBJC_AT_KEYWORD_NAME(NeedAt,protected), Rank)); + Results.MaybeAddResult(Result(OBJC_AT_KEYWORD_NAME(NeedAt,public), Rank)); + if (LangOpts.ObjC2) + Results.MaybeAddResult(Result(OBJC_AT_KEYWORD_NAME(NeedAt,package), Rank)); +} + +void Sema::CodeCompleteObjCAtVisibility(Scope *S) { + ResultBuilder Results(*this); + Results.EnterNewScope(); + AddObjCVisibilityResults(0, getLangOptions(), Results, false); + Results.ExitScope(); + HandleCodeCompleteResults(this, CodeCompleter, Results.data(),Results.size()); +} + +void Sema::CodeCompleteObjCAtStatement(Scope *S) { ResultBuilder Results(*this); Results.EnterNewScope(); AddObjCStatementResults(0, Results, false); |