Skip to content

Commit

Permalink
Adaopt llvmorg-14-init-3863-g601102d282d5: refactor clang::isIdentifi…
Browse files Browse the repository at this point in the history
…erBody
  • Loading branch information
MaskRay committed Sep 23, 2021
1 parent f21fd7e commit 3ce756e
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 6 deletions.
4 changes: 4 additions & 0 deletions src/clang_tu.hh
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@ namespace vfs = clang::vfs;
}
#endif

#if LLVM_VERSION_MAJOR < 14 // llvmorg-14-init-3863-g601102d282d5
#define isAsciiIdentifierContinue isIdentifierBody
#endif

namespace ccls {
std::string pathFromFileEntry(const clang::FileEntry &file);

Expand Down
6 changes: 3 additions & 3 deletions src/indexer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -527,8 +527,8 @@ class IndexDataConsumer : public index::IndexDataConsumer {
auto i = name.find(short_name);
if (short_name.size())
while (i != std::string::npos &&
((i && isIdentifierBody(name[i - 1])) ||
isIdentifierBody(name[i + short_name.size()])))
((i && isAsciiIdentifierContinue(name[i - 1])) ||
isAsciiIdentifierContinue(name[i + short_name.size()])))
i = name.find(short_name, i + short_name.size());
if (i == std::string::npos) {
// e.g. operator type-parameter-1
Expand All @@ -552,7 +552,7 @@ class IndexDataConsumer : public index::IndexDataConsumer {
paren++;
else if (name[i - 1] == '(')
paren--;
else if (!(paren > 0 || isIdentifierBody(name[i - 1]) ||
else if (!(paren > 0 || isAsciiIdentifierContinue(name[i - 1]) ||
name[i - 1] == ':'))
break;
}
Expand Down
9 changes: 6 additions & 3 deletions src/working_files.cc
Original file line number Diff line number Diff line change
Expand Up @@ -342,7 +342,10 @@ std::optional<int> WorkingFile::getIndexPosFromBufferPos(int line, int *column,
Position WorkingFile::getCompletionPosition(Position pos, std::string *filter) const {
int start = getOffsetForPosition(pos, buffer_content);
int i = start;
while (i > 0 && isIdentifierBody(buffer_content[i - 1]))
#if LLVM_VERSION_MAJOR < 14 // llvmorg-14-init-3863-g601102d282d5
#define isAsciiIdentifierContinue isIdentifierBody
#endif
while (i > 0 && isAsciiIdentifierContinue(buffer_content[i - 1]))
--i;
*filter = buffer_content.substr(i, start - i);
return getPositionForOffset(buffer_content, i);
Expand Down Expand Up @@ -455,10 +458,10 @@ std::string_view lexIdentifierAroundPos(Position position,
c = content[start - 1];
if (c == ':' && start > 1 && content[start - 2] == ':')
start--;
else if (!isIdentifierBody(c))
else if (!isAsciiIdentifierContinue(c))
break;
}
for (; end < content.size() && isIdentifierBody(content[end]); end++)
for (; end < content.size() && isAsciiIdentifierContinue(content[end]); end++)
;

return content.substr(start, end - start);
Expand Down

0 comments on commit 3ce756e

Please sign in to comment.