diff --git a/clang-tools-extra/clangd/index/CanonicalIncludes.cpp b/clang-tools-extra/clangd/index/CanonicalIncludes.cpp index 41d195f81298e8..0c61a7bd7e9292 100644 --- a/clang-tools-extra/clangd/index/CanonicalIncludes.cpp +++ b/clang-tools-extra/clangd/index/CanonicalIncludes.cpp @@ -716,8 +716,6 @@ llvm::StringRef CanonicalIncludes::mapSymbol(llvm::StringRef Scope, // There are two std::move()s, this is by far the most common. if (Scope == "std::" && Name == "move") return ""; - if (Scope == "std::" && Name == "size_t") - return ""; if (auto StdSym = tooling::stdlib::Symbol::named(Scope, Name, Lang)) return StdSym->header().name(); return ""; diff --git a/clang-tools-extra/clangd/unittests/CanonicalIncludesTests.cpp b/clang-tools-extra/clangd/unittests/CanonicalIncludesTests.cpp index dfde5594956ef8..0d6731ca59581f 100644 --- a/clang-tools-extra/clangd/unittests/CanonicalIncludesTests.cpp +++ b/clang-tools-extra/clangd/unittests/CanonicalIncludesTests.cpp @@ -51,6 +51,7 @@ TEST(CanonicalIncludesTest, CXXStandardLibrary) { EXPECT_EQ("", CI.mapSymbol("std::", "printf", Language)); // std::move is ambiguous, currently always mapped to EXPECT_EQ("", CI.mapSymbol("std::", "move", Language)); + EXPECT_EQ("", CI.mapSymbol("std::", "size_t", Language)); // Unknown std symbols aren't mapped. EXPECT_EQ("", CI.mapSymbol("std::", "notathing", Language)); // iosfwd declares some symbols it doesn't own. diff --git a/clang/lib/Tooling/Inclusions/Stdlib/StandardLibrary.cpp b/clang/lib/Tooling/Inclusions/Stdlib/StandardLibrary.cpp index 0340a9151424dd..2f8537951a0f3e 100644 --- a/clang/lib/Tooling/Inclusions/Stdlib/StandardLibrary.cpp +++ b/clang/lib/Tooling/Inclusions/Stdlib/StandardLibrary.cpp @@ -62,6 +62,7 @@ static int countSymbols(Lang Language) { break; case Lang::CXX: #include "StdSymbolMap.inc" +#include "StdSpecialSymbolMap.inc" break; } #undef SYMBOL @@ -130,6 +131,7 @@ static int initialize(Lang Language) { break; case Lang::CXX: #include "StdSymbolMap.inc" +#include "StdSpecialSymbolMap.inc" break; } #undef SYMBOL diff --git a/clang/unittests/Tooling/StandardLibraryTest.cpp b/clang/unittests/Tooling/StandardLibraryTest.cpp index aac13579a5f172..c7b83aa36195e5 100644 --- a/clang/unittests/Tooling/StandardLibraryTest.cpp +++ b/clang/unittests/Tooling/StandardLibraryTest.cpp @@ -62,6 +62,16 @@ TEST(StdlibTest, All) { ElementsAre(stdlib::Header::named(""), stdlib::Header::named(""), stdlib::Header::named(""))); + EXPECT_THAT(stdlib::Symbol::named("std::", "size_t")->headers(), + ElementsAre(stdlib::Header::named(""), + stdlib::Header::named(""), + stdlib::Header::named(""), + stdlib::Header::named(""), + stdlib::Header::named(""), + stdlib::Header::named(""), + stdlib::Header::named(""))); + EXPECT_EQ(stdlib::Symbol::named("std::", "size_t")->header(), + stdlib::Header::named("")); EXPECT_THAT(stdlib::Header::all(), Contains(*VectorH)); EXPECT_THAT(stdlib::Symbol::all(), Contains(*Vector));