zyounan updated this revision to Diff 496875. zyounan added a comment. Revise symbols from N4100
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D142836/new/ https://reviews.llvm.org/D142836 Files: clang-tools-extra/clangd/unittests/CanonicalIncludesTests.cpp clang/include/clang/Tooling/Inclusions/StdSymbolMap.inc Index: clang/include/clang/Tooling/Inclusions/StdSymbolMap.inc =================================================================== --- clang/include/clang/Tooling/Inclusions/StdSymbolMap.inc +++ clang/include/clang/Tooling/Inclusions/StdSymbolMap.inc @@ -1465,6 +1465,63 @@ SYMBOL(temp_directory_path, std::filesystem::, <filesystem>) SYMBOL(u8path, std::filesystem::, <filesystem>) SYMBOL(weakly_canonical, std::filesystem::, <filesystem>) +// 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 SYMBOL(basic_string, std::pmr::, <string>) SYMBOL(deque, std::pmr::, <deque>) SYMBOL(forward_list, std::pmr::, <forward_list>) Index: clang-tools-extra/clangd/unittests/CanonicalIncludesTests.cpp =================================================================== --- clang-tools-extra/clangd/unittests/CanonicalIncludesTests.cpp +++ clang-tools-extra/clangd/unittests/CanonicalIncludesTests.cpp @@ -62,6 +62,27 @@ EXPECT_EQ("<iosfwd>", CI.mapHeader(File)); } +TEST(CanonicalIncludesTest, CXXStandardLibraryExperimentalFilesystem) { + CanonicalIncludes CI; + auto Language = LangOptions(); + Language.CPlusPlus = true; + CI.addSystemHeadersMapping(Language); + + EXPECT_EQ("<experimental/filesystem>", + CI.mapSymbol("std::experimental::filesystem::path")); + EXPECT_EQ("<experimental/filesystem>", + CI.mapSymbol("std::experimental::filesystem::directory_iterator")); + // system_complete is replaced by std::filesystem::absolute + EXPECT_EQ("<experimental/filesystem>", + CI.mapSymbol("std::experimental::filesystem::system_complete")); + EXPECT_EQ("", CI.mapSymbol("std::filesystem::system_complete")); + // relative-related operation is introduced by P0219 + EXPECT_EQ("", CI.mapSymbol("std::experimental::filesystem::relative")); + EXPECT_EQ("", CI.mapSymbol("std::experimental::filesystem::proximate")); + EXPECT_EQ("", + CI.mapSymbol("std::experimental::filesystem::weakly_canonical")); +} + TEST(CanonicalIncludesTest, PathMapping) { auto InMemFS = llvm::makeIntrusiveRefCnt<llvm::vfs::InMemoryFileSystem>(); FileManager Files(FileSystemOptions(), InMemFS);
Index: clang/include/clang/Tooling/Inclusions/StdSymbolMap.inc =================================================================== --- clang/include/clang/Tooling/Inclusions/StdSymbolMap.inc +++ clang/include/clang/Tooling/Inclusions/StdSymbolMap.inc @@ -1465,6 +1465,63 @@ SYMBOL(temp_directory_path, std::filesystem::, <filesystem>) SYMBOL(u8path, std::filesystem::, <filesystem>) SYMBOL(weakly_canonical, std::filesystem::, <filesystem>) +// 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 SYMBOL(basic_string, std::pmr::, <string>) SYMBOL(deque, std::pmr::, <deque>) SYMBOL(forward_list, std::pmr::, <forward_list>) Index: clang-tools-extra/clangd/unittests/CanonicalIncludesTests.cpp =================================================================== --- clang-tools-extra/clangd/unittests/CanonicalIncludesTests.cpp +++ clang-tools-extra/clangd/unittests/CanonicalIncludesTests.cpp @@ -62,6 +62,27 @@ EXPECT_EQ("<iosfwd>", CI.mapHeader(File)); } +TEST(CanonicalIncludesTest, CXXStandardLibraryExperimentalFilesystem) { + CanonicalIncludes CI; + auto Language = LangOptions(); + Language.CPlusPlus = true; + CI.addSystemHeadersMapping(Language); + + EXPECT_EQ("<experimental/filesystem>", + CI.mapSymbol("std::experimental::filesystem::path")); + EXPECT_EQ("<experimental/filesystem>", + CI.mapSymbol("std::experimental::filesystem::directory_iterator")); + // system_complete is replaced by std::filesystem::absolute + EXPECT_EQ("<experimental/filesystem>", + CI.mapSymbol("std::experimental::filesystem::system_complete")); + EXPECT_EQ("", CI.mapSymbol("std::filesystem::system_complete")); + // relative-related operation is introduced by P0219 + EXPECT_EQ("", CI.mapSymbol("std::experimental::filesystem::relative")); + EXPECT_EQ("", CI.mapSymbol("std::experimental::filesystem::proximate")); + EXPECT_EQ("", + CI.mapSymbol("std::experimental::filesystem::weakly_canonical")); +} + TEST(CanonicalIncludesTest, PathMapping) { auto InMemFS = llvm::makeIntrusiveRefCnt<llvm::vfs::InMemoryFileSystem>(); FileManager Files(FileSystemOptions(), InMemFS);
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits