diff options
author | Steve Naroff <snaroff@apple.com> | 2009-10-08 21:55:05 +0000 |
---|---|---|
committer | Steve Naroff <snaroff@apple.com> | 2009-10-08 21:55:05 +0000 |
commit | 936354c62aafa6aa5c79ba5c5c0536a6b4552aa8 (patch) | |
tree | 9d839831357cc71d0f554d8bad912efce3578aa7 /clang/lib/Sema/SemaCodeComplete.cpp | |
parent | c2eeac617d48b6a095fe8296a1c62231d683fb7c (diff) | |
download | bcm5719-llvm-936354c62aafa6aa5c79ba5c5c0536a6b4552aa8.tar.gz bcm5719-llvm-936354c62aafa6aa5c79ba5c5c0536a6b4552aa8.zip |
Add code completion support for ObjC property declarations/attributes.
llvm-svn: 83579
Diffstat (limited to 'clang/lib/Sema/SemaCodeComplete.cpp')
-rw-r--r-- | clang/lib/Sema/SemaCodeComplete.cpp | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaCodeComplete.cpp b/clang/lib/Sema/SemaCodeComplete.cpp index 7a916ef0360..b6487026501 100644 --- a/clang/lib/Sema/SemaCodeComplete.cpp +++ b/clang/lib/Sema/SemaCodeComplete.cpp @@ -1393,3 +1393,30 @@ void Sema::CodeCompleteOperatorName(Scope *S) { HandleCodeCompleteResults(CodeCompleter, Results.data(), Results.size()); } +void Sema::CodeCompleteObjCProperty(Scope *S, ObjCDeclSpec &ODS) { + if (!CodeCompleter) + return; + unsigned Attributes = ODS.getPropertyAttributes(); + + typedef CodeCompleteConsumer::Result Result; + ResultBuilder Results(*this); + Results.EnterNewScope(); + if (!(Attributes & ObjCDeclSpec::DQ_PR_readonly)) + Results.MaybeAddResult(CodeCompleteConsumer::Result("readonly", 0)); + if (!(Attributes & ObjCDeclSpec::DQ_PR_assign)) + Results.MaybeAddResult(CodeCompleteConsumer::Result("assign", 0)); + if (!(Attributes & ObjCDeclSpec::DQ_PR_readwrite)) + Results.MaybeAddResult(CodeCompleteConsumer::Result("readwrite", 0)); + if (!(Attributes & ObjCDeclSpec::DQ_PR_retain)) + Results.MaybeAddResult(CodeCompleteConsumer::Result("retain", 0)); + if (!(Attributes & ObjCDeclSpec::DQ_PR_copy)) + Results.MaybeAddResult(CodeCompleteConsumer::Result("copy", 0)); + if (!(Attributes & ObjCDeclSpec::DQ_PR_nonatomic)) + Results.MaybeAddResult(CodeCompleteConsumer::Result("nonatomic", 0)); + if (!(Attributes & ObjCDeclSpec::DQ_PR_setter)) + Results.MaybeAddResult(CodeCompleteConsumer::Result("setter", 0)); + if (!(Attributes & ObjCDeclSpec::DQ_PR_getter)) + Results.MaybeAddResult(CodeCompleteConsumer::Result("getter", 0)); + Results.ExitScope(); + HandleCodeCompleteResults(CodeCompleter, Results.data(), Results.size()); +} |