Skip to content

Commit 17aa146

Browse files
committed
[libc++][filesystem] Applied [[nodiscard]]
`[[nodiscard]]` should be applied to functions where discarding the return value is most likely a correctness issue. - https://libcxx.llvm.org/CodingGuidelines.html
1 parent 979462c commit 17aa146

File tree

15 files changed

+681
-190
lines changed

15 files changed

+681
-190
lines changed

libcxx/include/__filesystem/copy_options.h

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,31 +34,31 @@ enum class copy_options : unsigned short {
3434
__in_recursive_copy = 512,
3535
};
3636

37-
_LIBCPP_HIDE_FROM_ABI inline constexpr copy_options operator&(copy_options __lhs, copy_options __rhs) {
37+
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI inline constexpr copy_options operator&(copy_options __lhs, copy_options __rhs) {
3838
return static_cast<copy_options>(static_cast<unsigned short>(__lhs) & static_cast<unsigned short>(__rhs));
3939
}
4040

41-
_LIBCPP_HIDE_FROM_ABI inline constexpr copy_options operator|(copy_options __lhs, copy_options __rhs) {
41+
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI inline constexpr copy_options operator|(copy_options __lhs, copy_options __rhs) {
4242
return static_cast<copy_options>(static_cast<unsigned short>(__lhs) | static_cast<unsigned short>(__rhs));
4343
}
4444

45-
_LIBCPP_HIDE_FROM_ABI inline constexpr copy_options operator^(copy_options __lhs, copy_options __rhs) {
45+
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI inline constexpr copy_options operator^(copy_options __lhs, copy_options __rhs) {
4646
return static_cast<copy_options>(static_cast<unsigned short>(__lhs) ^ static_cast<unsigned short>(__rhs));
4747
}
4848

49-
_LIBCPP_HIDE_FROM_ABI inline constexpr copy_options operator~(copy_options __lhs) {
49+
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI inline constexpr copy_options operator~(copy_options __lhs) {
5050
return static_cast<copy_options>(~static_cast<unsigned short>(__lhs));
5151
}
5252

53-
_LIBCPP_HIDE_FROM_ABI inline copy_options& operator&=(copy_options& __lhs, copy_options __rhs) {
53+
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI inline copy_options& operator&=(copy_options& __lhs, copy_options __rhs) {
5454
return __lhs = __lhs & __rhs;
5555
}
5656

57-
_LIBCPP_HIDE_FROM_ABI inline copy_options& operator|=(copy_options& __lhs, copy_options __rhs) {
57+
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI inline copy_options& operator|=(copy_options& __lhs, copy_options __rhs) {
5858
return __lhs = __lhs | __rhs;
5959
}
6060

61-
_LIBCPP_HIDE_FROM_ABI inline copy_options& operator^=(copy_options& __lhs, copy_options __rhs) {
61+
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI inline copy_options& operator^=(copy_options& __lhs, copy_options __rhs) {
6262
return __lhs = __lhs ^ __rhs;
6363
}
6464

libcxx/include/__filesystem/directory_entry.h

Lines changed: 37 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -87,80 +87,88 @@ class directory_entry {
8787

8888
_LIBCPP_HIDE_FROM_ABI void refresh(error_code& __ec) noexcept { __refresh(&__ec); }
8989

90-
_LIBCPP_HIDE_FROM_ABI _Path const& path() const noexcept { return __p_; }
90+
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI _Path const& path() const noexcept { return __p_; }
9191

9292
_LIBCPP_HIDE_FROM_ABI operator const _Path&() const noexcept { return __p_; }
9393

94-
_LIBCPP_HIDE_FROM_ABI bool exists() const { return filesystem::exists(file_status{__get_ft()}); }
94+
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool exists() const { return filesystem::exists(file_status{__get_ft()}); }
9595

96-
_LIBCPP_HIDE_FROM_ABI bool exists(error_code& __ec) const noexcept {
96+
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool exists(error_code& __ec) const noexcept {
9797
return filesystem::exists(file_status{__get_ft(&__ec)});
9898
}
9999

100-
_LIBCPP_HIDE_FROM_ABI bool is_block_file() const { return __get_ft() == file_type::block; }
100+
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool is_block_file() const { return __get_ft() == file_type::block; }
101101

102-
_LIBCPP_HIDE_FROM_ABI bool is_block_file(error_code& __ec) const noexcept {
102+
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool is_block_file(error_code& __ec) const noexcept {
103103
return __get_ft(&__ec) == file_type::block;
104104
}
105105

106-
_LIBCPP_HIDE_FROM_ABI bool is_character_file() const { return __get_ft() == file_type::character; }
106+
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool is_character_file() const { return __get_ft() == file_type::character; }
107107

108-
_LIBCPP_HIDE_FROM_ABI bool is_character_file(error_code& __ec) const noexcept {
108+
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool is_character_file(error_code& __ec) const noexcept {
109109
return __get_ft(&__ec) == file_type::character;
110110
}
111111

112-
_LIBCPP_HIDE_FROM_ABI bool is_directory() const { return __get_ft() == file_type::directory; }
112+
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool is_directory() const { return __get_ft() == file_type::directory; }
113113

114-
_LIBCPP_HIDE_FROM_ABI bool is_directory(error_code& __ec) const noexcept {
114+
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool is_directory(error_code& __ec) const noexcept {
115115
return __get_ft(&__ec) == file_type::directory;
116116
}
117117

118-
_LIBCPP_HIDE_FROM_ABI bool is_fifo() const { return __get_ft() == file_type::fifo; }
118+
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool is_fifo() const { return __get_ft() == file_type::fifo; }
119119

120-
_LIBCPP_HIDE_FROM_ABI bool is_fifo(error_code& __ec) const noexcept { return __get_ft(&__ec) == file_type::fifo; }
120+
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool is_fifo(error_code& __ec) const noexcept {
121+
return __get_ft(&__ec) == file_type::fifo;
122+
}
121123

122-
_LIBCPP_HIDE_FROM_ABI bool is_other() const { return filesystem::is_other(file_status{__get_ft()}); }
124+
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool is_other() const { return filesystem::is_other(file_status{__get_ft()}); }
123125

124-
_LIBCPP_HIDE_FROM_ABI bool is_other(error_code& __ec) const noexcept {
126+
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool is_other(error_code& __ec) const noexcept {
125127
return filesystem::is_other(file_status{__get_ft(&__ec)});
126128
}
127129

128-
_LIBCPP_HIDE_FROM_ABI bool is_regular_file() const { return __get_ft() == file_type::regular; }
130+
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool is_regular_file() const { return __get_ft() == file_type::regular; }
129131

130-
_LIBCPP_HIDE_FROM_ABI bool is_regular_file(error_code& __ec) const noexcept {
132+
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool is_regular_file(error_code& __ec) const noexcept {
131133
return __get_ft(&__ec) == file_type::regular;
132134
}
133135

134-
_LIBCPP_HIDE_FROM_ABI bool is_socket() const { return __get_ft() == file_type::socket; }
136+
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool is_socket() const { return __get_ft() == file_type::socket; }
135137

136-
_LIBCPP_HIDE_FROM_ABI bool is_socket(error_code& __ec) const noexcept { return __get_ft(&__ec) == file_type::socket; }
138+
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool is_socket(error_code& __ec) const noexcept {
139+
return __get_ft(&__ec) == file_type::socket;
140+
}
137141

138-
_LIBCPP_HIDE_FROM_ABI bool is_symlink() const { return __get_sym_ft() == file_type::symlink; }
142+
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool is_symlink() const { return __get_sym_ft() == file_type::symlink; }
139143

140-
_LIBCPP_HIDE_FROM_ABI bool is_symlink(error_code& __ec) const noexcept {
144+
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI bool is_symlink(error_code& __ec) const noexcept {
141145
return __get_sym_ft(&__ec) == file_type::symlink;
142146
}
143-
_LIBCPP_HIDE_FROM_ABI uintmax_t file_size() const { return __get_size(); }
147+
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI uintmax_t file_size() const { return __get_size(); }
144148

145-
_LIBCPP_HIDE_FROM_ABI uintmax_t file_size(error_code& __ec) const noexcept { return __get_size(&__ec); }
149+
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI uintmax_t file_size(error_code& __ec) const noexcept { return __get_size(&__ec); }
146150

147-
_LIBCPP_HIDE_FROM_ABI uintmax_t hard_link_count() const { return __get_nlink(); }
151+
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI uintmax_t hard_link_count() const { return __get_nlink(); }
148152

149-
_LIBCPP_HIDE_FROM_ABI uintmax_t hard_link_count(error_code& __ec) const noexcept { return __get_nlink(&__ec); }
153+
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI uintmax_t hard_link_count(error_code& __ec) const noexcept {
154+
return __get_nlink(&__ec);
155+
}
150156

151-
_LIBCPP_HIDE_FROM_ABI file_time_type last_write_time() const { return __get_write_time(); }
157+
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI file_time_type last_write_time() const { return __get_write_time(); }
152158

153-
_LIBCPP_HIDE_FROM_ABI file_time_type last_write_time(error_code& __ec) const noexcept {
159+
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI file_time_type last_write_time(error_code& __ec) const noexcept {
154160
return __get_write_time(&__ec);
155161
}
156162

157-
_LIBCPP_HIDE_FROM_ABI file_status status() const { return __get_status(); }
163+
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI file_status status() const { return __get_status(); }
158164

159-
_LIBCPP_HIDE_FROM_ABI file_status status(error_code& __ec) const noexcept { return __get_status(&__ec); }
165+
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI file_status status(error_code& __ec) const noexcept {
166+
return __get_status(&__ec);
167+
}
160168

161-
_LIBCPP_HIDE_FROM_ABI file_status symlink_status() const { return __get_symlink_status(); }
169+
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI file_status symlink_status() const { return __get_symlink_status(); }
162170

163-
_LIBCPP_HIDE_FROM_ABI file_status symlink_status(error_code& __ec) const noexcept {
171+
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI file_status symlink_status(error_code& __ec) const noexcept {
164172
return __get_symlink_status(&__ec);
165173
}
166174

libcxx/include/__filesystem/directory_iterator.h

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ class directory_iterator {
7171

7272
_LIBCPP_HIDE_FROM_ABI ~directory_iterator() = default;
7373

74-
_LIBCPP_HIDE_FROM_ABI const directory_entry& operator*() const {
74+
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI const directory_entry& operator*() const {
7575
// Note: this check duplicates a check in `__dereference()`.
7676
_LIBCPP_ASSERT_NON_NULL(__imp_, "The end iterator cannot be dereferenced");
7777
return __dereference();
@@ -121,9 +121,13 @@ operator!=(const directory_iterator& __lhs, const directory_iterator& __rhs) noe
121121
}
122122

123123
// enable directory_iterator range-based for statements
124-
inline _LIBCPP_HIDE_FROM_ABI directory_iterator begin(directory_iterator __iter) noexcept { return __iter; }
124+
[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI directory_iterator begin(directory_iterator __iter) noexcept {
125+
return __iter;
126+
}
125127

126-
inline _LIBCPP_HIDE_FROM_ABI directory_iterator end(directory_iterator) noexcept { return directory_iterator(); }
128+
[[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI directory_iterator end(directory_iterator) noexcept {
129+
return directory_iterator();
130+
}
127131

128132
_LIBCPP_END_NAMESPACE_FILESYSTEM
129133

libcxx/include/__filesystem/directory_options.h

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,19 +22,22 @@ _LIBCPP_BEGIN_NAMESPACE_FILESYSTEM
2222

2323
enum class directory_options : unsigned char { none = 0, follow_directory_symlink = 1, skip_permission_denied = 2 };
2424

25-
_LIBCPP_HIDE_FROM_ABI inline constexpr directory_options operator&(directory_options __lhs, directory_options __rhs) {
25+
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI inline constexpr directory_options
26+
operator&(directory_options __lhs, directory_options __rhs) {
2627
return static_cast<directory_options>(static_cast<unsigned char>(__lhs) & static_cast<unsigned char>(__rhs));
2728
}
2829

29-
_LIBCPP_HIDE_FROM_ABI inline constexpr directory_options operator|(directory_options __lhs, directory_options __rhs) {
30+
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI inline constexpr directory_options
31+
operator|(directory_options __lhs, directory_options __rhs) {
3032
return static_cast<directory_options>(static_cast<unsigned char>(__lhs) | static_cast<unsigned char>(__rhs));
3133
}
3234

33-
_LIBCPP_HIDE_FROM_ABI inline constexpr directory_options operator^(directory_options __lhs, directory_options __rhs) {
35+
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI inline constexpr directory_options
36+
operator^(directory_options __lhs, directory_options __rhs) {
3437
return static_cast<directory_options>(static_cast<unsigned char>(__lhs) ^ static_cast<unsigned char>(__rhs));
3538
}
3639

37-
_LIBCPP_HIDE_FROM_ABI inline constexpr directory_options operator~(directory_options __lhs) {
40+
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI inline constexpr directory_options operator~(directory_options __lhs) {
3841
return static_cast<directory_options>(~static_cast<unsigned char>(__lhs));
3942
}
4043

libcxx/include/__filesystem/file_status.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,9 @@ class file_status {
3838
_LIBCPP_HIDE_FROM_ABI file_status& operator=(file_status&&) noexcept = default;
3939

4040
// observers
41-
_LIBCPP_HIDE_FROM_ABI file_type type() const noexcept { return __ft_; }
41+
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI file_type type() const noexcept { return __ft_; }
4242

43-
_LIBCPP_HIDE_FROM_ABI perms permissions() const noexcept { return __prms_; }
43+
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI perms permissions() const noexcept { return __prms_; }
4444

4545
// modifiers
4646
_LIBCPP_HIDE_FROM_ABI void type(file_type __ft) noexcept { __ft_ = __ft; }

libcxx/include/__filesystem/filesystem_error.h

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,15 +44,16 @@ class _LIBCPP_EXPORTED_FROM_ABI filesystem_error : public system_error {
4444
__create_what(2);
4545
}
4646

47-
_LIBCPP_HIDE_FROM_ABI const path& path1() const noexcept { return __storage_->__p1_; }
47+
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI const path& path1() const noexcept { return __storage_->__p1_; }
4848

49-
_LIBCPP_HIDE_FROM_ABI const path& path2() const noexcept { return __storage_->__p2_; }
49+
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI const path& path2() const noexcept { return __storage_->__p2_; }
5050

51-
_LIBCPP_HIDE_FROM_ABI filesystem_error(const filesystem_error&) = default;
51+
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI filesystem_error(const filesystem_error&) = default;
5252
~filesystem_error() override; // key function
5353

54-
_LIBCPP_HIDE_FROM_ABI_VIRTUAL
55-
const char* what() const noexcept override { return __storage_->__what_.c_str(); }
54+
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI_VIRTUAL const char* what() const noexcept override {
55+
return __storage_->__what_.c_str();
56+
}
5657

5758
void __create_what(int __num_paths);
5859

0 commit comments

Comments
 (0)