diff options
author | Douglas Gregor <dgregor@apple.com> | 2010-01-14 01:17:14 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2010-01-14 01:17:14 +0000 |
commit | e3eef64ae7a730f3611a08b133a08b786a3773a8 (patch) | |
tree | 129acc94d7f35a980feddb63c1475c07d95dd116 /lib/Sema/SemaCodeComplete.cpp | |
parent | 1ca6ae865cc632e9f626faacd4937e666eb05f6b (diff) |
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.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93398 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema/SemaCodeComplete.cpp')
-rw-r--r-- | lib/Sema/SemaCodeComplete.cpp | 11 |
1 files changed, 3 insertions, 8 deletions
diff --git a/lib/Sema/SemaCodeComplete.cpp b/lib/Sema/SemaCodeComplete.cpp index 3e8f749a05..84f92cef26 100644 --- a/lib/Sema/SemaCodeComplete.cpp +++ b/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. |