[PATCH] D89834: FileManager: Improve the FileEntryRef API and customize Optional<FileEntryRef>

Duncan P. N. Exon Smith via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Oct 28 11:18:23 PDT 2020


dexonsmith added a comment.

In D89834#2357910 <https://reviews.llvm.org/D89834#2357910>, @dexonsmith wrote:

> Dropped `MaybeFileEntryRef`, instead customizing `Optional<FileEntryRef>`.

As @arphaman pointed out offline, we can actually `OptionalStorage` instead, by adding add a private constructor to `FileEntryRef` that `nullptr`-initializes and only `OptionalStorage` calls.

The reason I think customizing `Optional` is better is the ability to add `operator const FileEntry *`. This avoids having to update large swaths of code like this in an incremental patch:

  // old code
  lvalue = rvalue;
  // new code
  auto F = rvalue;
  lvalue = F ? &F->getFileEntry() : nullptr;

just to revert it back in a later incremental patch once `FileEntryRef` has made it further.

This was one the primary reasons I originally added `MaybeFileEntryRef`.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D89834/new/

https://reviews.llvm.org/D89834



More information about the llvm-commits mailing list