summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaCodeComplete.cpp
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2010-01-14 01:17:14 +0000
committerDouglas Gregor <dgregor@apple.com>2010-01-14 01:17:14 +0000
commit69a8e083c5e0ecb741b6e287e557c1e0c384efc4 (patch)
tree65103fdc043e369523430ec1bb92c63be9f365bf /clang/lib/Sema/SemaCodeComplete.cpp
parentc580c5205fca8258c44ce8aca1f342ded2a7c277 (diff)
downloadbcm5719-llvm-69a8e083c5e0ecb741b6e287e557c1e0c384efc4.tar.gz
bcm5719-llvm-69a8e083c5e0ecb741b6e287e557c1e0c384efc4.zip
When providing completions for a member access expression in C++,
provided nested-name-specifier results for base classes (only), rather than everything that could possibly be a nested-name-specifier. llvm-svn: 93398
Diffstat (limited to 'clang/lib/Sema/SemaCodeComplete.cpp')
-rw-r--r--clang/lib/Sema/SemaCodeComplete.cpp11
1 files changed, 3 insertions, 8 deletions
diff --git a/clang/lib/Sema/SemaCodeComplete.cpp b/clang/lib/Sema/SemaCodeComplete.cpp
index 3e8f749a054..84f92cef26f 100644
--- a/clang/lib/Sema/SemaCodeComplete.cpp
+++ b/clang/lib/Sema/SemaCodeComplete.cpp
@@ -664,6 +664,9 @@ bool ResultBuilder::IsMember(NamedDecl *ND) const {
if (UsingShadowDecl *Using = dyn_cast<UsingShadowDecl>(ND))
ND = Using->getTargetDecl();
+ if (CXXRecordDecl *Record = dyn_cast<CXXRecordDecl>(ND))
+ return Record->isInjectedClassName();
+
return isa<ValueDecl>(ND) || isa<FunctionTemplateDecl>(ND) ||
isa<ObjCPropertyDecl>(ND);
}
@@ -2148,14 +2151,6 @@ void Sema::CodeCompleteMemberReferenceExpr(Scope *S, ExprTy *BaseE,
if (IsDependent)
Results.MaybeAddResult(Result("template"));
}
-
- // We could have the start of a nested-name-specifier. Add those
- // results as well.
- // FIXME: We should really walk base classes to produce
- // nested-name-specifiers so that we produce more-precise results.
- Results.setFilter(&ResultBuilder::IsNestedNameSpecifier);
- CollectLookupResults(S, Context.getTranslationUnitDecl(),
- CurContext, Results);
}
} else if (!IsArrow && BaseType->getAsObjCInterfacePointerType()) {
// Objective-C property reference.
OpenPOWER on IntegriCloud