[clangd] Fix ParsedASTTest.TopLevelDecls test.

Google test matcher `DeclKind` uses `NamedDecl::getDeclKindName()` to compare its result with expected declaration name.
Both, returned value of this function and the expected kind name argument have type `const char *`, so this matcher effectively
compares two pointers instead of the respective strings.

The test was passing on most platforms because compilers mostly were able to coalesce these string literals.

Patch By: Ilya Golovenko

Reviewed By: hokein

Differential Revision: https://reviews.llvm.org/D90384
This commit is contained in:
Ilya Golovenko 2020-11-02 08:25:45 +01:00 committed by Haojian Wu
parent 40f7ac1a8f
commit 6d15a28a85
1 changed files with 2 additions and 3 deletions

View File

@ -59,7 +59,7 @@ MATCHER_P(DeclNamed, Name, "") {
MATCHER_P(DeclKind, Kind, "") {
if (NamedDecl *ND = dyn_cast<NamedDecl>(arg))
if (ND->getDeclKindName() == Kind)
if (ND->getDeclKindName() == llvm::StringRef(Kind))
return true;
if (auto *Stream = result_listener->stream()) {
llvm::raw_os_ostream OS(*Stream);
@ -104,8 +104,7 @@ MATCHER(EqInc, "") {
std::tie(Expected.HashLine, Expected.Written);
}
// FIXME: figure out why it fails on clang-ppc64le-rhel buildbot.
TEST(ParsedASTTest, DISABLED_TopLevelDecls) {
TEST(ParsedASTTest, TopLevelDecls) {
TestTU TU;
TU.HeaderCode = R"(
int header1();