[PATCH] D53400: [clangd] Remove the overflow log.
Haojian Wu via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Fri Oct 19 01:12:34 PDT 2018
hokein updated this revision to Diff 170157.
hokein marked an inline comment as done.
hokein added a comment.
Log the whole location when overflow happens.
Repository:
rCTE Clang Tools Extra
https://reviews.llvm.org/D53400
Files:
clangd/XRefs.cpp
clangd/index/Index.cpp
clangd/index/Index.h
unittests/clangd/IndexTests.cpp
Index: unittests/clangd/IndexTests.cpp
===================================================================
--- unittests/clangd/IndexTests.cpp
+++ unittests/clangd/IndexTests.cpp
@@ -46,10 +46,15 @@
EXPECT_EQ(1u, Pos.line());
Pos.setColumn(2);
EXPECT_EQ(2u, Pos.column());
+ EXPECT_FALSE(Pos.hasOverflow());
Pos.setLine(Position::MaxLine + 1); // overflow
+ EXPECT_TRUE(Pos.hasOverflow());
EXPECT_EQ(Pos.line(), Position::MaxLine);
+ Pos.setLine(1); // reset the overflowed line.
+
Pos.setColumn(Position::MaxColumn + 1); // overflow
+ EXPECT_TRUE(Pos.hasOverflow());
EXPECT_EQ(Pos.column(), Position::MaxColumn);
}
Index: clangd/index/Index.h
===================================================================
--- clangd/index/Index.h
+++ clangd/index/Index.h
@@ -42,6 +42,10 @@
void setColumn(uint32_t Column);
uint32_t column() const { return Column; }
+ bool hasOverflow() const {
+ return Line >= MaxLine || Column >= MaxColumn;
+ }
+
static constexpr uint32_t MaxLine = (1 << 20) - 1;
static constexpr uint32_t MaxColumn = (1 << 12) - 1;
Index: clangd/index/Index.cpp
===================================================================
--- clangd/index/Index.cpp
+++ clangd/index/Index.cpp
@@ -23,15 +23,13 @@
constexpr uint32_t SymbolLocation::Position::MaxColumn;
void SymbolLocation::Position::setLine(uint32_t L) {
if (L > MaxLine) {
- log("Set an overflowed Line {0}", L);
Line = MaxLine;
return;
}
Line = L;
}
void SymbolLocation::Position::setColumn(uint32_t Col) {
if (Col > MaxColumn) {
- log("Set an overflowed Column {0}", Col);
Column = MaxColumn;
return;
}
Index: clangd/XRefs.cpp
===================================================================
--- clangd/XRefs.cpp
+++ clangd/XRefs.cpp
@@ -37,6 +37,11 @@
return nullptr;
}
+void logIfOverflow(const SymbolLocation Loc) {
+ if (Loc.Start.hasOverflow() || Loc.End.hasOverflow())
+ log("Possible overflow in symbol location: {0}", Loc);
+}
+
// Convert a SymbolLocation to LSP's Location.
// HintPath is used to resolve the path of URI.
// FIXME: figure out a good home for it, and share the implementation with
@@ -61,6 +66,7 @@
LSPLoc.range.start.character = Loc.Start.column();
LSPLoc.range.end.line = Loc.End.line();
LSPLoc.range.end.character = Loc.End.column();
+ logIfOverflow(Loc);
return LSPLoc;
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D53400.170157.patch
Type: text/x-patch
Size: 2418 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20181019/6ed778dc/attachment.bin>
More information about the cfe-commits
mailing list