From 9c1af474b8bb2b86e0596f34453c711d2c185ffe Mon Sep 17 00:00:00 2001 From: Ilya Biryukov Date: Wed, 19 Jun 2019 13:56:36 +0000 Subject: [PATCH] [Syntax] Fix a crash when dumping empty token buffer git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@363801 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Tooling/Syntax/Tokens.cpp | 6 +++--- unittests/Tooling/Syntax/TokensTest.cpp | 8 ++++++++ 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/lib/Tooling/Syntax/Tokens.cpp b/lib/Tooling/Syntax/Tokens.cpp index e22623741c..b4ecb85248 100644 --- a/lib/Tooling/Syntax/Tokens.cpp +++ b/lib/Tooling/Syntax/Tokens.cpp @@ -477,8 +477,7 @@ std::string TokenBuffer::dumpForTests() const { auto DumpTokens = [this, &PrintToken](llvm::raw_ostream &OS, llvm::ArrayRef Tokens) { - if (Tokens.size() == 1) { - assert(Tokens[0].kind() == tok::eof); + if (Tokens.empty()) { OS << ""; return; } @@ -495,7 +494,8 @@ std::string TokenBuffer::dumpForTests() const { OS << "expanded tokens:\n" << " "; - DumpTokens(OS, ExpandedTokens); + // (!) we do not show ''. + DumpTokens(OS, llvm::makeArrayRef(ExpandedTokens).drop_back()); OS << "\n"; std::vector Keys; diff --git a/unittests/Tooling/Syntax/TokensTest.cpp b/unittests/Tooling/Syntax/TokensTest.cpp index 34c80fce2a..a812b844c8 100644 --- a/unittests/Tooling/Syntax/TokensTest.cpp +++ b/unittests/Tooling/Syntax/TokensTest.cpp @@ -290,6 +290,14 @@ file './input.cpp' # pragma GCC visibility push ( public ) # pragma GCC visibility pop mappings: ['#'_0, ''_13) => [''_0, ''_0) +)"}, + // Empty files should not crash. + {R"cpp()cpp", R"(expanded tokens: + +file './input.cpp' + spelled tokens: + + no mappings. )"}}; for (auto &Test : TestCases) EXPECT_EQ(collectAndDump(Test.first), Test.second) -- 2.40.0