[PATCH] D143214: [include-mapping] Add C-compatibility symbol entries.
Kadir Cetinkaya via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Feb 8 04:26:14 PST 2023
kadircet added inline comments.
================
Comment at: clang-tools-extra/clangd/unittests/StdLibTests.cpp:37
EXPECT_THAT(CXX, HasSubstr("#include <cstdio>"));
- EXPECT_THAT(CXX, Not(HasSubstr("#include <stdio.h>")));
+ EXPECT_THAT(CXX, HasSubstr("#include <stdio.h>"));
----------------
hokein wrote:
> This is a behavior change, I think it is probably fine. Would be nice to have a second look.
let's change it to `stdatomic.h` instead.
================
Comment at: clang/lib/Tooling/Inclusions/Stdlib/StandardLibrary.cpp:217
+NSSymbolMap *Recognizer::namespaceSymbols(const NamespaceDecl *D, Lang L) {
+ // D could be nullptr!
auto It = NamespaceCache.find(D);
----------------
nit: i think it's better to early-exit when D is nullptr rather than thinking about that in the rest of the logic.
================
Comment at: clang/unittests/Tooling/StandardLibraryTest.cpp:68
EXPECT_THAT(stdlib::Symbol::all(), Contains(*Vector));
- EXPECT_FALSE(stdlib::Header::named("<stdint.h>"));
- EXPECT_FALSE(stdlib::Header::named("<stdint.h>", stdlib::Lang::CXX));
+ EXPECT_TRUE(stdlib::Header::named("<stdint.h>", stdlib::Lang::CXX));
EXPECT_TRUE(stdlib::Header::named("<stdint.h>", stdlib::Lang::C));
----------------
as mentioned above, you can use `stdatomic.h` instead
================
Comment at: clang/unittests/Tooling/StandardLibraryTest.cpp:68
EXPECT_THAT(stdlib::Symbol::all(), Contains(*Vector));
- EXPECT_FALSE(stdlib::Header::named("<stdint.h>"));
- EXPECT_FALSE(stdlib::Header::named("<stdint.h>", stdlib::Lang::CXX));
+ EXPECT_TRUE(stdlib::Header::named("<stdint.h>", stdlib::Lang::CXX));
EXPECT_TRUE(stdlib::Header::named("<stdint.h>", stdlib::Lang::C));
----------------
kadircet wrote:
> as mentioned above, you can use `stdatomic.h` instead
maybe put everything below into a separate test for CCompat?
================
Comment at: clang/unittests/Tooling/StandardLibraryTest.cpp:71
- EXPECT_FALSE(stdlib::Symbol::named("", "int16_t"));
- EXPECT_FALSE(stdlib::Symbol::named("", "int16_t", stdlib::Lang::CXX));
+ EXPECT_TRUE(stdlib::Symbol::named("", "int16_t", stdlib::Lang::CXX));
EXPECT_TRUE(stdlib::Symbol::named("", "int16_t", stdlib::Lang::C));
----------------
having a more comprehensive test here might be useful, e.g. check that `std::int16_t` only exists in C++ and just has <cstdint> as a provider. `int16_t` exists both in C and C++ with relevant providers
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D143214/new/
https://reviews.llvm.org/D143214
More information about the cfe-commits
mailing list