diff options
author | Daniel Dunbar <daniel@zuster.org> | 2010-04-23 13:07:39 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2010-04-23 13:07:39 +0000 |
commit | 45b2d8ab42084898cb3d764dd623d1c9b198c6f1 (patch) | |
tree | e5f7a6c18df81abcc1caf064be3f680d88c1d529 /clang/lib/Sema/SemaCodeComplete.cpp | |
parent | e97d39b0f248fc21c78d4816c7412dbb3dd8b1d6 (diff) | |
download | bcm5719-llvm-45b2d8ab42084898cb3d764dd623d1c9b198c6f1.tar.gz bcm5719-llvm-45b2d8ab42084898cb3d764dd623d1c9b198c6f1.zip |
Revert "C++ doesn't really use "namespaces" for different kinds of names the same", which seems to break most C++ nightly test apps.
llvm-svn: 102174
Diffstat (limited to 'clang/lib/Sema/SemaCodeComplete.cpp')
-rw-r--r-- | clang/lib/Sema/SemaCodeComplete.cpp | 20 |
1 files changed, 5 insertions, 15 deletions
diff --git a/clang/lib/Sema/SemaCodeComplete.cpp b/clang/lib/Sema/SemaCodeComplete.cpp index 8be3da06ac4..e71f8c84ebc 100644 --- a/clang/lib/Sema/SemaCodeComplete.cpp +++ b/clang/lib/Sema/SemaCodeComplete.cpp @@ -415,9 +415,6 @@ bool ResultBuilder::isInterestingDecl(NamedDecl *ND, return false; } - - if (Filter == &ResultBuilder::IsNestedNameSpecifier) - AsNestedNameSpecifier = true; // ... then it must be interesting! return true; @@ -507,8 +504,7 @@ void ResultBuilder::MaybeAddResult(Result R, DeclContext *CurContext) { } for (; I != IEnd; ++I) { // A tag declaration does not hide a non-tag declaration. - if (I->first->getIdentifierNamespace() - == (Decl::IDNS_Tag | Decl::IDNS_Type) && + if (I->first->getIdentifierNamespace() == Decl::IDNS_Tag && (IDNS & (Decl::IDNS_Member | Decl::IDNS_Ordinary | Decl::IDNS_ObjCProtocol))) continue; @@ -633,7 +629,7 @@ void ResultBuilder::ExitScope() { bool ResultBuilder::IsOrdinaryName(NamedDecl *ND) const { unsigned IDNS = Decl::IDNS_Ordinary; if (SemaRef.getLangOptions().CPlusPlus) - IDNS |= Decl::IDNS_Tag | Decl::IDNS_Namespace; + IDNS |= Decl::IDNS_Tag; else if (SemaRef.getLangOptions().ObjC1 && isa<ObjCIvarDecl>(ND)) return true; @@ -645,7 +641,7 @@ bool ResultBuilder::IsOrdinaryName(NamedDecl *ND) const { bool ResultBuilder::IsOrdinaryNonValueName(NamedDecl *ND) const { unsigned IDNS = Decl::IDNS_Ordinary; if (SemaRef.getLangOptions().CPlusPlus) - IDNS |= Decl::IDNS_Tag | Decl::IDNS_Namespace; + IDNS |= Decl::IDNS_Tag; return (ND->getIdentifierNamespace() & IDNS) && !isa<ValueDecl>(ND) && !isa<FunctionTemplateDecl>(ND); @@ -2098,16 +2094,10 @@ void Sema::CodeCompleteTag(Scope *S, unsigned TagSpec) { return; } - ResultBuilder Results(*this); + ResultBuilder Results(*this, Filter); + Results.allowNestedNameSpecifiers(); CodeCompletionDeclConsumer Consumer(Results, CurContext); - - // First pass: look for tags. - Results.setFilter(Filter); LookupVisibleDecls(S, LookupTagName, Consumer); - - // Second pass: look for nested name specifiers. - Results.setFilter(&ResultBuilder::IsNestedNameSpecifier); - LookupVisibleDecls(S, LookupNestedNameSpecifierName, Consumer); HandleCodeCompleteResults(this, CodeCompleter, Results.data(),Results.size()); } |