[cfe-dev] Issues with clang_Cursor_getSpellingNameRange not reporting the correct range
Kevin Funk
kfunk at kde.org
Mon Aug 4 08:49:05 PDT 2014
Hey,
Context: We're using libclang as our C++ parser backend in KDevelop.
We're having some difficulties in finding the correct range for some
identifiers using libclang. Example:
% cat test.cpp
struct Foo
{
void operator++() {}
};
% c-index-test -cursor-at=test.cpp:3:10 test.cpp
3:10 CXXMethod=operator++:3:10 (Definition) Extent=[3:5 - 3:25]
Spelling=operator++ ([3:10 - 3:18])
Completion string: {ResultType void}{TypedText operator++}{LeftParen (}
{RightParen )}
Here, the range is obviously wrong: [3:10 - 3:18] only points to 'operator',
not 'operator++'. This is the fault of clang_Cursor_getSpellingNameRange.
This happens for a C++ destructor declaration (only '~' is in the range), and
all operator overloads (only 'operator' in the range).
I guess that this is a bug, and not intended, and that
clang_Cursor_getSpellingNameRange just needs special-casing for C.kind ==
CXCursor_CXXMethod and friends. Am I right in that assumption and a patch
would be accepted?
Cheers
--
Kevin Funk | kfunk at kde.org | http://kfunk.org
More information about the cfe-dev
mailing list