summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/CodeCompleteConsumer.cpp
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2009-09-18 17:54:00 +0000
committerDouglas Gregor <dgregor@apple.com>2009-09-18 17:54:00 +0000
commit56c2dbcfe7486e918659d7689a79ed2faa74bac7 (patch)
tree83e6b8be5c6d2037096da56fb1f1cadcaf98ac87 /clang/lib/Sema/CodeCompleteConsumer.cpp
parent73e76a1d60a93bcd1a8152f89f794937bf9fe6db (diff)
downloadbcm5719-llvm-56c2dbcfe7486e918659d7689a79ed2faa74bac7.tar.gz
bcm5719-llvm-56c2dbcfe7486e918659d7689a79ed2faa74bac7.zip
Handle using declarations and overload sets in code completion.
llvm-svn: 82233
Diffstat (limited to 'clang/lib/Sema/CodeCompleteConsumer.cpp')
-rw-r--r--clang/lib/Sema/CodeCompleteConsumer.cpp17
1 files changed, 15 insertions, 2 deletions
diff --git a/clang/lib/Sema/CodeCompleteConsumer.cpp b/clang/lib/Sema/CodeCompleteConsumer.cpp
index 7dee12a3dcb..b626847d625 100644
--- a/clang/lib/Sema/CodeCompleteConsumer.cpp
+++ b/clang/lib/Sema/CodeCompleteConsumer.cpp
@@ -11,6 +11,7 @@
//
//===----------------------------------------------------------------------===//
#include "clang/Sema/CodeCompleteConsumer.h"
+#include "clang/AST/DeclCXX.h"
#include "clang/Parse/Scope.h"
#include "clang/Lex/Preprocessor.h"
#include "Sema.h"
@@ -123,9 +124,21 @@ void CodeCompleteConsumer::ResultSet::MaybeAddResult(Result R) {
Results.push_back(R);
return;
}
+
+ // Look through using declarations.
+ if (UsingDecl *Using = dyn_cast<UsingDecl>(R.Declaration))
+ return MaybeAddResult(Result(Using->getTargetDecl(), R.Rank));
- // FIXME: Using declarations
- // FIXME: Separate overload sets
+ // Handle each declaration in an overload set separately.
+ if (OverloadedFunctionDecl *Ovl
+ = dyn_cast<OverloadedFunctionDecl>(R.Declaration)) {
+ for (OverloadedFunctionDecl::function_iterator F = Ovl->function_begin(),
+ FEnd = Ovl->function_end();
+ F != FEnd; ++F)
+ MaybeAddResult(Result(*F, R.Rank));
+
+ return;
+ }
Decl *CanonDecl = R.Declaration->getCanonicalDecl();
unsigned IDNS = CanonDecl->getIdentifierNamespace();
OpenPOWER on IntegriCloud