diff options
author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2013-01-08 18:23:28 +0000 |
---|---|---|
committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2013-01-08 18:23:28 +0000 |
commit | d1d9df688baf384f1ca1220e51104c3b30d6a81a (patch) | |
tree | 2c060c35f1902dbbd42f7c8538505bed45703555 | |
parent | 7cdc45751cb5b200ad5fff0de28c5d1a64b6fce3 (diff) |
[libclang] In clang_equalCursors, clear out the "FirstInDeclGroup" part in a declaration cursor
before doing the comparison.
This is because we can't set "FirstInDeclGroup" consistently; for example, when visiting a DeclStmt we will set
it but we don't set it on the result of clang_getCursorDefinition for a reference of the same declaration.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171878 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | tools/libclang/CIndex.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/tools/libclang/CIndex.cpp b/tools/libclang/CIndex.cpp index 97fabab4a5..8b29bb4d73 100644 --- a/tools/libclang/CIndex.cpp +++ b/tools/libclang/CIndex.cpp @@ -3862,6 +3862,18 @@ CXCursor clang_getNullCursor(void) { } unsigned clang_equalCursors(CXCursor X, CXCursor Y) { + // Clear out the "FirstInDeclGroup" part in a declaration cursor, since we + // can't set consistently. For example, when visiting a DeclStmt we will set + // it but we don't set it on the result of clang_getCursorDefinition for + // a reference of the same declaration. + // FIXME: Setting "FirstInDeclGroup" in CXCursors is a hack that only works + // when visiting a DeclStmt currently, the AST should be enhanced to be able + // to provide that kind of info. + if (clang_isDeclaration(X.kind)) + X.data[1] = 0; + if (clang_isDeclaration(Y.kind)) + Y.data[1] = 0; + return X == Y; } |