@@ -199,11 +199,13 @@ class directory_entry {
199199 _Empty,
200200 _IterSymlink,
201201 _IterNonSymlink,
202- _IterCachedSymlink,
203- _IterCachedNonSymlink,
204202 _RefreshSymlink,
205203 _RefreshSymlinkUnresolved,
206- _RefreshNonSymlink
204+ _RefreshNonSymlink,
205+ # if _LIBCPP_AVAILABILITY_HAS_FILESYSTEM_FULLY_POPULATED_CACHED_ENTRY
206+ _IterCachedSymlink,
207+ _IterCachedNonSymlink
208+ # endif // _LIBCPP_AVAILABILITY_HAS_FILESYSTEM_FULLY_POPULATED_CACHED_ENTRY
207209 };
208210
209211 struct __cached_data {
@@ -242,6 +244,7 @@ class directory_entry {
242244 return __data;
243245 }
244246
247+ # if _LIBCPP_AVAILABILITY_HAS_FILESYSTEM_FULLY_POPULATED_CACHED_ENTRY
245248 _LIBCPP_HIDE_FROM_ABI static __cached_data
246249 __create_iter_cached_result (file_type __ft, uintmax_t __size, perms __perm, file_time_type __write_time) {
247250 __cached_data __data;
@@ -264,6 +267,7 @@ class directory_entry {
264267 }();
265268 return __data;
266269 }
270+ # endif // _LIBCPP_AVAILABILITY_HAS_FILESYSTEM_FULLY_POPULATED_CACHED_ENTRY
267271
268272 _LIBCPP_HIDE_FROM_ABI void __assign_iter_entry (_Path&& __p, __cached_data __dt) {
269273 __p_ = std::move (__p);
@@ -306,34 +310,42 @@ class directory_entry {
306310 case _Empty:
307311 return __symlink_status (__p_, __ec).type ();
308312 case _IterSymlink:
313+ # if _LIBCPP_AVAILABILITY_HAS_FILESYSTEM_FULLY_POPULATED_CACHED_ENTRY
309314 case _IterCachedSymlink:
315+ # endif // _LIBCPP_AVAILABILITY_HAS_FILESYSTEM_FULLY_POPULATED_CACHED_ENTRY
310316 case _RefreshSymlink:
311317 case _RefreshSymlinkUnresolved:
312318 if (__ec)
313319 __ec->clear ();
314320 return file_type::symlink;
315- case _IterNonSymlink:
321+ # if _LIBCPP_AVAILABILITY_HAS_FILESYSTEM_FULLY_POPULATED_CACHED_ENTRY
316322 case _IterCachedNonSymlink:
317- case _RefreshNonSymlink:
323+ # endif // _LIBCPP_AVAILABILITY_HAS_FILESYSTEM_FULLY_POPULATED_CACHED_ENTRY
324+ case _IterNonSymlink:
325+ case _RefreshNonSymlink: {
318326 file_status __st (__data_.__type_ );
319327 if (__ec && !filesystem::exists (__st))
320328 *__ec = make_error_code (errc::no_such_file_or_directory);
321329 else if (__ec)
322330 __ec->clear ();
323331 return __data_.__type_ ;
324332 }
333+ }
325334 __libcpp_unreachable ();
326335 }
327336
328337 _LIBCPP_HIDE_FROM_ABI file_type __get_ft (error_code* __ec = nullptr ) const {
329338 switch (__data_.__cache_type_ ) {
330339 case _Empty:
331340 case _IterSymlink:
332- case _IterCachedSymlink:
333341 case _RefreshSymlinkUnresolved:
334342 return __status (__p_, __ec).type ();
335- case _IterNonSymlink:
343+ # if _LIBCPP_AVAILABILITY_HAS_FILESYSTEM_FULLY_POPULATED_CACHED_ENTRY
344+ case _IterCachedSymlink:
345+ return __status (__p_, __ec).type ();
336346 case _IterCachedNonSymlink:
347+ # endif // _LIBCPP_AVAILABILITY_HAS_FILESYSTEM_FULLY_POPULATED_CACHED_ENTRY
348+ case _IterNonSymlink:
337349 case _RefreshNonSymlink:
338350 case _RefreshSymlink: {
339351 file_status __st (__data_.__type_ );
@@ -352,13 +364,17 @@ class directory_entry {
352364 case _Empty:
353365 case _IterNonSymlink:
354366 case _IterSymlink:
355- case _IterCachedSymlink:
356367 case _RefreshSymlinkUnresolved:
357368 return __status (__p_, __ec);
358- case _IterCachedNonSymlink:
359369 case _RefreshNonSymlink:
360370 case _RefreshSymlink:
361371 return file_status (__get_ft (__ec), __data_.__non_sym_perms_ );
372+ # if _LIBCPP_AVAILABILITY_HAS_FILESYSTEM_FULLY_POPULATED_CACHED_ENTRY
373+ case _IterCachedSymlink:
374+ return __status (__p_, __ec);
375+ case _IterCachedNonSymlink:
376+ return file_status (__get_ft (__ec), __data_.__non_sym_perms_ );
377+ # endif // _LIBCPP_AVAILABILITY_HAS_FILESYSTEM_FULLY_POPULATED_CACHED_ENTRY
362378 }
363379 __libcpp_unreachable ();
364380 }
@@ -369,13 +385,17 @@ class directory_entry {
369385 case _IterNonSymlink:
370386 case _IterSymlink:
371387 return __symlink_status (__p_, __ec);
372- case _IterCachedNonSymlink:
373388 case _RefreshNonSymlink:
374389 return file_status (__get_sym_ft (__ec), __data_.__non_sym_perms_ );
375- case _IterCachedSymlink:
376390 case _RefreshSymlink:
377391 case _RefreshSymlinkUnresolved:
378392 return file_status (__get_sym_ft (__ec), __data_.__sym_perms_ );
393+ # if _LIBCPP_AVAILABILITY_HAS_FILESYSTEM_FULLY_POPULATED_CACHED_ENTRY
394+ case _IterCachedNonSymlink:
395+ return file_status (__get_sym_ft (__ec), __data_.__non_sym_perms_ );
396+ case _IterCachedSymlink:
397+ return file_status (__get_sym_ft (__ec), __data_.__sym_perms_ );
398+ # endif // _LIBCPP_AVAILABILITY_HAS_FILESYSTEM_FULLY_POPULATED_CACHED_ENTRY
379399 }
380400 __libcpp_unreachable ();
381401 }
@@ -385,10 +405,13 @@ class directory_entry {
385405 case _Empty:
386406 case _IterNonSymlink:
387407 case _IterSymlink:
388- case _IterCachedSymlink:
389408 case _RefreshSymlinkUnresolved:
390409 return filesystem::__file_size (__p_, __ec);
410+ # if _LIBCPP_AVAILABILITY_HAS_FILESYSTEM_FULLY_POPULATED_CACHED_ENTRY
411+ case _IterCachedSymlink:
412+ return filesystem::__file_size (__p_, __ec);
391413 case _IterCachedNonSymlink:
414+ # endif // _LIBCPP_AVAILABILITY_HAS_FILESYSTEM_FULLY_POPULATED_CACHED_ENTRY
392415 case _RefreshSymlink:
393416 case _RefreshNonSymlink: {
394417 error_code __m_ec;
@@ -409,8 +432,10 @@ class directory_entry {
409432 case _Empty:
410433 case _IterNonSymlink:
411434 case _IterSymlink:
435+ # if _LIBCPP_AVAILABILITY_HAS_FILESYSTEM_FULLY_POPULATED_CACHED_ENTRY
412436 case _IterCachedNonSymlink:
413437 case _IterCachedSymlink:
438+ # endif // _LIBCPP_AVAILABILITY_HAS_FILESYSTEM_FULLY_POPULATED_CACHED_ENTRY
414439 case _RefreshSymlinkUnresolved:
415440 return filesystem::__hard_link_count (__p_, __ec);
416441 case _RefreshSymlink:
@@ -429,10 +454,13 @@ class directory_entry {
429454 case _Empty:
430455 case _IterNonSymlink:
431456 case _IterSymlink:
432- case _IterCachedSymlink:
433457 case _RefreshSymlinkUnresolved:
434458 return filesystem::__last_write_time (__p_, __ec);
459+ # if _LIBCPP_AVAILABILITY_HAS_FILESYSTEM_FULLY_POPULATED_CACHED_ENTRY
460+ case _IterCachedSymlink:
461+ return filesystem::__last_write_time (__p_, __ec);
435462 case _IterCachedNonSymlink:
463+ # endif // _LIBCPP_AVAILABILITY_HAS_FILESYSTEM_FULLY_POPULATED_CACHED_ENTRY
436464 case _RefreshSymlink:
437465 case _RefreshNonSymlink: {
438466 error_code __m_ec;
0 commit comments