[clangd] Explicitly initialize all primitive fields in Protocol.h
Summary:
Some of the existing structs had primimtive fields that were
not explicitly initialized on construction.
After this commit every struct consistently sets a defined value for
every field when default-initialized.
Reviewers: hokein, ioeric, sammccall
Reviewed By: sammccall
Subscribers: klimek, cfe-commits, jkorous-apple
Differential Revision: https://reviews.llvm.org/D43230
llvm-svn: 325113
diff --git a/clang-tools-extra/unittests/clangd/ClangdTests.cpp b/clang-tools-extra/unittests/clangd/ClangdTests.cpp
index 65e5ea8..4bd2cb2 100644
--- a/clang-tools-extra/unittests/clangd/ClangdTests.cpp
+++ b/clang-tools-extra/unittests/clangd/ClangdTests.cpp
@@ -280,15 +280,13 @@
// thread.
FS.Tag = "123";
Server.addDocument(FooCpp, SourceContents);
- EXPECT_EQ(runCodeComplete(Server, FooCpp, Position{0, 0}, CCOpts).Tag,
- FS.Tag);
+ EXPECT_EQ(runCodeComplete(Server, FooCpp, Position(), CCOpts).Tag, FS.Tag);
EXPECT_EQ(DiagConsumer.lastVFSTag(), FS.Tag);
FS.Tag = "321";
Server.addDocument(FooCpp, SourceContents);
EXPECT_EQ(DiagConsumer.lastVFSTag(), FS.Tag);
- EXPECT_EQ(runCodeComplete(Server, FooCpp, Position{0, 0}, CCOpts).Tag,
- FS.Tag);
+ EXPECT_EQ(runCodeComplete(Server, FooCpp, Position(), CCOpts).Tag, FS.Tag);
}
// Only enable this test on Unix
@@ -451,16 +449,16 @@
Server.addDocument(FooCpp, "int main() {}");
EXPECT_EQ(Server.dumpAST(FooCpp), "<no-ast>");
- EXPECT_ERROR(Server.findDefinitions(FooCpp, Position{0, 0}));
- EXPECT_ERROR(Server.findDocumentHighlights(FooCpp, Position{0, 0}));
- EXPECT_ERROR(Server.rename(FooCpp, Position{0, 0}, "new_name"));
+ EXPECT_ERROR(Server.findDefinitions(FooCpp, Position()));
+ EXPECT_ERROR(Server.findDocumentHighlights(FooCpp, Position()));
+ EXPECT_ERROR(Server.rename(FooCpp, Position(), "new_name"));
// FIXME: codeComplete and signatureHelp should also return errors when they
// can't parse the file.
- EXPECT_THAT(runCodeComplete(Server, FooCpp, Position{0, 0},
- clangd::CodeCompleteOptions())
- .Value.items,
- IsEmpty());
- auto SigHelp = Server.signatureHelp(FooCpp, Position{0, 0});
+ EXPECT_THAT(
+ runCodeComplete(Server, FooCpp, Position(), clangd::CodeCompleteOptions())
+ .Value.items,
+ IsEmpty());
+ auto SigHelp = Server.signatureHelp(FooCpp, Position());
ASSERT_TRUE(bool(SigHelp)) << "signatureHelp returned an error";
EXPECT_THAT(SigHelp->Value.signatures, IsEmpty());
}
@@ -642,7 +640,9 @@
if (ReqStats[FileIndex].FileIsRemoved)
AddDocument(FileIndex);
- Position Pos{LineDist(RandGen), ColumnDist(RandGen)};
+ Position Pos;
+ Pos.line = LineDist(RandGen);
+ Pos.character = ColumnDist(RandGen);
// FIXME(ibiryukov): Also test async completion requests.
// Simply putting CodeCompletion into async requests now would make
// tests slow, since there's no way to cancel previous completion
@@ -659,7 +659,10 @@
if (ReqStats[FileIndex].FileIsRemoved)
AddDocument(FileIndex);
- Position Pos{LineDist(RandGen), ColumnDist(RandGen)};
+ Position Pos;
+ Pos.line = LineDist(RandGen);
+ Pos.character = ColumnDist(RandGen);
+
ASSERT_TRUE(!!Server.findDefinitions(FilePaths[FileIndex], Pos));
};
diff --git a/clang-tools-extra/unittests/clangd/SourceCodeTests.cpp b/clang-tools-extra/unittests/clangd/SourceCodeTests.cpp
index 8bfae7b..86c8a09 100644
--- a/clang-tools-extra/unittests/clangd/SourceCodeTests.cpp
+++ b/clang-tools-extra/unittests/clangd/SourceCodeTests.cpp
@@ -23,32 +23,40 @@
1:0 = 8
2:0 = 16)";
+/// A helper to make tests easier to read.
+Position position(int line, int character) {
+ Position Pos;
+ Pos.line = line;
+ Pos.character = character;
+ return Pos;
+}
+
TEST(SourceCodeTests, PositionToOffset) {
// line out of bounds
- EXPECT_EQ(0u, positionToOffset(File, Position{-1, 2}));
+ EXPECT_EQ(0u, positionToOffset(File, position(-1, 2)));
// first line
- EXPECT_EQ(0u, positionToOffset(File, Position{0, -1})); // out of range
- EXPECT_EQ(0u, positionToOffset(File, Position{0, 0})); // first character
- EXPECT_EQ(3u, positionToOffset(File, Position{0, 3})); // middle character
- EXPECT_EQ(6u, positionToOffset(File, Position{0, 6})); // last character
- EXPECT_EQ(7u, positionToOffset(File, Position{0, 7})); // the newline itself
- EXPECT_EQ(8u, positionToOffset(File, Position{0, 8})); // out of range
+ EXPECT_EQ(0u, positionToOffset(File, position(0, -1))); // out of range
+ EXPECT_EQ(0u, positionToOffset(File, position(0, 0))); // first character
+ EXPECT_EQ(3u, positionToOffset(File, position(0, 3))); // middle character
+ EXPECT_EQ(6u, positionToOffset(File, position(0, 6))); // last character
+ EXPECT_EQ(7u, positionToOffset(File, position(0, 7))); // the newline itself
+ EXPECT_EQ(8u, positionToOffset(File, position(0, 8))); // out of range
// middle line
- EXPECT_EQ(8u, positionToOffset(File, Position{1, -1})); // out of range
- EXPECT_EQ(8u, positionToOffset(File, Position{1, 0})); // first character
- EXPECT_EQ(11u, positionToOffset(File, Position{1, 3})); // middle character
- EXPECT_EQ(14u, positionToOffset(File, Position{1, 6})); // last character
- EXPECT_EQ(15u, positionToOffset(File, Position{1, 7})); // the newline itself
- EXPECT_EQ(16u, positionToOffset(File, Position{1, 8})); // out of range
+ EXPECT_EQ(8u, positionToOffset(File, position(1, -1))); // out of range
+ EXPECT_EQ(8u, positionToOffset(File, position(1, 0))); // first character
+ EXPECT_EQ(11u, positionToOffset(File, position(1, 3))); // middle character
+ EXPECT_EQ(14u, positionToOffset(File, position(1, 6))); // last character
+ EXPECT_EQ(15u, positionToOffset(File, position(1, 7))); // the newline itself
+ EXPECT_EQ(16u, positionToOffset(File, position(1, 8))); // out of range
// last line
- EXPECT_EQ(16u, positionToOffset(File, Position{2, -1})); // out of range
- EXPECT_EQ(16u, positionToOffset(File, Position{2, 0})); // first character
- EXPECT_EQ(19u, positionToOffset(File, Position{2, 3})); // middle character
- EXPECT_EQ(23u, positionToOffset(File, Position{2, 7})); // last character
- EXPECT_EQ(24u, positionToOffset(File, Position{2, 8})); // EOF
- EXPECT_EQ(24u, positionToOffset(File, Position{2, 9})); // out of range
+ EXPECT_EQ(16u, positionToOffset(File, position(2, -1))); // out of range
+ EXPECT_EQ(16u, positionToOffset(File, position(2, 0))); // first character
+ EXPECT_EQ(19u, positionToOffset(File, position(2, 3))); // middle character
+ EXPECT_EQ(23u, positionToOffset(File, position(2, 7))); // last character
+ EXPECT_EQ(24u, positionToOffset(File, position(2, 8))); // EOF
+ EXPECT_EQ(24u, positionToOffset(File, position(2, 9))); // out of range
// line out of bounds
- EXPECT_EQ(24u, positionToOffset(File, Position{3, 1}));
+ EXPECT_EQ(24u, positionToOffset(File, position(3, 1)));
}
TEST(SourceCodeTests, OffsetToPosition) {