summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaCodeComplete.cpp
diff options
context:
space:
mode:
authorSteve Naroff <snaroff@apple.com>2009-10-08 21:55:05 +0000
committerSteve Naroff <snaroff@apple.com>2009-10-08 21:55:05 +0000
commit936354c62aafa6aa5c79ba5c5c0536a6b4552aa8 (patch)
tree9d839831357cc71d0f554d8bad912efce3578aa7 /clang/lib/Sema/SemaCodeComplete.cpp
parentc2eeac617d48b6a095fe8296a1c62231d683fb7c (diff)
downloadbcm5719-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.cpp27
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());
+}
OpenPOWER on IntegriCloud