[clang-tools-extra] r331168 - [clangd] Also use UTF-16 in index position.
Haojian Wu via cfe-commits
cfe-commits at lists.llvm.org
Mon Apr 30 04:40:02 PDT 2018
Author: hokein
Date: Mon Apr 30 04:40:02 2018
New Revision: 331168
URL: http://llvm.org/viewvc/llvm-project?rev=331168&view=rev
Log:
[clangd] Also use UTF-16 in index position.
Reviewers: sammccall
Subscribers: klimek, ilya-biryukov, ioeric, MaskRay, jkorous, cfe-commits
Differential Revision: https://reviews.llvm.org/D46258
Modified:
clang-tools-extra/trunk/clangd/index/SymbolCollector.cpp
clang-tools-extra/trunk/unittests/clangd/SymbolCollectorTests.cpp
Modified: clang-tools-extra/trunk/clangd/index/SymbolCollector.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/index/SymbolCollector.cpp?rev=331168&r1=331167&r2=331168&view=diff
==============================================================================
--- clang-tools-extra/trunk/clangd/index/SymbolCollector.cpp (original)
+++ clang-tools-extra/trunk/clangd/index/SymbolCollector.cpp Mon Apr 30 04:40:02 2018
@@ -195,14 +195,10 @@ llvm::Optional<SymbolLocation> getSymbol
auto TokenLength = clang::Lexer::MeasureTokenLength(NameLoc, SM, LangOpts);
auto CreatePosition = [&SM](SourceLocation Loc) {
- auto FileIdAndOffset = SM.getDecomposedLoc(Loc);
- auto FileId = FileIdAndOffset.first;
- auto Offset = FileIdAndOffset.second;
+ auto LSPLoc = sourceLocToPosition(SM, Loc);
SymbolLocation::Position Pos;
- // Position is 0-based while SourceManager is 1-based.
- Pos.Line = SM.getLineNumber(FileId, Offset) - 1;
- // FIXME: Use UTF-16 code units, not UTF-8 bytes.
- Pos.Column = SM.getColumnNumber(FileId, Offset) - 1;
+ Pos.Line = LSPLoc.line;
+ Pos.Column = LSPLoc.character;
return Pos;
};
Modified: clang-tools-extra/trunk/unittests/clangd/SymbolCollectorTests.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/unittests/clangd/SymbolCollectorTests.cpp?rev=331168&r1=331167&r2=331168&view=diff
==============================================================================
--- clang-tools-extra/trunk/unittests/clangd/SymbolCollectorTests.cpp (original)
+++ clang-tools-extra/trunk/unittests/clangd/SymbolCollectorTests.cpp Mon Apr 30 04:40:02 2018
@@ -689,6 +689,15 @@ TEST_F(SymbolCollectorTest, ClassForward
IncludeHeader(TestHeaderURI), DefURI(TestFileURI))));
}
+TEST_F(SymbolCollectorTest, UTF16Character) {
+ // ö is 2-bytes.
+ Annotations Header(/*Header=*/"class [[pörk]] {};");
+ runSymbolCollector(Header.code(), /*Main=*/"");
+ EXPECT_THAT(Symbols, UnorderedElementsAre(
+ AllOf(QName("pörk"), DeclRange(Header.range()))));
+}
+
+
} // namespace
} // namespace clangd
} // namespace clang
More information about the cfe-commits
mailing list