diff options
| author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2011-12-05 22:05:28 +0000 |
|---|---|---|
| committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2011-12-05 22:05:28 +0000 |
| commit | 1a10f29b2f5716167bef90496c0b5683fdf71e90 (patch) | |
| tree | 70ecb0371809bb0d5ca51744a0d3e8374775c7a1 /clang/tools | |
| parent | 02a1fc1da63f1aad88a5e80460f4f829870ec51a (diff) | |
| download | bcm5719-llvm-1a10f29b2f5716167bef90496c0b5683fdf71e90.tar.gz bcm5719-llvm-1a10f29b2f5716167bef90496c0b5683fdf71e90.zip | |
[libclang] When indexing a field in a C++ class, return an entity
of kind CXIdxEntity_CXXInstanceVariable. rdar://10522503.
llvm-svn: 145859
Diffstat (limited to 'clang/tools')
| -rw-r--r-- | clang/tools/c-index-test/c-index-test.c | 1 | ||||
| -rw-r--r-- | clang/tools/libclang/IndexingContext.cpp | 7 |
2 files changed, 7 insertions, 1 deletions
diff --git a/clang/tools/c-index-test/c-index-test.c b/clang/tools/c-index-test/c-index-test.c index 903bfc59d82..7d571a0dbe1 100644 --- a/clang/tools/c-index-test/c-index-test.c +++ b/clang/tools/c-index-test/c-index-test.c @@ -1641,6 +1641,7 @@ static const char *getEntityKindString(CXIdxEntityKind kind) { case CXIdxEntity_CXXNamespace: return "namespace"; case CXIdxEntity_CXXNamespaceAlias: return "namespace-alias"; case CXIdxEntity_CXXStaticVariable: return "c++-static-var"; + case CXIdxEntity_CXXInstanceVariable: return "c++-instance-var"; case CXIdxEntity_CXXStaticMethod: return "c++-static-method"; case CXIdxEntity_CXXInstanceMethod: return "c++-instance-method"; case CXIdxEntity_CXXConstructor: return "constructor"; diff --git a/clang/tools/libclang/IndexingContext.cpp b/clang/tools/libclang/IndexingContext.cpp index b5da6461bce..f5977971324 100644 --- a/clang/tools/libclang/IndexingContext.cpp +++ b/clang/tools/libclang/IndexingContext.cpp @@ -736,7 +736,12 @@ void IndexingContext::getEntityInfo(const NamedDecl *D, EntityInfo.kind = CXIdxEntity_CXXStaticVariable; break; case Decl::Field: - EntityInfo.kind = CXIdxEntity_Field; break; + EntityInfo.kind = CXIdxEntity_Field; + if (const CXXRecordDecl * + CXXRec = dyn_cast<CXXRecordDecl>(D->getDeclContext())) + if (!CXXRec->isPOD()) + EntityInfo.kind = CXIdxEntity_CXXInstanceVariable; + break; case Decl::EnumConstant: EntityInfo.kind = CXIdxEntity_EnumConstant; break; case Decl::ObjCInterface: |

