From: Douglas Gregor Date: Thu, 14 Jan 2010 01:17:14 +0000 (+0000) Subject: When providing completions for a member access expression in C++, X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e3eef64ae7a730f3611a08b133a08b786a3773a8;p=clang 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 --- 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(ND)) ND = Using->getTargetDecl(); + if (CXXRecordDecl *Record = dyn_cast(ND)) + return Record->isInjectedClassName(); + return isa(ND) || isa(ND) || isa(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.