zyounan updated this revision to Diff 496934. zyounan added a comment. Rebase to main && Move tests to clang/Tooling
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D142836/new/ https://reviews.llvm.org/D142836 Files: clang/lib/Tooling/Inclusions/Stdlib/StandardLibrary.cpp clang/lib/Tooling/Inclusions/Stdlib/StdTsSymbolMap.inc clang/unittests/Tooling/StandardLibraryTest.cpp
Index: clang/unittests/Tooling/StandardLibraryTest.cpp =================================================================== --- clang/unittests/Tooling/StandardLibraryTest.cpp +++ clang/unittests/Tooling/StandardLibraryTest.cpp @@ -79,6 +79,41 @@ EXPECT_FALSE(stdlib::Header::named("<ios646.h>", stdlib::Lang::CXX)); } +TEST(StdlibTest, Experimental) { + EXPECT_TRUE( + stdlib::Header::named("<experimental/filesystem>", stdlib::Lang::CXX)); + + auto Symbol = + stdlib::Symbol::named("std::experimental::filesystem::", "path"); + EXPECT_TRUE(Symbol); + EXPECT_EQ(Symbol->scope(), "std::experimental::filesystem::"); + EXPECT_EQ(Symbol->name(), "path"); + EXPECT_EQ(Symbol->qualifiedName(), "std::experimental::filesystem::path"); + + // system_complete is replaced by std::filesystem::absolute + Symbol = stdlib::Symbol::named("std::filesystem::", "system_complete"); + EXPECT_FALSE(Symbol); + Symbol = stdlib::Symbol::named("std::experimental::filesystem::", + "system_complete"); + EXPECT_TRUE(Symbol); + EXPECT_EQ(Symbol->scope(), "std::experimental::filesystem::"); + EXPECT_EQ(Symbol->name(), "system_complete"); + EXPECT_EQ(Symbol->qualifiedName(), + "std::experimental::filesystem::system_complete"); + + // relative-path-related operation is introduced by P0219 + Symbol = stdlib::Symbol::named("std::filesystem::", "relative"); + EXPECT_TRUE(Symbol); + Symbol = stdlib::Symbol::named("std::experimental::filesystem::", "relative"); + EXPECT_FALSE(Symbol); + Symbol = + stdlib::Symbol::named("std::experimental::filesystem::", "proximate"); + EXPECT_FALSE(Symbol); + Symbol = stdlib::Symbol::named("std::experimental::filesystem::", + "weakly_canonical"); + EXPECT_FALSE(Symbol); +} + TEST(StdlibTest, CCompat) { EXPECT_THAT( stdlib::Symbol::named("", "int16_t", stdlib::Lang::CXX)->headers(), Index: clang/lib/Tooling/Inclusions/Stdlib/StdTsSymbolMap.inc =================================================================== --- /dev/null +++ clang/lib/Tooling/Inclusions/Stdlib/StdTsSymbolMap.inc @@ -0,0 +1,57 @@ +// These symbols are exported from N4100[fs.filesystem.synopsis], the final +// draft for experimental filesystem. Note that not all of these symbols were +// merged into C++17 (See P0492 and related proposals for details). But the +// cornerstone for mainstream Stdlib TS filesystem implementation is N4100, +// whatever. +// clang-format off +SYMBOL(absolute, std::experimental::filesystem::, <experimental/filesystem>) +SYMBOL(canonical, std::experimental::filesystem::, <experimental/filesystem>) +SYMBOL(copy, std::experimental::filesystem::, <experimental/filesystem>) +SYMBOL(copy_file, std::experimental::filesystem::, <experimental/filesystem>) +SYMBOL(copy_options, std::experimental::filesystem::, <experimental/filesystem>) +SYMBOL(copy_symlink, std::experimental::filesystem::, <experimental/filesystem>) +SYMBOL(create_directories, std::experimental::filesystem::, <experimental/filesystem>) +SYMBOL(create_directory, std::experimental::filesystem::, <experimental/filesystem>) +SYMBOL(create_directory_symlink, std::experimental::filesystem::, <experimental/filesystem>) +SYMBOL(create_hard_link, std::experimental::filesystem::, <experimental/filesystem>) +SYMBOL(create_symlink, std::experimental::filesystem::, <experimental/filesystem>) +SYMBOL(current_path, std::experimental::filesystem::, <experimental/filesystem>) +SYMBOL(directory_entry, std::experimental::filesystem::, <experimental/filesystem>) +SYMBOL(directory_iterator, std::experimental::filesystem::, <experimental/filesystem>) +SYMBOL(directory_options, std::experimental::filesystem::, <experimental/filesystem>) +SYMBOL(equivalent, std::experimental::filesystem::, <experimental/filesystem>) +SYMBOL(exists, std::experimental::filesystem::, <experimental/filesystem>) +SYMBOL(file_size, std::experimental::filesystem::, <experimental/filesystem>) +SYMBOL(file_status, std::experimental::filesystem::, <experimental/filesystem>) +SYMBOL(file_time_type, std::experimental::filesystem::, <experimental/filesystem>) +SYMBOL(file_type, std::experimental::filesystem::, <experimental/filesystem>) +SYMBOL(filesystem_error, std::experimental::filesystem::, <experimental/filesystem>) +SYMBOL(hard_link_count, std::experimental::filesystem::, <experimental/filesystem>) +SYMBOL(is_block_file, std::experimental::filesystem::, <experimental/filesystem>) +SYMBOL(is_character_file, std::experimental::filesystem::, <experimental/filesystem>) +SYMBOL(is_directory, std::experimental::filesystem::, <experimental/filesystem>) +SYMBOL(is_empty, std::experimental::filesystem::, <experimental/filesystem>) +SYMBOL(is_fifo, std::experimental::filesystem::, <experimental/filesystem>) +SYMBOL(is_other, std::experimental::filesystem::, <experimental/filesystem>) +SYMBOL(is_regular_file, std::experimental::filesystem::, <experimental/filesystem>) +SYMBOL(is_socket, std::experimental::filesystem::, <experimental/filesystem>) +SYMBOL(is_symlink, std::experimental::filesystem::, <experimental/filesystem>) +SYMBOL(last_write_time, std::experimental::filesystem::, <experimental/filesystem>) +SYMBOL(path, std::experimental::filesystem::, <experimental/filesystem>) +SYMBOL(permissions, std::experimental::filesystem::, <experimental/filesystem>) +SYMBOL(perms, std::experimental::filesystem::, <experimental/filesystem>) +SYMBOL(read_symlink, std::experimental::filesystem::, <experimental/filesystem>) +SYMBOL(recursive_directory_iterator, std::experimental::filesystem::, <experimental/filesystem>) +SYMBOL(remove, std::experimental::filesystem::, <experimental/filesystem>) +SYMBOL(remove_all, std::experimental::filesystem::, <experimental/filesystem>) +SYMBOL(rename, std::experimental::filesystem::, <experimental/filesystem>) +SYMBOL(resize_file, std::experimental::filesystem::, <experimental/filesystem>) +SYMBOL(space, std::experimental::filesystem::, <experimental/filesystem>) +SYMBOL(space_info, std::experimental::filesystem::, <experimental/filesystem>) +SYMBOL(status, std::experimental::filesystem::, <experimental/filesystem>) +SYMBOL(status_known, std::experimental::filesystem::, <experimental/filesystem>) +SYMBOL(symlink_status, std::experimental::filesystem::, <experimental/filesystem>) +SYMBOL(system_complete, std::experimental::filesystem::, <experimental/filesystem>) +SYMBOL(temp_directory_path, std::experimental::filesystem::, <experimental/filesystem>) +SYMBOL(u8path, std::experimental::filesystem::, <experimental/filesystem>) +// clang-format on Index: clang/lib/Tooling/Inclusions/Stdlib/StandardLibrary.cpp =================================================================== --- clang/lib/Tooling/Inclusions/Stdlib/StandardLibrary.cpp +++ clang/lib/Tooling/Inclusions/Stdlib/StandardLibrary.cpp @@ -63,6 +63,7 @@ case Lang::CXX: #include "StdSymbolMap.inc" #include "StdSpecialSymbolMap.inc" +#include "StdTsSymbolMap.inc" break; } #undef SYMBOL @@ -132,6 +133,7 @@ case Lang::CXX: #include "StdSymbolMap.inc" #include "StdSpecialSymbolMap.inc" +#include "StdTsSymbolMap.inc" break; } #undef SYMBOL
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits