summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaCodeComplete.cpp
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2010-07-14 17:44:04 +0000
committerDouglas Gregor <dgregor@apple.com>2010-07-14 17:44:04 +0000
commit9f1570d9939c58883b0914710a5a297413f6750c (patch)
treea77bb7de464a724b74172e057b97907ae3016a47 /clang/lib/Sema/SemaCodeComplete.cpp
parent042523340bb39407032152b681f2f4d0920b1d59 (diff)
downloadbcm5719-llvm-9f1570d9939c58883b0914710a5a297413f6750c.tar.gz
bcm5719-llvm-9f1570d9939c58883b0914710a5a297413f6750c.zip
Only filter out names reserved for the implementation (e.g., __blah or
_Foo) from code-completion results when they come from a system header. llvm-svn: 108338
Diffstat (limited to 'clang/lib/Sema/SemaCodeComplete.cpp')
-rw-r--r--clang/lib/Sema/SemaCodeComplete.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/clang/lib/Sema/SemaCodeComplete.cpp b/clang/lib/Sema/SemaCodeComplete.cpp
index 82861101e83..55288750fd5 100644
--- a/clang/lib/Sema/SemaCodeComplete.cpp
+++ b/clang/lib/Sema/SemaCodeComplete.cpp
@@ -407,13 +407,16 @@ bool ResultBuilder::isInterestingDecl(NamedDecl *ND,
return false;
// Filter out names reserved for the implementation (C99 7.1.3,
- // C++ [lib.global.names]). Users don't need to see those.
+ // C++ [lib.global.names]) if they come from a system header.
//
// FIXME: Add predicate for this.
if (Id->getLength() >= 2) {
const char *Name = Id->getNameStart();
if (Name[0] == '_' &&
- (Name[1] == '_' || (Name[1] >= 'A' && Name[1] <= 'Z')))
+ (Name[1] == '_' || (Name[1] >= 'A' && Name[1] <= 'Z')) &&
+ (ND->getLocation().isInvalid() ||
+ SemaRef.SourceMgr.isInSystemHeader(
+ SemaRef.SourceMgr.getSpellingLoc(ND->getLocation()))))
return false;
}
}
OpenPOWER on IntegriCloud