summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang/lib/Tooling/Syntax/Tokens.cpp6
-rw-r--r--clang/unittests/Tooling/Syntax/TokensTest.cpp8
2 files changed, 11 insertions, 3 deletions
diff --git a/clang/lib/Tooling/Syntax/Tokens.cpp b/clang/lib/Tooling/Syntax/Tokens.cpp
index e22623741c4..b4ecb852483 100644
--- a/clang/lib/Tooling/Syntax/Tokens.cpp
+++ b/clang/lib/Tooling/Syntax/Tokens.cpp
@@ -477,8 +477,7 @@ std::string TokenBuffer::dumpForTests() const {
auto DumpTokens = [this, &PrintToken](llvm::raw_ostream &OS,
llvm::ArrayRef<syntax::Token> Tokens) {
- if (Tokens.size() == 1) {
- assert(Tokens[0].kind() == tok::eof);
+ if (Tokens.empty()) {
OS << "<empty>";
return;
}
@@ -495,7 +494,8 @@ std::string TokenBuffer::dumpForTests() const {
OS << "expanded tokens:\n"
<< " ";
- DumpTokens(OS, ExpandedTokens);
+ // (!) we do not show '<eof>'.
+ DumpTokens(OS, llvm::makeArrayRef(ExpandedTokens).drop_back());
OS << "\n";
std::vector<FileID> Keys;
diff --git a/clang/unittests/Tooling/Syntax/TokensTest.cpp b/clang/unittests/Tooling/Syntax/TokensTest.cpp
index 34c80fce2a3..a812b844c85 100644
--- a/clang/unittests/Tooling/Syntax/TokensTest.cpp
+++ b/clang/unittests/Tooling/Syntax/TokensTest.cpp
@@ -290,6 +290,14 @@ file './input.cpp'
# pragma GCC visibility push ( public ) # pragma GCC visibility pop
mappings:
['#'_0, '<eof>'_13) => ['<eof>'_0, '<eof>'_0)
+)"},
+ // Empty files should not crash.
+ {R"cpp()cpp", R"(expanded tokens:
+ <empty>
+file './input.cpp'
+ spelled tokens:
+ <empty>
+ no mappings.
)"}};
for (auto &Test : TestCases)
EXPECT_EQ(collectAndDump(Test.first), Test.second)
OpenPOWER on IntegriCloud