diff options
-rw-r--r-- | test/Index/annotate-tokens-unexposed.cpp | 20 | ||||
-rw-r--r-- | tools/libclang/CIndex.cpp | 2 |
2 files changed, 21 insertions, 1 deletions
diff --git a/test/Index/annotate-tokens-unexposed.cpp b/test/Index/annotate-tokens-unexposed.cpp new file mode 100644 index 0000000000..3e5d79426e --- /dev/null +++ b/test/Index/annotate-tokens-unexposed.cpp @@ -0,0 +1,20 @@ +// RUN: c-index-test -test-annotate-tokens=%s:1:1:16:1 %s -target x86_64-pc-windows-msvc | FileCheck %s +class Foo +{ +public: + void step(int v); + Foo(); +}; + +void bar() +{ + // Introduce a MSInheritanceAttr node on the CXXRecordDecl for Foo. The + // existance of this attribute should not mark all cursors for tokens in + // Foo as UnexposedAttr. + &Foo::step; +} + +Foo::Foo() +{} + +// CHECK-NOT: UnexposedAttr= diff --git a/tools/libclang/CIndex.cpp b/tools/libclang/CIndex.cpp index 480e00eb96..497a3ca8f5 100644 --- a/tools/libclang/CIndex.cpp +++ b/tools/libclang/CIndex.cpp @@ -1796,7 +1796,7 @@ bool CursorVisitor::VisitCXXRecordDecl(CXXRecordDecl *D) { bool CursorVisitor::VisitAttributes(Decl *D) { for (const auto *I : D->attrs()) - if (Visit(MakeCXCursor(I, D, TU))) + if (!I->isImplicit() && Visit(MakeCXCursor(I, D, TU))) return true; return false; |